本文主要给大家展示“Boot的Bootrom启动顺序是什么”。内容简单易懂,条理清晰。希望能帮你解开疑惑。让边肖带领你学习《什么是开机启动顺序》一文。
加载vxWorks的引导加载程序有很多种,最常见的是BSP编译的bootrom。
它在目标中的执行顺序如下
Usr ()-config/all/usr entry.c,RAM中的第一条指令,它唯一的功能就是调用usrInit()
usrnit()-config/all/usrconfig . c .主要工作包括:清除BSS,初始化Cache库,设置中断向量表基址,安装异常向量,调用sysHwInit(),启用Cache,调用usrKernelCorePreInit()初始化Class、object、信号量等。初始化wdb,调用usrKernelInit()
usrkernelinit()-comps/src/uskernellit . c,配置内核使用的数据结构,包括初始化内核的Task库,配置调度策略,初始化Tick队列,初始化wind工作队列,记录系统内存池的大小,调用kernelinit()进行初始化。
kernel init()-src/wind/kernellib . c、初始化启动内核,包括设置中断堆栈大小、设置内存池位置、初始化中断锁定级别、关闭时间片轮换策略、将系统Tick清零、初始化中断堆栈、初始化启动第一个任务tRootTask。
Root ()-config/all/usrconfig.c,是系统第一个任务的入口地址,主要负责初始化后内核,一步一步加载系统服务,也由大量初始化函数组成。
usrkernelcore einit()-src/config/usrkernelcore . c,一些初始化内核的机制,包括Event、信号量开放机制、消息队列和开放机制、看门狗、任务开放机制等。
MemInit()-src/os/mm/memLib.c,初始化系统内存池。
usrmmuinit()-comps/src/usrmmuinit . c,初始化MMU
usrkernelcreateinit()-src/config/usrkernelcore . c,初始化内核对象的创建机制,如任务、消息队列和看门狗。
clk connect()-src/drv/timer/xxxtimer . c,挂接系统时钟ISR并调用sysHwInit2()
SysHwInit2()-$(BSP)/sysLib.c,钩子中断,配置其他附加信息
IOsInit()-src/os/io/iosLib.c,初始化io系统
TyLibInit()-src/os/io/tyLib.c,初始化TTY库。
ttydriv()-src/OS/io/ttydriv . c,正在初始化tty驱动程序
创建一个tty设备
其他初始化机制,如任务级作业机制、消息日志库、管道驱动、标准IO库、ERF(Event Reporting Framework)库、设备管理、文件系统相关机制、pty(伪终端)驱动、存储设备加载、Boot Line解析等。
bootapshell init()-src/Boot/bootapshell . c,初始化Boot Shell
引导模式初始化,如文件系统、网络
Boot()bootap()-src/Boot/bootap . c,启动Boot Loader主任务bootap
Boottask ()-src/boot/bootApp.c,bootApp的入口地址。默认等待7秒。如果Boot Shell收到该命令,它将进行分析并执行。如果7秒倒计时结束,根据Boot Line将vxWorks镜像加载到RAM_LOW_ADRS,然后跳转到这个地址开始执行vxWorks。
以上就是《boot的Bootrom启动顺序是什么》一文的全部内容,感谢阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。想了解更多知识,请关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155162.html