About the system startup sequence

A system running the QNX Neutrino RTOS boots in several stages, as illustrated in the following diagram:

QNX系统启动经历过7个阶段:
PLL => IPL => Startup => BaseSystem(Kernel,Core OS) => Boot Script => SLM => Apps

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

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

Startup阶段: Startup program
可引导OS映像中的第一个程序是一个启动程序,其目的是完成所有硬件初始化配置,如定时器、时钟频率、中断控制器、缓存控制器等,但不包括配置串口波特率之类的东西。

它也不会初始化标准周边设备,例如以太网控制器或EIDE硬件disk控制器——这些都留给驱动稍后启动以后来完成,然后将控制加载并转移到内核(procnto或procnto-smp)。

Base system阶段:
内核初始化内存管理单元(MMU),创建结构来处理分页

When the power is first turned on your system, the PLL, IPL, and startup program run and bring up your base system. The base system is primarily the kernel or core operating system. From there, a boot script runs to load device drivers, run services, and start applications. Then finally the main system boots, which allows the main applications of your system to boot, such as the HMI (human machine interface). The previous diagram shows this generic boot sequence:

The boot stages are as follows as part of the Kernel:

PLL (phase locked loop)—PLL refers to how long it takes for the first instruction to begin executing after power is applied to the processor. Most CPUs have a PLL that divides the main crystal frequency into all the timers used by the chip. The time that the PLL takes to settle to the desired frequencies often represents the largest portion of the chip's startup time. The PLL stage is independent of any OS and varies from CPU to CPU; in some cases, it takes as long as 32 milliseconds. Consult the hardware platform's user manual for the exact timing.  PLL (锁相环) 是指处理器上电后第一条指令开始执行所需的时间。大多数 CPU 都有一个 PLL,它将主晶振频率分成芯片使用的所有定时器。 PLL 稳定到所需频率所需的时间通常代表芯片启动时间的最大部分。 PLL 阶段独立于任何操作系统,并且因 CPU 而异;在某些情况下,它需要长达 32 毫秒。请查阅硬件平台的用户手册了解确切的时间。

IPL (initial program loader)—QNX provides a standard, bare-bones IPL that performs the fewest steps necessary to configure the memory controller, initialize the chip selects and/or PCI controller, and configure other required CPU settings. Once these steps are complete, the IPL copies the startup program from the image filesystem (IFS) into RAM and jumps to it to continue execution.    QNX 提供了一个标准的基本 IPL,它执行配置内存控制器、初始化芯片选择和/或 PCI 控制器以及配置其他所需的 CPU 设置所需的最少步骤。完成这些步骤后,IPL 将启动程序从映像文件系统 (IFS) 复制到 RAM 并跳转到它以继续执行。

The IFS contains the OS image, which consists of the startup program, the kernel, the boot script, and any other drivers, applications, and binaries that the system requires. Because you can control what the IFS contains, the time for the copying stage varies, but it typically constitutes the longest part of the kernel boot process. In extreme cases where the system contains a very large image and has no filesystem other than the IFS, this stage can take a long time (10 seconds or more).    IFS 包含操作系统映像,它由启动程序、内核、引导脚本以及系统所需的任何其他驱动程序、应用程序和二进制文件组成。因为您可以控制 IFS 包含的内容,所以复制阶段的时间会有所不同,但它通常构成内核引导过程中最长的部分。在系统包含非常大的映像并且除 IFS 之外没有其他文件系统的极端情况下,此阶段可能需要很长时间(10 秒或更长时间)。

That said, you can exercise a great deal of control over the length of this phase, albeit indirectly, by reducing the size of the IFS. To add, remove, or configure files stored in the IFS, you can edit the script block in the buildfile or use the QNX System Builder in the IDE. You can also compress the image to make the IFS smaller (with the additional overhead of decompression, which you can speed up by enabling the cache in the IPL).   也就是说,您可以通过减小 IFS 的大小来对这个阶段的长度进行大量控制,尽管是间接的。要添加、删除或配置存储在 IFS 中的文件,您可以编辑构建文件中的脚本块或使用 IDE 中的 QNX System Builder。您还可以压缩图像以使 IFS 更小(具有额外的解压缩开销,您可以通过在 IPL 中启用缓存来加速)。

Typically, the bootloader executes for at least 6 milliseconds before it starts to load the OS image. The actual amount of time depends on the CPU architecture, on what the board requires for minimal configuration, and on what the chosen bootloader does before it passes control to the startup program.   通常,引导加载程序在开始加载 OS 映像之前至少执行 6 毫秒。实际时间量取决于 CPU 架构、电路板对最小配置的要求以及所选引导加载程序在将控制权传递给启动程序之前所做的工作。

