没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
VxWorks
VxWorks
VxWorks
VxWorks
引导程序启动详细过程 (bootrom_uncmp.bin)
(bootrom_uncmp.bin)
(bootrom_uncmp.bin)
(bootrom_uncmp.bin)
系统上电
=====
|
|
|
|
romInit.s
romInit.s
romInit.s
romInit.s
-> romInit()
romInit()
romInit()
romInit()
:
|
|
|
| bootInit.c
bootInit.c
bootInit.c
bootInit.c
-> romStart(int
romStart(int
romStart(int
romStart(int
startType)
startType)
startType)
startType)
:
:
:
:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|bootConfig.c
|bootConfig.c
|bootConfig.c
|bootConfig.c
->usrInit(int
->usrInit(int
->usrInit(int
->usrInit(int
startType):
startType):
startType):
startType):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sysLib.c
sysLib.c
sysLib.c
sysLib.c
->
->
->
->
sysHwInit
sysHwInit
sysHwInit
sysHwInit
() :
:
:
:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
usrKernel
usrKernel
usrKernel
usrKernel
.c
.c
.c
.c
->
->
->
->
usrKernelInit
usrKernelInit
usrKernelInit
usrKernelInit
(void)
(void)
(void)
(void)
:
:
:
:
|
|
|
|
初始化 CPU ;配置处理器的工作模式;配置存储器;关闭中断和看门狗;清除 Cache
;
设置堆栈指针;特 定
于 CPU 的其他初始化;配置启动参数(冷启动还是热启动)跳到 romStart(int startType).
将 Flash 中的启动代码拷贝到 RAM 中,最后调用 ROM 或 RAM 中的 usrInit
() ;拷贝的内容与
生成的内核类型有关,但通常都需将数据段拷贝到 RAM 中。如果是压缩格式映象,除了拷贝 还
要进行解压。最后调用 sysALibs.s 中的 sysInit ( int startType ) .
用于用于完成最后的 CPU 初始化部分, 并 且
关闭系统的其他硬件设备,为内核的初始化
和启动准备一个单任务的环境(无中断,无
任务) 。完成内核激活的准备工作: (
1 )设 备
处于静止状态; (
2 )处理器中断处于禁止状
态。引导阶段已经实现了( 2
) ,一次该函数
功能就是使设备处于静止状态。
0 .
用户定义 BSP 初始化
SYS_HW_INIT_0
SYS_HW_INIT_0
SYS_HW_INIT_0
SYS_HW_INIT_0
();
();
();
();
( sysHwInit0
sysHwInit0
sysHwInit0
sysHwInit0
()
()
()
()
)无
1 .
初始化 Cache ;
cacheLibInit
cacheLibInit
cacheLibInit
cacheLibInit
()
2 .
清零 BBS ;
bzero
bzero
bzero
bzero
(edata,
(edata,
(edata,
(edata,
end
end
end
end
-
-
-
-
edata);
edata);
edata);
edata);
3 .
暗黄安装中断向量;
excVecInit
excVecInit
excVecInit
excVecInit
(
(
(
(
);
);
);
);
4 .
置硬件静止状态;
sysHwInit
sysHwInit
sysHwInit
sysHwInit
();
();
();
();
5 .
配置 Wind 内核, 初始化任务管理和任 务
队列
usrKernelInit
usrKernelInit
usrKernelInit
usrKernelInit
();
();
();
();
6 .
使能 Cache ;
cacheEnable(INSTRUCTION_CACHE);
cacheEnable(INSTRUCTION_CACHE);
cacheEnable(INSTRUCTION_CACHE);
cacheEnable(INSTRUCTION_CACHE);
7 .
激活跟任务;
kernelInit ((FUNCPTR) usrRoot
usrRoot
usrRoot
usrRoot
,
,
,
,
, , , , ,
)
负责在内核激活前,将硬件置于静止状态:
1 .
安装中断向量 ISR :
S3C2410ExcVecSet();
S3C2410ExcVecSet();
S3C2410ExcVecSet();
S3C2410ExcVecSet();
2 .
安装 IRQ/SVC 的堆栈设置程序:
_func_armIntStackSplit
_func_armIntStackSplit
_func_armIntStackSplit
_func_armIntStackSplit
=
=
=
=
sysIntStackSplit;
sysIntStackSplit;
sysIntStackSplit;
sysIntStackSplit;
3 .
复制命令行:
strncpy(sysBootLine,DEFAUL T_BOOT_LIN,strl
strncpy(sysBootLine,DEFAUL T_BOOT_LIN,strl
strncpy(sysBootLine,DEFAUL T_BOOT_LIN,strl
strncpy(sysBootLine,DEFAUL T_BOOT_LIN,strl
en(DEFAULT_BOOT_LINE)+1);
en(DEFAULT_BOOT_LINE)+1);
en(DEFAULT_BOOT_LINE)+1);
en(DEFAULT_BOOT_LINE)+1);
4 .
初始化串口设备,数据结构和禁止串口中断
:
sysSerialHwInit
sysSerialHwInit
sysSerialHwInit
sysSerialHwInit
();
();
();
();
配置 Wind 内核,初始化任务管理和任务队列 :
1.
初始化类库:
classLibInit
classLibInit
classLibInit
classLibInit
();
();
();
();
2.
初始化任务变量:
taskLibInit
taskLibInit
taskLibInit
taskLibInit
();
();
();
();
3.
配置内核任务队列:
qInit
qInit
qInit
qInit
(&readyQHead,
(&readyQHead,
(&readyQHead,
(&readyQHead,
Q_PRI_LIST);
Q_PRI_LIST);
Q_PRI_LIST);
Q_PRI_LIST);
qInit
qInit
qInit
qInit
(&activeQHead,
(&activeQHead,
(&activeQHead,
(&activeQHead,
Q_FIFO);
Q_FIFO);
Q_FIFO);
Q_FIFO);
qInit
qInit
qInit
qInit
(&tickQHead,
(&tickQHead,
(&tickQHead,
(&tickQHead,
Q_PRI_LIST);
Q_PRI_LIST);
Q_PRI_LIST);
Q_PRI_LIST);
workQInit
workQInit
workQInit
workQInit
();
();
();
();
资源评论
- liu25007052014-05-06不错,对理解bsp的boot过程挺有帮助!
- charce_yy2014-08-16入门学习,很有帮助
- alainseu2015-06-18很好的资料,谢谢
feee106
- 粉丝: 0
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功