当前位置: 首页 > news >正文

QNX Neutrino 系统启动序列架构

概述

QNX Neutrino 的启动过程由一系列面向任务的阶段组成,每个阶段由特定的组件负责处理。

这些核心任务包括:

  1. 操作系统必须从非易失性存储器中加载。
  2. 操作系统必须初始化自身,以及所有设备驱动和外设。
  3. HMI(人机界面)必须加载、初始化并开始运行。
  4. 应用软件必须加载、初始化并开始运行。

为确保软硬件组件在需要时已初始化就绪,系统架构师或设计者需要仔细规划每个阶段。QNX 提供了多种机制来满足特定的启动需求。本文将逐步介绍整个启动序列,并提供各阶段的优化技术。

下图展示了 QNX Neutrino OS 启动序列的各个阶段:

系统通电后,PLLIPLStartup program依次运行,将基础系统启动起来。基础系统主要是内核或核心操作系统。随后,Boot script运行以加载设备驱动、启动服务和应用。最后,主系统启动,包括 HMI 等主要应用的启动。

各启动阶段按执行顺序描述如下。


1. PLL(锁相环)

PLL 指处理器上电后到第一条指令开始执行之间的等待时间。大多数 CPU 都有一个 PLL,将主晶振频率分频为芯片使用的所有定时器。PLL 稳定到所需频率的时间通常是芯片启动时间中最长的部分。

PLL 阶段与操作系统无关,因 CPU 而异;在某些情况下,最长可能达到32 毫秒。请查阅硬件平台用户手册获取精确时序。


2. IPL(初始程序加载器)

QNX 提供了一个标准的最小化 IPL,执行配置内存控制器、初始化片选和/或 PCI 控制器、配置其他必要的 CPU 设置等最少步骤。这些步骤完成后,IPL 将Startup program从 IFS(Image Filesystem,镜像文件系统)复制到 RAM 中,并跳转过去继续执行。

IFS 包含 OS 镜像,由 startup program、内核、boot script 以及系统所需的其他驱动、应用程序和二进制文件组成。由于你可以控制 IFS 的内容,复制阶段的时间会有所不同,但它通常是内核启动过程中最长的部分。在极端情况下,如果系统包含非常大的镜像且没有 IFS 之外的文件系统,此阶段可能耗时较长(10 秒或更长)。

不过,你可以通过减小 IFS 体积来间接控制此阶段的长度。要添加、删除或配置 IFS 中存储的文件,可以编辑 buildfile 中的script块,或在 IDE 中使用 QNX System Builder。你还可以压缩镜像以减小 IFS 体积(代价是额外的解压缩开销,可以通过在 IPL 中启用缓存来加速)。

通常,bootloader 至少执行6 毫秒后才开始加载 OS 镜像。实际时间取决于 CPU 架构、板卡最小配置需求以及 bootloader 将控制权移交给 startup program 之前所做的操作。

某些板卡使用其他 bootloader(如 U-Boot)。这些 bootloader 不如 QNX IPL 快,因为 IPL 专门针对 QNX 系统进行了优化。建议用 IPL 替换你的 bootloader。

更多信息请参阅《Building Embedded Systems》中的 Initial Program Loaders (IPLs) 章节。


3. Startup Program(启动程序)

可引导 OS 镜像中的第一个程序是 startup program,其目的是:

  1. 初始化硬件
  2. 初始化系统页面(System Page)
  3. 初始化 callouts
  4. 加载内核(procntoprocnto-smp)并将控制权转交给它

如果 OS 镜像尚未到达其在 RAM 中的最终位置,startup program 会将其复制过去,并在需要时进行解压缩。

启动过程中,内核会初始化 MMU(内存管理单元),创建用于处理分页、进程和异常的数据结构,并使能中断。此阶段完成后,内核完全可用,可以开始从 boot script 加载和运行用户进程。


4. Boot Script(启动脚本)

每块板卡都有一组不同的脚本来支持不同的配置。buildfile 中的script块可让你指定要启动的驱动和应用及其启动顺序。

你可以使用 boot script 启动需要在早期运行的服务和工具(例如,播放提示音、显示闪屏或显示摄像头的视频流),或者需要额外加载时间的服务(例如,磁盘驱动)。在可能的情况下,这些进程应以后台方式启动,以优化并行性并在系统所有组件启动完成前保持 CPU 的最高利用率。

限制 boot script 的内容也很重要,因为它包含在 IFS 中,添加的内容会增加 IFS 体积和加载时间。以下是一些可能需要在 boot script 中加载的内容:

  • Screen 和摄像头服务
  • 音频服务和早期提示音工具
  • 磁盘驱动(然后挂载磁盘)
  • 调试工具,如slogger2dumper
  • BSP 驱动,如串口驱动、实时时钟和其他硬件工具
  • SLM和系统调试控制台

