This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM33X WINCE7 am33x_display Exception 'Data Abort'

Hi sir ,

    I am using BSP_ AM33X Wince7 platform.

    here is my code for my panel

    struct lcd_panel panel_tfc_s9700 = {
 LCDC_PANEL_TFT | LCDC_INV_VSYNC | LCDC_INV_HSYNC |
 LCDC_HSVS_CONTROL, // config
 DISPC_PIXELFORMAT_RGB16, // bpp
 800,  // x_res
 600,  // y_res
 42000000, // pixel_clock
 38,   // hsw
 210,  // hfp
 46,   // hbp
 6,   // vsw
 12,   // vfb
 23,   // vbp
 0,   // acb (????) 
 0,                  // mono_8bit_mode
 0,                  // tft_alt_mode
 COLOR_ACTIVE,    //panel_shade
 LCDC_panel_TFC_S9700RTWV35TR_init // init
};

-------------------------------------------------------------------------------------------------------------------------------------------

My Register

;===============================================================================
; 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

 

-------------------------------------------------------------------------------------------------------------------------------------------

boot up information

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

It is stopping here, i hope i am missing something here which is not allowing it to boot up ,please help me out.....

 

------------------------------------------------------------------------------------------------------------------------------------

I find the wrong point  from the map file :

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

 

 

 

  • Hi,

    Have you modified any registry or source code?

    If so revert to the original one and try?

    Have you added the below registry key newly[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\SystemIdle\{EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}]
        "Default"=dword:2           ; D2

    Can you exclude this and test once?

    Regards,

    GSR

  • Hi, 1258021

    I use the original one but it  appears the same fault.

    Meanwhile I have added the registry key [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\SystemIdle\{EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}]
        "Default"=dword:2           ; D2

    Is there anyting I am missing?

    Thanks

    hainan

  • Hi,

    By tracing the source code:

    1. I found it stopped in the function OMAPDDGPE::OMAPDDGPE()  of Omap_ddgpe.cpp source file

       if( m_pDisplayContr->InitLCD() == FALSE ) it failed here, 

    2.Then in the Lcdcai.cpp file I found it stopped in the function  "OMAPDisplayController::InitLCD()"

        lcdc_set_update_mode(&m_lcdc, FB_AUTO_UPDATE); 

    3.Lcdc.c  : int lcdc_set_update_mode(struct lcdc* lcdc,enum fb_update_mode mode)

      lcdc_load_palette(lcdc);  it stopped here

      I found that fb_update_mode mode has two ways with FB_AUTO_UPDATE and FB_UPDATE_DISABLED,the first mentioned of two needs to configure the palette 

    4.Lcdc.c :static void lcdc_load_palette(struct lcdc* lcdc)

      palette = (UINT16 *)lcdc->palette_virt;

     *(UINT16 *)palette &= 0x0fff;

      palette_virt has not been allocated,  It is wrong here.

     

     So I choose the FB_UPDATE_DISABLED mode in the function of  lcdc_set_update_mode(&m_lcdc, FB_UPDATE_DISABLED); The board can  bootup; The LCD can be used.

    I want to know what is FB_AUTO_UPDATE and how can I use it.

    Thanks

    hainan zhu