根据上述所采用的BOOTROM的不同,VxWorks的启动过程会有所不同,下面主要介绍一下使用可加
载VxWorks映像的启动过程。此时,从目标板上电复位到启动用户定义的任务的整个流程如下:
bootrom 和VxWorks image 生成在都需要编译BSP文件,他们区别在于bootrom是调用上图前两部分;而vxworks image 是实现图最后部分(即调用sysInit, userInit, usrroot函数)
Boot中几个关键宏定义:
#define LOCAL_MEM_LOCAL_ADRS 0x00000000
#define ROM_TEXT_ADRS 0x100 ROM Boot程序执行起始地址( romStart( ) )
#define ROM_OFFSET(adr) (((UINT)adr - (UINT)romInit) + ROM_TEXT_ADRS)
#define BOOT_LINE_OFFSET 0x1200
#define BOOT_LINE_ADRS ((char *) (LOCAL_MEM_LOCAL_ADRS+BOOT_LINE_OFFSET))
ldFileFromMch时,从该起始地址读取加载要用到的tBootParams
#define RAM_LOW_ADRS 0x10000 boot Rom将控制权交给VxWorks的起始进入点( usrInit( ) ). boot启动之后,将系统映像从Flash上copy或解压到RAM_LOW_ADRS地址处,并跳转到该地址执行
#define VERSION_START_ADRS 0x10000 版本加载完后的执行入口地址.
# define FREE_RAM_ADRS (end) start right after bss of VxWorks
# define FREE_MEM_START_ADRS (FREE_RAM_ADRS + WDB_POOL_SIZE)
bootRom中的pMemPoolStart