TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335x Wince7 显示驱动发生 ‘Data Abort‘ 无法正常启动

你好:

   我的BSP是Wince7 AM33x_BSP, 编译烧写完成之后启动在 am33x_display 发生 ‘Data Abort’。

1. 我的启动信息如下:

Load NK image from flash memory
IsValidMBR: MBR sector = 0x480 (valid MBR)
OpenPartition: Partition Exists=0x1 for part 0x20.
BP_SetDataPointer at 0x0

ROMHDR (pTOC = 0x83c98fa0) ———————
DLL First : 0x4001eefa
DLL Last : 0x436df000
Physical First : 0x80002000
Physical Last : 0x83c9cf50
Num Modules : 373
RAM Start : 0x83ca0000
RAM Free : 0x83cb5000
RAM End : 0x8a800000
Num Copy Entries : 2
Copy Entries Offset : 0x8123af44
Prof Symbol Length : 0x00000000
Prof Symbol Offset : 0x00000000
Num Files : 153
Kernel Flags : 0x00000000
FileSys RAM Percent : 0x0a0a0a0a
Driver Glob Start : 0x00000000
Driver Glob Length : 0x00000000
CPU : 0x01c2
MiscFlags : 0x0002
Extensions : 0x80003020
Tracking Mem Start : 0x00000000
Tracking Mem Length : 0x00000000
————————————————

NK Image Loaded
Launch Windows CE image by jumping to 0x80002000…

Windows CE Kernel for ARM (Thumb Enabled)
CPU CP15 Control Register = 0xc5387f
CPU CP15 Auxiliary Control Register = 0x42
Board Name: EZ335X
Board Ver : 1.0A
+OALTimerInit(1, 24000, 200)
— High Performance Frequecy is 24 MHz—
PID:00400002 TID:00410002 SetOpp to 3 
PID:00400002 TID:01320006 ECC TYPE is BCH 8 bit with ELM
PID:00400002 TID:01320006 8Bit NAND device
PID:00400002 TID:01320006 CM3: input file [\windows\firmware.bin] is 9932 bytes long
PID:00400002 TID:01320006 CM3: firmware file read ok!
PID:00400002 TID:01320006 Cpsw3g_InitializeAdapter: mode=1, port=1, txCh=0, rxChMask=0x01, ActiveCpgmac=1
PID:00400002 TID:01320006 SDHC: CPU revision 0xffffffff
PID:00400002 TID:01320006 SDHC host controller initialize: m_fastPathSDIO:1 m_fastPathSDMEM:0
PID:00400002 TID:01320006 CAM3xxOTG::Init DEVCTL 80
PID:00400002 TID:01320006 CAM3xxOTG::Init DEVCTL 80
PID:00400002 TID:05980002 Exception 'Data Abort' (0x4): Thread-Id=05980002(pth=9e46b7d0), Proc-Id=00400002(pprc=83cae5e0) 'NK.EXE', VM-active=00400002(pprc=83cae5e0) 'NK.EXE'
PID:00400002 TID:05980002 PC=ef0ccf80(am33x_display.dll+0x0001cf80) RA=00000000(???+0x00000000) SP=aec0f434, BVA=00000000
PID:00400002 TID:05980002 Exception 'Data Abort' (0x4): Thread-Id=05980002(pth=9e46b7d0), Proc-Id=00400002(pprc=83cae5e0) 'NK.EXE', VM-active=00400002(pprc=83cae5e0) 'NK.EXE'
PID:00400002 TID:05980002 PC=efdd2aa0(gwes.dll+0x00062aa0) RA=00000090(???+0x00000090) SP=aec0fdc0, BVA=0000010c

2.我的display注册表如下:

;===============================================================================
; AM335x Display driver (LCDC)
; @CESYSGEN IF CE_MODULES_DISPLAY
; –> Entering C:\WINCE700\platform\AM33X_BSP\src\drivers\display\display.reg
; All rights reserved ADENEO EMBEDDED 2010
;===============================================================================
; @CESYSGEN IF CE_MODULES_DISPLAY