启动脚本最佳实践

  • 尽量使用后台启动(&)以利用 CPU 并行性
  • 避免在 boot script 中包含过多内容,防止 IFS 膨胀
  • 需要快速响应的服务优先启动

5. SLM(系统启动与监视器)

SLM 是一个用于启动系统所需进程的服务。通常,某些进程和应用不需要立即启动,例如网络连接(io-pkt),或者某些进程需要在主应用之前启动,例如 HMI。

在此阶段,SLM 会等待进一步的指令。SLM 由一组配置文件控制:

  • slm-config-all.xml— 全局配置
  • slm-config-platform.xml— 平台特定配置

这些文件告诉 SLM 要启动哪些模块,以及模块内部或模块之间是否存在依赖关系。

更多信息请参阅 Utilities Reference 中的 System launch and monitor (SLM) 章节。


启动时间线总结

PLL → IPL → Startup Program → Boot Script → SLM │ │ │ │ │ │ 配置 │ 加载 │ 初始化硬件 │ 启动驱动 │ 启动应用 │ 时钟 │ 镜像 │ 加载内核 │ 和服务 │ 和 HMI
阶段主要工作关键优化点
PLLCPU 时钟稳定CPU 硬件决定,不可控
IPL配置内存/PCI,复制 IFS 到 RAM减小 IFS 体积,启用压缩
Startup硬件初始化,加载内核体积已很小(~45KB),优化空间有限
Boot Script启动驱动和服务后台启动,限制内容
SLM启动应用和 HMI配置文件管理依赖关系
http://www.rkmt.cn/news/1457450.html

相关文章:

  • Surface Pro4拆机换SSD实战:避开单/双面固态的坑,附无损数据迁移教程
  • 别再到处找教程了!JavaCV音视频开发保姆级避坑指南(附完整依赖配置)
  • 从流水灯代码反推学习:51单片机中C语言的位操作(左移、右移、取反)到底怎么用?
  • 用STM32和阻抗分析搞定电子设计竞赛C题:手把手教你做线路故障检测装置
  • 基于业务设计的人才盘点落地与实操
  • 2026年现阶段南京耐磨胶粘石生产厂家联系方式与综合选型指南 - 2026年企业资讯
  • 从棒材到锻件:深度解析17-4PH不锈钢国内供应链 - 品牌2026
  • 从波形反标失败到成功出功耗报告:手把手解决PTPX读FSDB和Link Library的那些坑
  • 别再只会用LM358了!用AD8606做个信号跟随与放大模块,实测性能对比
  • 基于 GPU 共享与多租户隔离:云原生多模型负载均衡与应急容灾架构设计
  • STM32F407 SPI实战:从CubeMX配置到驱动OLED屏幕(含DMA传输避坑指南)
  • STM32F103用DAC+DMA+TIM生成60kHz正弦波的可运行工程(正点原子精英板)
  • PDF 文件太大的几种压缩方法:桌面软件、在线工具、命令行,各自适合什么场景
  • 零基础入门Cocos Creator,用快马AI生成ccswitch实战代码轻松学节点控制
  • 别再乱配max-http-header-size了!SpringBoot内嵌Tomcat参数调优避坑指南
  • 2026年6月口碑好的防水涂料批发商推荐,TPO防水卷材高分子防水材料/PVC高分子防水卷材,防水涂料施工厂家哪家有现货 - 品牌推荐师
  • 利用快马AI快速生成uln2003a步进电机驱动原型代码
  • 2026年当下百色2-5米菜架竹定制需求解析与实力厂家深度聚焦 - 2026年企业资讯
  • 从快速原型到HiL机柜:手把手教你用Speedgoat和Simulink Real-Time搭建燃料电池展示系统
  • 从快速原型到HiL机柜:我用Speedgoat和Simulink搭建燃料电池展示系统的踩坑实录
  • 遥感新手必看:用Python+ENVI快速区分植被、水体、土壤的实战技巧
  • 2026年5月租车品牌怎么选择,北京市内租车/租车/商务车包车服务/汽车租赁,租车公司推荐口碑分析 - 品牌推荐师
  • 影目科技:资本宠儿与市场口碑的反差,智能眼镜赛道何去何从?
  • 2026年专业武校招生电话多少钱,鹅坡武校费用解析 - myqiye
  • 三步搞定微信聊天记录永久备份:无需越狱的专业解决方案
  • 急需4J36低膨胀合金现货?快速对接高库存厂商的便捷渠道分享 - 品牌2026
  • AI外呼不再“假智能”:从语音识别到意图决策的7层技术栈打通全解析
  • Codex 实战:把论文实验交给 AI Agent,它能跑出结果并写报告吗?
  • 从C/C++代码到LLVM IR:手把手教你理解编译器生成的指令(附常见指令对照表)
  • Linux 内核中的 cgroups:从异步文件读写到页缓存脏页回写调优