- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)