VxWorks引导程序启动详细过程(bootrom_uncmp.bin)2.docx

VxWorks引导程序启动详细过程(bootrom_uncmp.bin)2.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

VxWorks引导程序启动详细过程(bootrom_uncmp.bin)

系统上电

=====

初始化CPU;配置处理器的工作模式;配置存储器;关闭中断和看门狗;去除Cache

初始化CPU;配置处理器的工作模式;配置存储器;关闭中断和看门狗;去除Cache;设置堆栈指针;特定于CPU的其他初始化;配置启动参数〔冷启动还是热启动〕跳到romStart(intstartType).

|

|

|

将Flash中的启动代码拷贝到RAM

将Flash中的启动代码拷贝到RAM中,最后调用ROM或RAM中的usrInit〔〕;拷贝的内容与生成的内核类型有关,但通常都需将数据段拷贝到RAM中。如果是压缩格式映象,除了拷贝还要进展解压。最后调用sysALibs.s中的sysInit〔intstartType〕.

|

|

|

|

用于用于完成最后的CPU初始化局部,并且关闭系统的其他硬件设备,为内核的初始化和启动准备一个单任务的环境〔无中断,无任务〕。

用于用于完成最后的CPU初始化局部,并且关闭系统的其他硬件设备,为内核的初始化和启动准备一个单任务的环境〔无中断,无任务〕。完成内核激活的准备工作:〔1〕设备处于静止状态;〔2〕处理器中断处于制止状态。引导阶段已经实现了〔2〕,一次该函数功能就是使设备处于静止状态。

用户定义BSP初始化

SYS_HW_INIT_0();〔sysHwInit0()〕无

初始化Cache;

cacheLibInit〔〕

清零BBS;

bzero(edata,end-edata);

暗黄安装中断向量;

excVecInit();

置硬件静止状态;

sysHwInit();

配置Wind内核,初始化任务管理和任务队列

usrKernelInit();

使能Cache;

cacheEnable(INSTRUCTION_CACHE);

激活跟任务;

kernelInit((FUNCPTR)usrRoot,,,,,,)

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

负责在内核激活前,将硬件置于静止状态:安装中断向量ISR:

负责在内核激活前,将硬件置于静止状态:

安装中断向量ISR:

S3C2410ExcVecSet();

安装IRQ/SVC的堆栈设置程序:

_func_armIntStackSplit=sysIntStackSplit;

复制命令行:

strncpy(sysBootLine,DEFAULT_BOOT_LIN,strlen(DEFAULT_BOOT_LINE)+1);

初始化串口设备,数据构造和制止串口中断:

sysSerialHwInit();

|

|

|

|

|

|

|

|

|

|

|

|usrKernel.c-usrKernelInit(void)

配置Wind

配置Wind内核,初始化任务管理和任务队列:

初始化类库:

classLibInit();

初始化任务变量:

taskLibInit();

配置内核任务队列:

qInit(readyQHead,Q_PRI_LIST);

qInit(activeQHead,Q_FIFO);

qInit(tickQHead,Q_PRI_LIST);

workQInit();

|bootConfig.c-usrRoot(char*pMemPoolStart,unsignedmemPoolSize):

用于完成系统最后的初始化以及所有硬件的初始化:初始化系统内存池:

用于完成系统最后的初始化以及所有硬件的初始化:

初始化系统内存池:

memInit(pMemPoolStart,memPoolSize);

安装始终中断ISR,设置始终频率,使能时钟:

sysClkConnect((FUNCPTR)usrClock,0);/、connectclockinterruptroutine

sysClkRateSet(SYS_CLK_RATE); /*setsystemclockrate*/

sysClkEnable(); /*startit*/

初始化IOS:

selectInit(NUM_FILES);

iosInit(NUM_DRIVERS,NUM_FILES,/null);

consoleFd=NONE;

初始化串口设备,安装串口设备驱动程序,并启动串口设备:

/*

文档评论(0)

183****1225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档