Some boards come with another bootloader, such as U-boot. These bootloaders aren't as fast as the QNX IPL, since the IPL has been specifically tuned for QNX systems. We recommend that you replace your bootloader with the IPL.   有些板带有另一个引导加载程序,例如 U-boot。这些引导加载程序不如 QNX IPL 快,因为 IPL 专门针对 QNX 系统进行了调整。我们建议您将引导加载程序替换为 IPL。

For more information on the IPL and how to modify it for your purposes, see the Initial Program Loaders (IPLs) chapter in Building Embedded Systems.   有关 IPL 以及如何根据您的目的对其进行修改的更多信息,请参阅构建嵌入式系统中的初始程序加载器 (IPL) 章节。

Startup program—The first program in a bootable OS image is a startup program whose purpose is to initialize the hardware, initialize the system page, initialize callouts, and then load and transfer control to the kernel (procnto or procnto-smp). If the OS image isn't in its final destination in RAM, the startup program copies it there and decompresses it, if required.  可启动操作系统映像中的第一个程序是启动程序,其目的是初始化硬件、初始化系统页面、初始化标注,然后加载并将控制权转移到内核(procnto 或 procnto-smp)。 如果操作系统映像不在 RAM 中的最终目标位置,则启动程序会将其复制到那里并在需要时对其进行解压缩。

During bootup, the kernel initializes the memory management unit (MMU), creates structures to handle paging, processes, and exceptions, as well as enabling interrupts. Once this phase is complete, the kernel is fully operational and can begin to load and run user processes from the boot script.    在启动期间,内核初始化内存管理单元 (MMU),创建结构来处理分页、进程和异常,以及启用中断。 一旦这个阶段完成,内核就可以完全运行,并且可以开始从引导脚本加载和运行用户进程。

Boot script—Each board has a different set of scripts to support different configurations. The script blocks in the buildfile lets you specify which drivers and applications to start, and in what order.   引导脚本——每个板都有一组不同的脚本来支持不同的配置。 构建文件中的脚本块可让您指定要启动的驱动程序和应用程序以及启动顺序。

You can use the boot script to launch services and utilities that need to be running very early (for example, sound a chime, show a splash screen, or show a video feed from a camera) or that require extra time to load (for example, PPS or disk drivers). Wherever possible, these processes should be started in the background to optimize parallelism and maintain the highest possible utilization of the CPU until all components of your system are running and operational.    您可以使用引导脚本来启动需要很早运行的服务和实用程序(例如,发出提示音、显示启动屏幕或显示来自摄像机的视频源)或需要额外时间才能加载的服务和实用程序(例如 , PPS 或磁盘驱动程序)。 在可能的情况下,这些进程应该在后台启动,以优化并行性并保持 CPU 的最高利用率,直到系统的所有组件都运行和操作。

It's also important to limit what goes into the boot script because it's included in the IFS, and everything that's added to it increases the IFS size and the time it takes to load it. Here are some of the things you might load in the boot script:  限制进入引导脚本的内容也很重要,因为它包含在 IFS 中,添加到其中的所有内容都会增加 IFS 大小和加载它所需的时间。 以下是您可能会在引导脚本中加载的一些内容:

  • screen and camera services
  • audio service and the early chime utility
  • disk drivers (and then mount the disks)
  • PPS service
  • debugging utilities, such as slogger2 and dumper
  • BSP drivers, like the serial driver, realtime clock, and other hardware utilities
  • SLM and the system debug console

SLM (system launch and monitor) —SLM is a service that starts the processes required for your system.  SLM 是一项服务,可启动系统所需的进程。

Typically, there are processes and applications that aren't required immediately, such as network connectivity io-pkt) or processes that need to start before your main application, such as an human-machine interface (HMI). At this point, SLM waits for further instructions. SLM is controlled by a set of configuration files (slm-config-all.xml and slm-config-platform.xml) that tell it what modules to start and whether there are dependencies within or between those modules. For more information, see the System launch and monitor (SLM) section in the Utilities Reference.  通常,有些进程和应用程序不需要立即启动,例如网络连接(io-pkt)或需要在主应用程序之前启动的进程,例如人机界面 (HMI)。 此时,SLM 等待进一步的指令。 SLM 由一组配置文件(slm-config-all.xml 和 slm-config-platform.xml)控制,这些文件告诉它要启动哪些模块以及这些模块内部或之间是否存在依赖关系。 有关详细信息,请参阅实用程序参考中的系统启动和监控 (SLM) 部分。

