首 页 高校招生 - 高级研修 - 教育新闻 - 学习资料 - 搜索中心 - 北斗论坛 - 名校荟萃   外语 - 计算机 - 考研 - 职业资格 - 艺术体育 - 中小学  

 
·教育搜索 EDUSOU
| 计算机 > LINUX认证 > 正文 进入 教育人生网总站

学习嵌入式Linux系统的笔记和体会

2007-07-19    教育人生网    浏览:0    进入论坛>>

一个典型的桌面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来装入内核。也有不使用loader的情况,系统加电以后,内核直接从烧录有映象的Flash上开始执行。

  内核,一旦内核开始执行,它将通过驱动程序初始化所有硬件,这可以从我们的pc机监视器的输出看出来,每个驱动程序都打印一些有关它的信息。初始化完成后,计算机就准备运行嵌入式应用。也许一个,也许是多个应用程序组成了嵌入式应用,但通常首先调用的是init(通过loader 向核心传入init=/program 可以定制首先运行的程序)。桌面linux中,init会读取/etc/inittab文件,来决定执行级别和哪些脚本和命令。嵌入式应用中,可以根据实际的情况决定是否使用标准的init执行方式,也许这个init是个静态程序,它能够完成我们的嵌入应用的特定任务,那完全不用考虑inittab了。

  initrd文件系统,initrd以一种把内核从存储介质装入到内存的相同的机制来装入一个小型文件系统。这个文件系统最好是以压缩的方式存储在介质上的,解压缩到RAM盘上。通过使用initrd,包含有核心驱动和启动脚本的小文件系统,就可以直接从介质上和内核一起启动起来,内核届压缩这个文件系统,并执行这个文件系统上叫做/linuxrc的脚本文件,这个脚本通常会把启动过程中所需要的驱动程序装入。脚本退出以后,initrd文件系统也卸下了,启动过程进入真正初始化过程。对于嵌入式来讲,可以将需要的应用软件都运行在这个initrd文件系统上,只要/linxrc文件不结束,内核启动过程的其他部分就不会继续。

  做个试验:
cp /boot/initrd-2.4.20.img /tmp
cd /tmp
mv initrd-2.4.2-.img initrd.img.gz
gunzip initrd.img.gz
mount -o loop initrd.img /mnt
cd /mnt
ls
cat linuxrc 可以看到里面执行了加载了两个模块的操作,你在启动linux的时候会看见屏幕打印信息。

  入门试验,制作一个简单的应用

  我们使用一张软盘启动一台假象的只有一个串口,键盘输入,显示输出的x86架构的linux系统,执行的特定应用就是运行minicom,通过串口拨号。需要软件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本号,开始之前,在主目录建立一个目录,来释放这两个软件包:

cd
mkdir -p project/minilinux
cd project/minilinux
tar zxvf minicom-xx.src.tar.gz
tar zxvf syslinux-xx.tar.gz

  1、裁减linux内核(需要系统安装内核文件包)

  配置内核的时候,我们需要选择这些:摸块编入内核,386处理器、物理内存off、支持ELF、标准PC软盘、支持RAM盘(4096)、支持 initial RAM disk (initrd)、虚你终端、虚拟终端控制台、标准串口、ext2文件系统、控制台驱动,VGA text console、DOS FAT、MSDOS文件系统,其他的都可以不要,这样内核编出来较小。

实用导航:高考 | 考研 | 自考 | 在职研 | 外语 | IT | 公务员 | MBA | 舞蹈
推荐:如何戴上硕士帽 | 上海培训学校大全 | 学习交流交友 | 外语学习资料

特别说明:由于各方面情况的不断调整与变化,教育人生网所提供的所有考试信息仅供参考,敬请考生以权威部门公布的正式信息为准。

来源:永远的Unix    责任编辑:GTF  


 相关资讯 关键字:  相关课程

 ·RHCE考试实战考试经验  2007-7-19
 ·学Linux的七点忠告  2007-7-19
 ·LINUX高手经验:LINUX常见问题20个..  2007-7-19

 ·[上海青慧]北大青鸟XML基础暑期培训..  ¥25.00
 ·[文华学院]Red Hat Linux课程  ¥4130.00

 
主编推荐 更多   最新资讯 更多   经典下载 更多
2008英语四六级考前辅导专题
2008英语四六级考前辅导专题
 
 网上报名 优惠便捷
 
 
 求学热点关注
研修 | MBA/EMBA 在职研究生 短训研修
学历 | 普通高校 自考成考 网络院校 中外合作
外语 | 中高级口译 日语 四六级 新概念 雅思
综合英语 商务英语 口语听力 小语种 托福
职业 | 报关报检 物流 会计上岗证 会计电算化
外贸
其他 | IT职业 平面设计 网页设计 辅助设计 考研 中小学辅导 夏令营 舞蹈 瑜珈 音乐
 
 
 论坛精华 求学交友
雅思 |
张红岩《TOEFL iBT词以类记》完整版(..
日语 |
新版 标日在线教学视频 初上1
口译 |
上海中高级口译考试全解析专题
考研 |
微观经济学(高鸿业)各章重点小结PDF
职业 |
【职业资格专题】邮政营业员试题
舞蹈 |
舞蹈大比拼,选择你喜欢[舞蹈特别专题]
 
 热点专题
IT就业培训
 
上海中高级口译完全解析
2008英语四六级考前辅导
教育人生网真题中心正式上线
上海中高级口译考试全解析
在职研究生报考指南
2007年12月四六级真题
2000-2007日语能力考真题..
2008在职硕士备考指南
2008年注册会计师备考专题
高等教育自学考试完全指南

教育新闻 - 免费资料 - 搜索中心 - 名校荟萃 - 北斗论坛 - 会员中心 - 主编信箱 - 网站地图 - 欢迎批评指正 设定本页为浏览器首页
教育人生网简介 - 联系我们 - 招贤纳士 - 客服中心 - 免责声明 - 广告服务 - 火爆加盟 - 中国教育搜索