找回密码
 注册
搜索
查看: 1368|回复: 19

深圳嵌入式培训,信盈达教你如何构造嵌入式Linux

[复制链接]
发表于 2012-11-24 15:29:49 | 显示全部楼层 |阅读模式
构造嵌入式Linux

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。
  
技术咨询:电话:15813882609安老师  QQ122330119[/COLOR]

如果你需要 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
  bootsect.S 及 setup.S
  这个程序是Linux kernel的第一个程序,包括了Linux自己的bootstrap程序,但是在说明这个程序前,必须先说明一般IBM PC开机时的动作(此处的开机是指“打开PC的电源”)。
  一般PC在电源一开时,是由内存中地址FFFF:0000开始执行(这个地址一定在ROM BIOS中,ROM BIOS一般是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROM BIOS中的位置,开始执行一系列的动作。
  紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROM bootstrap routine)。这个程序会将磁盘上的第零轨第零扇区读入内存中,至于读到内存的哪里呢? --绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特性。而位于Linux开机磁盘的boot sector上的,正是Linux的bootsect程序。
  把大家所熟知的MS DOS 与Linux的开机部分做个粗浅的比较。MS DOS 由位于磁盘上boot sector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel --MSDOS.SYS载入内存的重任。而Linux则是由位于boot sector 的bootsect程序负责把setup及Linux的kernel载入内存中,再将控制权交给setup。
  驱动程序
  在Linux系统里,设备驱动程序所提供的这组入口点由一个结构来向系统进行说明。
  设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行登记,以便系统在适当的时候调用。Linux系统里,通过调用register_chrdev 向系统注册字符型设备驱动程序。
  在Linux里,除了直接修改系统核心的源代码,把设备驱动程序加进核心里以外,还可以把设备驱动程序作为可加载的模块,由系统管理员动态地加载它,使之成为核心的一部分。也可以由系统管理员把已加载的模块动态地卸载下来。Linux中,模块可以用C语言编写,用gcc编译成目标文件(不进行链接,作为*.o文件存在)。为此需要在gcc命令行里加上-c的参数。在成功地向系统注册了设备驱动程序后(调用register_chrdev成功后),就可以用mknod命令来把设备映射为一个特别文件。其它程序使用这个设备的时候,只要对此特别文件进行操作就行了。
  将X-Window换成MicroWindows
  MicroWindows是使用分层结构的设计方法。允许改变不同的层来适应实际的应用。在最底一层,提供了屏幕、鼠标/触摸屏和键盘的驱动,使程序能访问实际的硬件设备和其它用户定制设备。在中间一层,有一个轻巧的图形引擎,提供了绘制线条、区域填充、绘制多边形、裁剪和使用颜色模式的方法。在最上一层,提供了不同的API给图形应用程序使用。这些API可以提供或不提供桌面和窗口外形。目前,MicroWindows支持Windows Win32/WinCE GDI和Nano-X API。这些API提供了Win32和X窗口系统的紧密兼容性,使得别的应用程序可以很容易就能移植到MicroWindows上。

       技术咨询:电话:15813882609安老师  QQ122330119  [/COLOR]
 楼主| 发表于 2012-11-29 11:46:41 | 显示全部楼层
深圳/郑州信盈达嵌入式、单片机、ARM、MIPS、FPGA、Android培训!
免费试听,满意后给您量身定制课程(包学会),快速提高您的技能!
教学特色:名师督学+工程师指导;项目案列解析+实际解决方案!
技术顾问:安老师15813882609 QQ 122330119
[em05]
点评回复

使用道具 举报

 楼主| 发表于 2012-12-13 11:02:22 | 显示全部楼层
支持支持下自己。。。。[em01]
点评回复

使用道具 举报

发表于 2013-1-2 17:10:58 | 显示全部楼层
支持下老师。。。。。。。。。
点评回复

使用道具 举报

发表于 2012-12-28 14:38:29 | 显示全部楼层
好好学习天天向上啊。。。[em01]
点评回复

使用道具 举报

发表于 2012-12-23 10:52:58 | 显示全部楼层
嗯 不错学习了挺好的 支持下老师[em08]
点评回复

使用道具 举报

发表于 2013-1-18 16:05:52 | 显示全部楼层
去培训过了的 真的还不错,支持信盈达。
点评回复

使用道具 举报

发表于 2013-2-26 15:16:28 | 显示全部楼层
是值得去学习下啊。。。
点评回复

使用道具 举报

发表于 2013-3-20 11:14:35 | 显示全部楼层
学习了 好好学习天天向上啊。。。
点评回复

使用道具 举报

发表于 2013-3-15 11:29:18 | 显示全部楼层
去培训学习了 不错。。赞个。。[em14]
点评回复

使用道具 举报

发表于 2013-4-7 20:18:06 | 显示全部楼层
学费啊???????
点评回复

使用道具 举报

发表于 2013-4-6 13:58:59 | 显示全部楼层
赶紧加Q学习吧  挺不错的。
点评回复

使用道具 举报

发表于 2013-5-3 10:19:06 | 显示全部楼层
很赞哦。。。。[em06]
点评回复

使用道具 举报

发表于 2013-4-19 17:50:32 | 显示全部楼层
学习了学习了哦。。。。
点评回复

使用道具 举报

发表于 2013-4-18 16:42:33 | 显示全部楼层
信盈达推出电子相关课程供大家学习参考:假期大送优惠,免费公开课,欢迎大家前来试听了解。
1.嵌入式arm+linux(arm9/11/A8/A9套餐供选)
2.安卓高级开发板(linux)
3.cortex系列(m3/arm9/stm32)
4.单片机项目班(c51、pic、avr)
5.单片机综合班(电子+pcb+51/pic)
6.fpga课程
7.嵌入式系统班(电子+嵌入式c+arm+linux+安卓)
8.企业培训、项目指导
详情质询:安老师 电话13926586805  QQ 122330119
点评回复

使用道具 举报

发表于 2013-5-12 10:24:31 | 显示全部楼层
学习向上天天向上啊。。。。
点评回复

使用道具 举报

发表于 2013-5-27 10:45:30 | 显示全部楼层
加油加油啊。。。。[em08]
点评回复

使用道具 举报

发表于 2013-6-27 17:21:31 | 显示全部楼层
继续努力加油。。。
点评回复

使用道具 举报

 楼主| 发表于 2013-7-25 16:51:25 | 显示全部楼层
maoyu1987 发表于 2013-4-7 20:18
学费啊???????

呵呵,linux学费不高 详情需要的 话可以加我安老师QQ122330119
点评回复

使用道具 举报

 楼主| 发表于 2013-7-25 16:53:30 | 显示全部楼层
挺不错的  去学习了  果断支持个。。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-4-18 17:51 , Processed in 0.049204 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表