SA8155 QNX 系统启动时序相关推荐

  1. sa8155 qnx开发笔记之一设备共享

    sa8155可以继承android与qnx的双系统功能,中间就要涉及到外设的共享使用,可以通过passthrouth 模式来使用 比如USB1需要在android端使用(USB1默认在qnx使用) a ...

  2. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究

    嵌入式Linux系统主要特点在于使用Bootloader替代了桌面系统的BIOS,同时对系统进行了规模上的裁剪,但硬件上的劣势往往导致系统启动速度较慢,而嵌入式产品使用者又对系统的开机速度比较敏感,样 ...

  3. 发电运行技术类毕业论文文献都有哪些?

    本文是为大家整理的发电运行技术主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为发电运行技术选题相关人员撰写毕业论文提供参考. 1.[期刊论文]浅析大型风电场发电运行提质增效技术 期刊: ...

  4. [转]QNX系统-基于高通骁龙SA8155平台,中科创达发布智能驾驶舱3.0解决方案

    如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意 声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正 锋影 email:1741 ...

  5. qnx 镜像文件_一种基于Hypervisor的QNX操作系统启动方法及装置与流程

    本发明涉及计算机领域,尤其涉及一种基于Hypervisor的QNX操作系统启动方法及装置. 背景技术: 基于Hypervisor的QNX是一种商用的遵从POSIX规范,常用用在汽车及路由器上,QNX是 ...

  6. Android系统启动流程 -- bootloader

    Android系统启动流程 -- bootloader   BootLoader:在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系 ...

  7. QNX system architecture -- Chapter 2:The QNX Neutrino Microkernel

    microkernel实现了嵌入式实时系统中使用的核心POSIX功能,以及基本的QNX Neutrino消息传递服务. 有些POSIX功能(如file, device I/O)不是在procnto m ...

  8. QNX system architecture 2 - the QNX Neutrino Microkernel

    microkernel实现了嵌入式实时系统使用的POSIX核心功能,以及QNX的消息传递服务. 有些POSIX功能(如file, device I/O)不是在procnto microkernel中实 ...

  9. Android系统启动流程 -- bootloader、linux kernel、android

    转载:http://blog.csdn.NET/arnoldlu/article/details/8264721 目录: 第一部分:Bootloader启动 一.Bootloader的定义和种类 二. ...

  10. 05-SA8155 QNX Display框架及代码分析(1)

    1. 概述 显示是非常重要的一个模块,人机交互的桥梁.那么SA8155 Hypervisor显示是如何处理的呢.对处理流程非常的好奇O(∩_∩)O哈哈~. 数据流(buffer),如何刷屏 同步机制( ...

最新文章

  1. 比起VR高端设备市场,三星或对移动VR平台更感兴趣
  2. 使用Spring Security进行简单身份验证
  3. 镜像安装linux选择内核版本,在CentOS和Ubuntu中安装Linux Kernel 4.13.10
  4. 71计算机组装与维修期中,《计算机维修》期中考试卷
  5. 用ajax获取淘宝关键字接口
  6. 【JZOJ4762】【NOIP2016提高A组模拟9.7】千帆渡
  7. Scrcpy - 开源免费在电脑显示手机画面并控制手机的工具 (投屏/录屏/免Root)
  8. java多分支流程图_Java 流程控制 之 分支结构(条件判断)
  9. SpringBoot整合Mybatis与JDBC连接池
  10. 工程图字体宋体仿宋_宋体和仿宋体的区别
  11. 一句powershell调用mimikatz抓密码
  12. (己解决)黑苹果驱动英特尔核显疑问记录
  13. 董明珠接连直播背后:格力的线上焦虑
  14. JVM?干就完了!(一) - hello world
  15. python导入mysqldb_Python导入MySQLdb
  16. linux配置iscsi无账号密码,linux iscsi Initiator配置CHAP认证
  17. Java学习笔记(三):流程控制
  18. 基于区块链技术的性能测试
  19. 盒子滚动到底部有偏差 js_干货丨JS 经典实例收集整理
  20. driver转httpClient

热门文章

  1. 推荐:dhtmlx系列js工具包
  2. 万能遥控器小制作(五)
  3. 【叁】量化思维--复利
  4. 蓝牙技术|伦茨科技带你了解蓝牙音频
  5. 华为手机html文件是什么,如何备份华为手机文件
  6. 服务器显示阵列卡升级,dell r730服务器更换阵列卡后报错,弹出黑框
  7. 华为服务器找不到阵列卡_DELL R730服务器配置RAID及安装服务器系统
  8. 服务器内存只支持双路主板,壕到没朋友,支持双路18核CPU、16条内存、3路显卡的主板来了...
  9. The endpoint reference (EPR) for the Operation not found 可能问题以及解决办法
  10. [Chrome插件开发]监听网页请求和响应