这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 嵌入式uClinux系统概况

共1条 1/1 1 跳转至

嵌入式uClinux系统概况

工程师
2008-05-20 17:38:13     打赏

在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。本节将结合本书所谈到的硬件平台S3C4510B,介绍一种针对不带MMU的ARM微处理器的嵌入式操作系统uClinux。

uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,现在由Lineo公司支持维护。uClinux的发音是“you-see-linux”,它的名字来自于希腊字母“mu”和英文大写字母“C”的结合。“mu”代表“微小”之意,字母“C”代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。

为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,以下简称MMU)功能模块。最初,运行于这类没有MMU的CPU之上的都是一些很简单的单任务操作系统,或者更简单的控制程序,甚至根本就没有操作系统而直接运行应用程序。在这种情况下,系统无法运行复杂的应用程序,或者效率很低,而且,所有的应用程序需要重写,并要求程序员十分了解硬件特性。这些都阻碍了应用于这类CPU之上的嵌入式产品开发的速度。

然而,随着uClinux的诞生,这一切都改变了。

uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。uClinux是为了支持没有MMU的处理器而对标准Linux作出的修正。它保留了操作系统的所有特性,为硬件平台更好的运行各种程序提供了保证。在GNU通用公共许可证(GNU GPL)的保证下,运行uClinux操作系统的用户可以使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。由于uClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,uClinux仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。图7.1为uClinux的基本架构。

图7.1  uClinux的基本架构

Boot Loader:负责Linux内核的启动,它用于初始化系统资源,包括SDRAM。这部分代码用于建立Linux内核运行环境和从Flash中装载初始化ramdisk。

内核初始化:Linux内核的入口点是start_kernel()函数。它初始化内核的其他部分,包括捕获,IRQ通道,调度,设备驱动,标定延迟循环,最重要的是能够fork “init”进程,以启动整个多任务环境。

系统调用函数/捕获函数:在执行完“init”程序后,内核对程序流不再有直接的控制权,此后,它的作用仅仅是处理异步事件(例如硬件中断)和为系统调用提供进程。

设备驱动:设备驱动占据了Linux内核很大部分。同其他操作系统一样,设备驱动为它们所控制的硬件设备和操作系统提供接口。

文件系统:Linux最重要的特性之一就是对多种文件系统的支持。这种特性使得Linux很容易地同其他操作系统共存。文件系统的概念使得用户能够查看存储设备上的文件和路径而无须考虑实际物理设备的文件系统类型。Linux透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。

下面介绍一些和uClinux相关的知识。

1、  MMU(内存管理单元) 和VM(虚拟内存)

许多嵌入式微处理器都由于没有MMU而不支持虚拟内存。没有内存管理单元所带来的好处是简化了芯片设计,降低了产品成本。由于大多数的嵌入式设备没有磁盘或者只有很有限的内存空间,所以无需复杂的内存管理机制。但是由于没有MMU的管理,操作系统对内存空间是没有保护的,所有程序访问的地址都是实际物理地址。但从嵌入式系统一般都是实现某种特定功能的角度考虑,对于内存管理的要求完全可以由程序开发人员考虑。

2、实时性的支持

uClinux本身并不支持实时性,目前存在两种不同的方案提供uClinux对实时性的支持,它们分别是RTLinux(RTL)和RTAI(Real Time Application Interface)。有了这两种方案,uClinux可以应用到对实时性要求较高的场合。

3、 平台支持

开发uClinux的工具链:

开发uClinux通常用标准的GNU工具链。经过修改的工具链支持一些高级特性,比如XIP(Execute-In-Place)技术,共享库支持等。

uClinux所适用的微控制器:

uClinux适用于摩托罗拉的ColdFire/Dragonball,ARM系列(例如Atmel, TI, Samsung等生产的芯片),Intel i960, Sparc (例如无MMU的 LEON), NEC v850,甚至是开放的可综合(到CLPD内)的CPU核,比如OPENcore。

4、与标准Linux的兼容性

uClinux除了不能实现fork()而是使用vfork()外,其余uClinux的API函数与标准Linux的完全相同。这并不是意味着uClinux不能实现多进程,实际上uClinux多进程管理是通过vfork()来实现的,或者是子进程代替父进程执行,直到子进程调用exit()函数退出,或者是子进程调用exec()函数执行一个新的进程。大多数标准的Linux应用程序在从Linux操作系统移植到uClinux系统时,几乎不用做什么大的改动,就可以完全达到对一个嵌入式应用程序的要求(例如合理的资源使用)。uClibc对libc(可用于标准Linux的函数库)做了修改为uClinux提供了更为精简的应用程序库。

5、  网络的支持

uClinux带有一个完整的TCP/IP协议,同时它还支持许多其他网络协议。uClinux 对于嵌入式系统来说是一个网络完备的操作系统。

6、应用领域

uClinux广泛应用于嵌入式系统中,例如VPN路由器/防火墙,家用操作终端,协议转换器,IP电话,工业控制器,Internet摄像机,PDA设备等。

在对uClinux有了一个初步认识之后,有必要向读者介绍在嵌入式开发中最为普遍使用的编译工具GNU GCC。




关键词: 嵌入式     uClinux     系统     概况     应用程序     操作    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]