构造嵌入式Linux.docVIP

  • 2
  • 0
  • 约3.72千字
  • 约 7页
  • 2018-02-24 发布于河南
  • 举报
构造嵌入式Linux

构造嵌入式Linux 来源:internet 点击:2578 添加时间:2003-12-19?21:19:23?????? ????????? ?  Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在Linux中也容易得到实现。强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。?   Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。?   一个小型的嵌入式Linux系统只需要下面三个基本元素:?   *?引导工具?   *?Linux微内核,由内存管理、进程管理和事务处理构成?   *?初始化进程?   如果要让它能干点什么且继续保持小型化,还得加上:?   *?硬件驱动程序?   *?提供所需功能的一个或更多应用程序。?   再增加功能,或许需要这些:?   *?一个文件系统(也许在ROM或RAM)中?   *?TCP/IP网络堆栈?   下面我们就从精简内核、系统启动、驱动程序将、X-Window换成MicroWindows四个步骤介绍嵌入式Linux的实际开发。?   精简内核?   构造内核的常用命令包括:make?config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。命令说明略。?   现在举个例子说明一下:?   我使用的是?Mandrake内附的?2.2.15。我没有修改任何一行程序码,完全只靠修改组态档得到这些数据。?   首先,使用?make?config?把所有可以拿掉的选项都拿得。?   不要?floppy;不要SMP、MTRR;不要?Networking、SCSI;把所有的?block?device?移除,只留下?old?IDE?device;把所有的?character?device?移除;把所有的?filesystem?移除,只留下?minix;不要?sound?支援。相信我,我己经把所有的选项都移除了。这样做之后,我得到了一个?188K?的核心。?   还不够小吗??OK,再加上一招,请把下列两个档案中的?-O3,-O2?用?-Os?取代。?   ./Makefile?   ./arch/i386/kernel/?   Makefile?   这样一来,整个核心变小了?9K,成为?179K。?   不过这个核心恐怕很难发挥?Linux?的功能,因此我决定把网络加回去。把General中的?network?support?加回去,重新编译,核心变成?189?K。10K就加上个?TCP/IP?stack,似乎是很上算的生意。?   有stack没有driver也是枉然,所以我把?embedded?board常用的RTL8139的driver加回去,195K。?   如果你需要?DOS?档案系统,那大小成为?213K。如果?minix?用?ext2?换代,则大小成长至?222K。?   Linux所需的内存大约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,因为连载入C程序库都有困难。2MB内存应该就可以做点事了,但要到?4MB以上才可以执行一个比较完整的系统。?   因为Linux?的filesystem?相当大,大约在?230K?左右,占了?1/3?的体积。内存管理占了80K,和核心其它部分的总和差不多。TCP/IP?stack?占了65K,驱动程序占了120K。SysV?IPC占了?21K,必要的话可以拿掉,核心档应该可以再小个10K左右。?   如果要裁剪核心大小,应该动那里呢??答案很明显,当然是文件系统。Linux?的?VFS简化了档案系统的设计,buffer?cache,?directory?cache增加了系统的效率。但这些embedded系统根本就用处不大。如果可以把它们拿掉,核心可以马上缩小?20K?左右。如果跳过整个?VFS,直接将文件系统写成一个?driver?的型式,应该可以将?230K缩减至50K左右。整个核心缩到100K左右。?   系统启动?   系统的启动顺序及相关文件仍在核心源码目录下,看以下几个文件:?   ./arch/$ARCH/boot/?   bootsect.s?   ./arch/$ARCH/boot/setup.s?   ./init/main.c?   boots

文档评论(0)

1亿VIP精品文档

相关文档