QNX7.0启动流程分析

QNX系统启动分为7个阶段:PLL、IPL、Startup、Base System、Boot Script、SLM和Apps。PLL阶段是硬件时钟稳定;IPL阶段负责CPU、内存等初始化,加载启动程序;Startup阶段完成硬件配置并转移控制到内核;Base System阶段内核初始化MMU和中断处理;Boot Script阶段根据产品定制加载驱动和应用;SLM阶段启动非紧急服务和进程,等待进一步指令。

 

QNX系统启动经历过7个阶段:

PLL => IPL => Startup => BaseSystem(Kernel,Core OS) => Boot Script => SLM => Apps

PLL阶段:

硬件时钟稳定阶段,锁相环将外部晶振稳定到系统内部的所有频率(Sysclk,timer等),消耗时间大概在32ms左右;属于纯硬件动作;

IPL阶段:

基本操作包括:CPU、内存、外部存储等控制器的初始化,将启动程序从映像文件系统IFS(包括启动程序、内核、启动脚本、驱动程序、应用程序等)拷贝到内存,并跳转到内存继续执行;IPL阶段执行的程序,类似于UBoot,UEFI(XBL,ABL)等启动引导程序。

Startup阶段:

可引导OS映像中的第一个程序是一个启动程序,其目的是完成所有硬件初始化配置,如定时器 、时钟频率、中断控制器、缓存控制器等,但不包括配置串口波特率之类的东西。它也不会初始化标准周边设备,例如以太网控制器或EIDE硬件disk控制器——这些都留给驱动稍后启动以后来完成,然后将控制加载并转移到内核(procnto或procnto-smp)。

Base system阶段:

内核初始化内存管理单元(MMU),创建结构来处理分页、进程和异常,以及启用中断。 一旦这个阶段完成,内核就完全可操作了,可以开始从引导脚本加载和运行用户进程。

Boot Script阶段:

每个硬件产品有不同的脚本集,以支持不同的配置。 构建文件中的脚本块允许您指定启动哪些驱动程序和应用程序,以及以什么顺序启动。下面是可能会在引导脚本中加载的程序:

1、屏幕和摄像服务

2、音频服务和早期编钟工具

3、磁盘驱动器(然后挂载磁盘)

4、调试实用程序,如slogger2和dumper

5、BSP驱动,如串行驱动,实时时钟,和其他硬件实用程序

6、SLM和系统调试控制台

SLM(系统启动和监控) 阶段:

SLM是启动系统所需进程的服务。 通常,有些进程和应用程序不是立即需要的,比如网络连接(io-pkt),或者需要在主应用程序之前启动的进程,比如人机界面(HMI)。 此时,SLM将等待进一步的指示。 SLM由一组配置文件(SLM -config-all.xml和SLM -config-platform.xml)控制,它们告诉SLM要启动哪些模块,以及这些模块内部或模块之间是否存在依赖关系。

系统启动Screen时间轴:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大只辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值