1.引言
在专用的嵌入式板子运行 gnu/linux 系统已经变得越来越流行。一个嵌入式 linux 系统从软件的角度看通常可以分为四个层次,如图1-1所示:
(1)引导程序。包括固化在固件(firmware)中的 boot 代码(可选),和 boot loader 两大部分。
(2)linux 内核。针对于嵌入式板子的定制内核以及内核的启动参数。
(3)文件系统。包括根文件系统和建立于 flash 内存设备之上文件系统。通常用 ram disk 来作为根文件系统
(4)用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式 gui 有:microwindows 和 minigui 。
下面就在linux-2.4.x内核上如何正确组织、连接这几个部分来自动运行用户应用程序进行分析。
2.linux的启动过程
在系统复位后首先远行的程序就是引导程序(boot loader)。 引导程序可以放在专用的rom中,也可以和内核影像、文件系统影像共用闪存芯片或固态硬盘如下图所示。引导程序首先负责初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。uboot是sourceforge上的一个开源的引导程序,提供了对powerpc(mpc5xx、mpc8xx、mpc82x、mpc7xx、mp74xx、4xx)、arm(arm7、arm9、strongarm、xsacle)、mips、x86等处理器的支持。下载站点是http://sourceforge.net/projects/u-boot
u-boot在arm9系统启动流程:
1、跳转到reset代码(将cpu设置成svc,arm工作模式,sdram初始化)
2、将u-boot代码拷贝到ram空间。可以调用c函数
3、调用初始化函数
(cpu_init(),board_init(),interrupt_init(),serial_init())
4、初始化flash设备
5、初始化系统内存分配函数
6、初始化nand设备
7、初始化显示设备
8、初始化网络设备
9、进入命令循环,接收用户从串口传来的命令,如果延时10秒钟无用户操作则自动加载linux内核。首先将linux内核影像(kernel image)拷贝到ram空间,然后跳转到linux内核代码的第一条指令处,将控制权交给linux内核。
大数据分析正在定义零售供应链的管理
720全效空气净化器C400 加湿伴侣上市 | 加湿净化,一步到位
如何利用SystemVue来识读QPSK调制的流程?
iphone8什么时候上市?iphone8最新消息:iphone8超前国产手机发展2年,国产手机又要模仿了?
IR LED与三体科技
构建嵌入式linux平台下,用户的应用状态
华为P10最新消息:闪存门后的华为P10还值得买吗?华为P10真机上手评测
年度至强巨屏智能墨水平板——BOOX Max Lumi
为什么要编码?视频编解码原理及详细步骤
如何使用压控放大器VCA来制作心仪的音色?
一路走来 | 负责近百年历史的德国压铝机配套及改造的部分加热系统
UWB定位技术浅析
模块化LED灯的制作
用注射器作吸锡器
XDC约束技巧之CDC篇
直接耦合两级放大电路的直流分析和交流分析
用敷铜板修复电炒锅电源插座
变频挂机为何会产生忽大忽小的喘振声?
进击的中磊 中磊电子发表全系列LTE-M物联网终端
ATEN宏正助推半导体产线智能化升级