当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]构造嵌入式Linux

Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在Linux中也容易得到实现。强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。

Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。

一个小型的嵌入式Linux系统只需要下面三个基本元素:

*引导工具

*Linux微内核,由内存管理、进程管理和事务处理构成

*初始化进程

如果要让它能干点什么且继续保持小型化,还得加上:

*硬件驱动程序

*提供所需功能的一个或更多应用程序。

再增加功能,或许需要这些:

*一个文件系统(也许在ROM或RAM)中

*TCP/IP网络堆栈

下面我们就从精简内核、系统启动、驱动程序将、X-Window换成MicroWindows四个步骤介绍嵌入式Linux的实际开发。

精简内核

构造内核的常用命令包括:makeconfig、dep、clean、mrproper、zImage、bzImage、modules、modules_install。命令说明略。

现在举个例子说明一下:

我使用的是Mandrake内附的2.2.15。我没有修改任何一行程序码,完全只靠修改组态档得到这些数据。

首先,使用makeconfig把所有可以拿掉的选项都拿得。

不要floppy;不要SMP、MTRR;不要Networking、SCSI;把所有的blockdevice移除,只留下oldIDEdevice;把所有的characterdevice移除;把所有的filesystem移除,只留下minix;不要sound支援。相信我,我己经把所有的选项都移除了。这样做之后,我的到了一个188K的核心。

还不够小吗?OK,再加上一招,请把下列两个档案中的-O3,-O2用-Os取代。

./Makefile

./arch/i386/kernel/

Makefile

这样一来,整个核心变小了9K,成为179K。

不过这个核心恐怕很难发挥Linux的功能,因此我决定把网络加回去。把General中的networksupport加回去,重新编译,核心变成189K。10K就加上个TCP/IPstack,似乎是很上算的生意。

有stack没有driver也是枉然,所以我把embeddedboard常用的RTL8139的driver加回去,195K。

如果你需要DOS档案系统,那大小成为213K。如果minix用ext2换代,则大小成长至222K。

Linux所需的内存大约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,因为连载入C程序库都有困难。2MB内存应该就可以做点事了,但要到4MB以上才可以执行一个比较完整的系统。

因为Linux的filesystem相当大,大约在230K左右,占了1/3的体积。内存管理占了80K,和核心其它部分的总和差不多。TCP/IPstack占了65K,驱动程序占了120K。SysVIPC占了21K,必要的话可以拿掉,核心档应该可以再小个10K左右。

如果要裁剪核心大小,应该动那里呢?答案很明显,当然是文件系统。Linux的VFS简化了档案系统的设计,buffercache,directorycache增加了系统的效率。但这些embedded系统根本就用处不大。如果可以把它们拿掉,核心可以马上缩小20K左右。如果跳过整个VFS,直接将文件系统写成一个driver的型式,应该可以将230K缩减至50K左右。整个核心缩到100K左右。

系统启动

系统的启动顺序及相关文件仍在核心源码目录下,看以下几个文件:

./arch/$ARCH/boot/

bootsect.s

./arch/$ARCH/boot/setup.s

./init/main.c

bootsect.S及setup.S

这个程序是Linuxkernel的第一个程序,包括了Linux自己的bootstrap程序,但是在说明这个程序前,必须先说明一般IBMPC开机时的动作(此处的开机是指“打开PC的电源”)。

一般PC在电源一开时,是由内存中地址FFFF:0000开始执行(这个地址一定在ROMBIOS中,ROMBIOS一般是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROMBIOS中的位置,开始执行一系列的动作。

紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROMbootstraproutine)。这个程序会将磁盘上的第零轨第零扇区读入内存中,至于读到内存的哪里呢?--绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特性。而位于Linux开机磁盘的bootsector上的,正是Linux的bootsect程序。

把大家所熟知的MSDOS与Linux的开机部分做个粗浅的比较。MSDOS由位于磁盘上bootsector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel--MSDOS.SYS载入内存的重任。而Linux则是由位于bootsector的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支持WindowsWin32/WinCEGDI和Nano-XAPI。这些API提供了Win32和X窗口系统的紧密兼容性,使得别的应用程序可以很容易就能移植到MicroWindows上。[!--empirenews.page--]

何谓嵌入式系统

嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

嵌入式系统是面向用户、面向产品、面向应用的,如果独立于应用自行发展,则会失去市场。嵌入式处理器的功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,这些也是各个半导体厂商之间竞争的热点。嵌入式处理器的应用软件是实现嵌入式系统功能的关键。软件要求固化存储,软件代码要求高质量、高可靠性,系统软件(OS)的高实时性是基本要求。

在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

USB摄像头是一种采用USB接口的视频采集设备,其优点在于即插即用、操作简便,无需额外驱动程序,支持笔记本电脑,并且成本较低,可以支持远程网络观看。

关键字: usb摄像头 驱动程序

与两相双极步进电机的驱动电路相比,两相单极步进电机的驱动电路在输入段配置、内部逻辑及控制电路和驱动电路使用双通道方面基本相同,但是输出段的配置不同。

关键字: 四相步进电机 驱动程序 程序电路

在这篇文章中,小编将为大家带来Linux内核的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 Linux 内核

本文介绍了如何实现嵌入式MICREL网卡的驱动程序开发和设计。首先,我们介绍了MICREL网卡的概述和工作原理。然后,详细探讨了驱动程序的开发流程,包括硬件和软件的配置以及驱动程序的编写和测试。最后,总结了几点注意事项和...

关键字: 嵌入式 MICREL网卡 驱动程序

上海2023年9月1日 /美通社/ -- 今日,阿斯利康在神经纤维瘤病领域首个创新药物科赛优®(英文商品名:Koselugo,通用名:硫酸氢司美替尼胶囊)正式上市,惠及3岁及3岁以上伴有症状、无法手术的丛状神经纤...

关键字: BSP ROM SI ATOS

杭州2023年8月25日 /美通社/ -- 8月17日,以"绿色永续制造"为主题,正泰新能常务副总裁、可持续发展官黄海燕在在近期的一次公开演讲中,公布了以2028年、2035年和2050年为主要时间节...

关键字: 可持续发展 光伏组件 ROM 节点

刚入门嵌入式,选入门级RZ/G2L开发板,采用邮票孔形式封装了RZ/G2L核心板。

关键字: 开发板 嵌入式LINUX 嵌入式系统

以下内容中,小编将对嵌入式linux内核移植实现方案的相关内容进行着重介绍和阐述,希望本文能帮您增进对嵌入式的了解,和小编一起来看看吧。

关键字: 嵌入式 Linux 内核

BIOS (Basic Input Output System)是基本输入u出系统,它是为电脑中的硬件提供服务的。BIOS属于只读存储器,它包含了系统启动程序、系统启动时必需的硬件设备的驱动程序、基本的硬件接口设备驱动程...

关键字: BIOS 芯片 ROM

在这篇文章中,小编将对OLED的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: OLED 驱动程序 无源驱动
关闭
关闭