[HKEY_LOCAL_MACHINE\SYSTEM\GWE]
; "PORepaint"=dword:0 – the display driver handles everything
; "PORepaint"=dword:1 – gwe should save and restore the bits
; "PORepaint"=dword:2 – gwe should invalidate and repaint
; "PORepaint"=dword:3 – gwe and driver need to save video memory
;
"PORepaint"=dword:0

[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
"IRQ"=dword:24
"Display"="am33x_display"
; 0 for flat surface manager, 1 for VRFB surface manager
; Note only flat surface manager is supported
"SurfaceMgr" = dword:0

; sets initial screen rotation
; use 0 for 0 degree, 1 for 90 degree, 2 for 180 degree and 4 for 270 degree
; Note: Rotation should not be used with the flat frame buffer, memory/bus bandwidth may
; be exceeded by display scanning requirements causing display to flicker and/or lock up.
"Angle" = dword:0
"PowerFlags"=dword:00000103 ; send pre/post device state changes
"membase"=multi_sz:"48050000","48306B00"
"memlen"=multi_sz:"00000100","00000100"
; controls software based mouse cursor emulation, 0 = disable, 1 = enable
; Note that OS configuration must include mouse cursor support (sysgen_cursor).
; Note that display performance will be reduced when cursor support is enabled.
; Note that cursor support has not been tested with direct draw, overlays or rotation.
; @CESYSGEN IF GWES_MCURSOR
"Cursor"=dword:1
; @CESYSGEN ENDIF GWES_MCURSOR
; Set to 1 to enable wait for vertical blank support
"EnableWaitForVerticalBlank"=dword:1
"EnableNeonBlts"=dword:1
"EnableDMABlts"=dword:1
"EnableOverlay"=dword:0 
"HardwareRotation"=dword:0 
"DMAFill"=dword:0

; Revert logic in common.reg that turns display off during SystemIdle.
; PMCLASS_DISPLAY_GUID
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\SystemIdle\{EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}]
"Default"=dword:2 ; D2

; Not supported
;[HKEY_LOCAL_MACHINE\System\GDI\ROTATION]
; ; rotates screen – use 0 for 0 degree 5a for 90 degree, b4 for 180 degree and 10e for 270 degree
; "Angle"=dword:0

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\Preferences]
"RenderMethod"=dword:2

[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX\DirectShow\VMR]
"RenderingPrefs"=dword:8

; Bits per pixel setting for compositor backbuffers
[HKEY_LOCAL_MACHINE\SYSTEM\GWE\Compositor]
"OpaqueBufferBPP"=dword:10

; @CESYSGEN ENDIF CE_MODULES_DISPLAY
; <– Leaving C:\WINCE700\platform\AM33X_BSP\src\drivers\display\display.reg
; @CESYSGEN ENDIF CE_MODULES_DISPLAY

3.定位bug位置   RVA+base = 0x0001cf80 – 0x1000 = 0x1bf80

查看am33x_display.cod 文件

0001:0001ad28 ?PhysicalAddr@OMAPVrfbSurface@@UAAKW4OMAP_DSS_ROTATION@@HW4OMAP_ASSOC_SURF_USAGE@@@Z 1001bd28 f omap_ddgpe_lcdcai:surfmgr_vrfb.obj
0001:0001af84 ?PixelIncr@OMAPVrfbSurface@@UAAKW4OMAP_DSS_ROTATION@@H@Z 1001bf84 f omap_ddgpe_lcdcai:surfmgr_vrfb.obj

这里我有疑问 我注册表里的SurfaceMgr=0,应该使用OMAPFlatSurface这个类,为什么会调用OMAPVrfbSurface类里的函数?

另外是不是我的BSP配置选项有问题,组件问题导致了启动问题?

这个BUG的可能原因?

hainan

xyz549040622:

不懂,楼主发错版块了。。。

赞(0)
未经允许不得转载:TI中文支持网 » AM335x Wince7 显示驱动发生 ‘Data Abort‘ 无法正常启动
分享到: 更多 (0)