2017年7月24日 星期一

WinCE Eboot Boot-up Sequence


  1. F:\WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP\startup.s
    StartUp[Start] -> PreInit -> Put CPU in SVC mode and disable IRQ, FIQ ->
    Disable MMU, caches, write-buffer and flush -> RCSR_HARD_RESET(2.) ->
    RCSR_GPIO_RESET(3.) -> Continue_StartUp(4.)
       
  2. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\startup.s
    OALStartUp -> Init_HexLEDs -> Copy the bootloader image from flash to RAM ->
    jump to the RAM image -> Enable the MMU -> Jump to main.c(5.)
       
  3. F:\WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP\startup.s
    RCSR_GPIO_RESET -> xlli_mem_init -> Continue_StartUp(4.)
       
  4. F:\WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP\startup.s
    Continue_StartUp -> xlli_intr_init(15.) -> EnableClks -> xlli_mem_Tmax(15.) ->
    xlli_mem_restart(15.) -> OALXScaleSetFrequencies(16.)->
    xlli_mem_Topt(15.) -> xlli_mem_restart(15.) -> xlli_ost_init(15.) ->
    xlli_pwrmgr_init(15.) -> xlli_IMpwr_init(15.) -> OALStartUp(2.)
       
  5. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\main.c
    main -> BootloaderMain(6.)
       
  6. F:\WINCE500\PLATFORM\COMMON\SRC\COMMON\BOOT\BLCOMMON\blcommon.c
    BootloaderMain -> KernelRelocate -> OEMDebugInit(7.) -> OEMPlatformInit(9.) ->
    OEMPreDownload(10.) -> BL_DOWNLOAD(11.) -> BL_JUMP(14.)
       
  7. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\main.c
    OEMDebugInit -> FlashInit -> InitDebugSerial(8.)
       
  8. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\COMMON\DBGSERIAL\dbgserial.c
    InitDebugSerial -> Return
       
  9. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\main.c
    OEMPlatformInit -> Create menu -> InitSpecifiedEthDevice(Download image) -> Return
       
  10. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\main.c
    OEMPreDownload -> Return
       
  11. F:\WINCE500\PLATFORM\COMMON\SRC\COMMON\BOOT\BLCOMMON\blcommon.c
    DownloadImage(BL_DOWNLOAD) -> OEMReadData(12.)
       
  12. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\utils.c
    OEMReadData -> EbootEtherReadData(13.)
       
  13. F:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\EBOOT\ebsimp.c
    EbootEtherReadData -> OEMLaunch(14.)
       
  14. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\BOOTLOADER\EBOOT\main.c
    OEMLaunch[End]
       
  15. F:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\INTEL\PXA27X\XLLP\SOURCE\
    xlli_lowlev_init.s
    xlli_intr_init; xlli_mem_Tmax; xlli_mem_restart; xlli_mem_Topt; xlli_mem_restart;
    xlli_ost_init; xlli_pwrmgr_init; xlli_IMpwr_init; xlli_GPIO_init
       
  16. F:\WINCE500\PLATFORM\MAINSTONEII\SRC\COMMON\FREQ\freq.s
    OALXScaleSetFrequencies -> xlli_GPIO_init -> xlli_GPIO_init(15.)