VxWorks 引导程序启动详细过程(bootrom_uncmp
bin) 系统上电 ===== | romInit
s -> romInit() : | | | |bootInit
c ->romStart(int startType) : | | | | |bootConfig
c ->usrInit(int startType): | | | | | | | | | | | | | | 初始化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 ();(sysHwInit0())无 1. 初始化Cache; cacheLibInit() 2. 清零 BBS; bzero (edata, end - edata); 3. 暗黄安装中断向量; excVecInit ( ); 4. 置硬件静止状态; sysHwInit (); 5. 配置Wind 内核,初始化任务管理和任务队列 | | | sysLib
c -> sys