嵌入式 Linux 系统之初体验
一个典型的桌面 Linux系统包括 3个主要的软件层---linux内核、C库和应
用程序代码。
内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间
进行会话。内核之上是 C库,负责把 POSIX API转换为内核可以识别的形式,然
后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的
任务。
在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过 C库直接和
内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,
在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小
的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式 linux
将会是我们认识更清晰,简单可行并使应用具有弹性。
快速入门
最简单的建立嵌入式 Linux应用的方法就是从我们使用的桌面 Linux入手,
安装一个喜爱的版本,把我们的某个应用作为初始化的一部分,框架就算完成了。
当然,嵌入式 linux应用远比我们的桌面版本功能简单专一,它也许就是一
个用于足彩的终端机,或是一个数码音频播放器,这些系统除了使用嵌入式 CPU
外,仅仅再需要一个串口,网口等少量的输入输出接口就可以完成它们特定的应
用了。
在软件上,它可以按照三层的概念由内核装载器,定制的内核和较少的为特
定任务设计的静态连接的应用程序组成。之所以使用静态连接的应用程序,是因
为少量的静态连接程序所要的存储空间,比同样数量的动态连接的程序所占的空
间小,这个平衡点需要我们在实际开发中去获取。也许你正在设计的是个 PDA,
它的应用程序较多,那么你很可能就要使用动态连接程序来减少存储空间。在你
的/bin或者/sbin目录下,用厂列表看看 bash,ifconfig,vi...,也许只用几十
K,当你运行 ldd /bin/bash 时,你会看到它们都和好几个库文件相连。好了,
这样看来,我们得把 PC想像成一个嵌入式硬件平台,再重新制作一个特定功能
的嵌入式 linux。
基础知识
再进行实际操作之前,先来搞清楚几个基础知识。
内核装载器 Loader,它的作用是把内核从外部存储器,移动到内存中。它
只作这个事情,一旦完成了调入内核的工作,Loader就跳转到内核位置开始执
行。不同架构有不同的 Loader,在 x86结构的 PC上,通常使用的 loader有
LILO,GRUB,syslinux,syslinux在嵌入式 linux中也同样工作。其他非 x86架构
的应用中,你必须使用专门的 loader,或者自己编写 loader来装入内核。也有
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.