嵌入式uCLinux内核启动过程分析
时间:2023-09-25 22:54 来源: 作者: 点击:次
引言 是专门为无MMU处理器设计的操作系统,已支持ARM、Motorola等微处理器。目前采用ARM+作为系统的一种开发模式非常普遍。 一个基于的完整的系统由三个部分组成,即系统引导程序Bootloader、uCLinux操作系统和文件系统。嵌入式系统的引导技术是嵌入式系统开发的一个难点,系统引导的成功与否决定了应用程序的运行环境是否能正确建立,系统成功是应用正确运行的前提。而uCLinux的启动也是其中重要一环,uCLinux的启动,可以加快系统启动速度、正确建立应用环境。本文要研究的就是uCLinux操作系统的启动。 1 系统简介 本系统采用SamSung公司的Arm7TDMI内核的S3C4510B处理器,主要利用其强大的网络功能,与PC机进行网络通信。该系统的主要功能是利用串口监测一种智能电表,将获得的数据通过Internet传给PC机,由PC机再做进一步的处理,将最终结果呈现给用户。 硬件平台包括一个以ARM为内核的处理器、存储器使用2MB的Flash和16MB的SDRAM,外部接口除了通信的串口,还外接了一个以太网接口,以支持S3C4510B的网络功能。软件平台由以下部分组成:系统引导程序Bootloader、嵌入式操作系统内核、文件系统。 根据内核是否压缩以及内核是否在本地执行,uCLinux通常有两种启动方式:flash本地执行方式和压缩内核加载方式。本系统采用第二种启动方案,即内核的压缩映象固化到flash上,系统启动时在内存中解压,然后在内存中执行,这种启动方式相比第一种方式运行速度更快。 2 uCLinux内核启动过程的实现 可将ARM+uCLinux系统的启动过程总结为以下几个阶段:(1)PC指向复位地址入口处,即0x0H处的Bootloader代码。Bootloader完成一些基本的初始化,将系统的软硬件环境带到一个合适的状态;(2)Bootloader将控制权交给操作系统内核的引导程序后,开始uCLinux内核的加载;(3)uCLinux内核加载引导完成,启动init进程,完成系统的引导过程。 本系统的启动方案采用uCLinux自带的引导程序加载内核。在内核启动过程中主要调用这几个文件:head.S(在linux-2.4.xarcharmnommubootcompressed目录下)、main.c(在linux-2.4.xinitinit目录下)、simpleinit.c(在userinit目录下)[1]。实际应用中应根据硬件平台和系统功能,修改相关文件,以正确地引导系统。 当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head.S,它完成了加载内核的大部分工作;misc.c则提供加载内核所需要的子程序,其中解压内核的子程序是head.S调用的重要程序,另外内核的加载还须知道系统的硬件信息,该硬件信息在hardware.h中定义并被head.S所引用。本系统中内核的启动流程如图1所示。 (责任编辑:admin) |
- 上一篇:基于LPC221的瓦斯检测仪的设计
- 下一篇:FPGA实现复接与分接系统