维普资讯 http://www.wendangwang.com
科技论坛
中国科技信息 2 0 0 5年第1 9期 C HI N A S C I E N C E A N D T E C H N O L O G Y
一
种开放源代码的嵌入式操作系统一 u C L i n u x
An Op e n S o u r c e E mb e d d e d Op e r a t i n g S y s t e m。 - _’ u CL i n u x
周建胜谷勇刘文权河北工业大学计算机科学- b软件学院 3 0 0 1 5 0
C L i n u x的开发环境。 摘要:介绍了嵌入式操作系统 u C L i n u x的结构,另外还简要介绍了如何建立 u
关键词:嵌入式操作系统;u C L i n u x;结构;开发环境
A b s t r a c t:T h e s t r u c t u r e o f a n e m b e d d e d o p e r a t i n g s y s t e m, u C L i n u x,i s i n t r o d u c e d.An d i t i s p r e s e n t e d h o w t O c o n s t r u c t a d e v e l o p m e n t e n v i r o n e n m t f o r u C L i n u x K e y wo r d s:E mb e d d e d O p e r a t i n g S y s t e m; u C L n u x;S t r u c t u r e;D e v e l o p m e n t E n v i r o n m e n t
引言
目前,由于嵌入式系统得深入发展,系统的复杂程度明显提高,要求有更多的存储器和接口,进而产生了对操作系统服务的需求。由于 L i n u x廉价、开放源代码以及系统的稳定性,使其在嵌入式系统中的应用日益广泛,在此专门介绍种基于 L i n u x的操作系统 u C L i n u x。
一
的参数,并调用相应的处理程序,而用户一直被 u C L i n u x开发环境。
挂起,直到内核完成处理并返回。 l, 4驱动程序驱动程序 ( Dr i v e r )是整个 L i n u x内核的主要组成部分,它们控制着操作系统和外部设备的交互。 L i n u x的驱动程序是可选的,但是典型的系统应该包括一个控制台 ( C o n s o l e ),一个通用串口驱动程序个块设备 (用来存放根文件系统 )驱动程序。
一
,
由于u C L i n u x及它的相关开发工具
集都是自自由软件组织的开放源代码,所以在软件开环境建立的时候,大多数软件都可以从网络上接下载获得,我们从 h t t p:// www . u c l i n u x. C 和h t t p:// ma c . O S . n c t u . e d u . t w下载以下几个{ 直接安装在宿主机上: a r m_ e 1 f— b i n u t i l s一 2 . 1 1 - 5 . i 3 8 6 . r p m针对 ARM体系结构的一些应用程序,例
1,u C L i n u x的结构分析
u C l i n u x是在L i n u x Ke r n e l 2 . 0之后出现的个L i n u x的变种,目标是将 L i n u x应用于没有内存管理单元 MMU ( Me mo r y Ma n a g e me n t Un i t s )的处理器。u C l i n u x中 u就是 Mi c r o,表示微、小的意思 l C就是 Co nt r o l,即控制。因此可以说,u C l i n u x是针对“微控制器领域而设 计的 L i nu x系统”。要掌握 uCL i nu x,先得了解u CL i nu x的结构,其结构如图 l所示:
一
1 . 5文件系统
支持多种文件系统 ( F i l e S y s t e m)是 L i n u x 一个重要的特性,u C L i n u x同样把这一特性带进了嵌入式系统中,并针对嵌入式系统作了一些取舍,包括 ROMFS、EXT2 FS,NFS等,其中 R0 MF S是最简单的只读文件系统,所占用的空间最少,可用来做根文件系统 ( r O Ot f i l e s y s t e m)。根文件系统里存放 L i n u x启动时要用到的设备文件,配置文件和应用程序。 1 . 6内存管理在嵌入式领域,没有内存管理单元 ( NOM M U )的处理器是相当普遍的。uC l i n u x 针对N 0MMU的处理器采用了实存储器管理策略 ( r e a l me mo r y ma n a g e me n t)。u C L i n u x系统
反汇编、 El f 2 C(反编译)等。
a r m— e】 f _ g。 c一 2 . 9 5 . 3 - 2 . i 3 8 6 . r p m针对 ARM体系结构的编译器。 a r m— eⅡg d 5 . 1 . i 3 8 6 . r p m针对 ARM体系结构的调试器。 g e n mmf s一 0 . 5 . 1 1 . i 3 8 6 制作文件系
统的应用软件,可以形成 r o n 文件系统。 UC l i n u x S a ms u n g - 2 0 0 2 0 3 1 8 . t a r . g z 接下来就可以建立交叉开发环境了, L i n u x环境中执行下列命令: r p m i v h a m— r e l l b i n u t i l s一2 . 1 l一5 . i 3 8 r p m r g m i v h a m ̄l r i - g o c一2 . 9 5 . 3 - 2 . i 3 8 6. r I
耕
i镒 I -妇_ 1 l “ l
他
0l l…‘一…
娃
对于内存的访问是直接的,所有程序中访问的地
r p m i v h a m e l f g d b一 5 . O— 1 . i 3 8 6 . r p z
l—
l
‘ q
址有都保是护实际的物理地址。操作系统对内存空间没 各个进程实际上共享一个运行空间。一
,
r p m i v h g e n r o m f s 0 . 5 . 1 1 . i 3 8 6 t a r x z v f u C l i n u x -S a ms u n g - 2 0 0 2 0 3 1 8
安装完后,为了更好的运行,还得重新编 me n u c o n f i g,根据情况选择配置 l然后 Ma d e p、 ma k e l i bo nl y、 m ake u s e r
— .— .
性 址
网习新
{
图l u CLi n u x系统的结构
续地址空间,然后全部载入主存储器的连续空间内核。在 u C l i n u x S a m s u a n g目录下运行 m a
中。 u C L i n u x对内存的管理减少同时就给开发人
个进程在执行前,系统必须为进程分配足够的连
员提出了更高的要求开发人员不得不参与系统
。
1 . 1启动模块启动模块 ( b o o t s t r a p )负责用来启动 L i n u x 内核,包括 Ch i p S e l e c t o r初始化,系统堆栈的初始化,把压缩的 L i n u x映像从 F l a s h中解压到 RAM中,并把控制权交给内核的初始化例程。 1 . 2内核初始化内核初始化 ( Ke r n e l I n i t i a l i z a t i o n)的入口地址是:s t a r t— k e r n e l(在i n i t/ ma i n. C中), 它初始化内核的其他部分,包括异常 ( t r aP), 中断 ( I R Q ),内存页 ( P
a g e)、调度 ( S c h e d ul i ng),驱动程序等,并启动“ i ni t” 进程进入多任务环境。 1 . 3系统调用处理/异常处理 当“ i n i t”程序运行后,内核对整个系统的
的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少的内存,从而系统将在启动的初始化阶段对内存进行分页并且统将在运行应 标记已使用的和未使用的内存系用时使用这些分页内存 l7运行时间库及应用程序运行时间库 ( C Ru n t i me L i b)提供了用户程序和内核程序的接口在操作系统中,系统的大部分性能不是由内核决定的而是由C时间库决定的 u C l i b c就是经过裁减后的适用于嵌入式设备的 C运行时间库它由 G NU g l i b c库移植而来。 除了去掉了大部分不适合嵌入式系统的代码以外还对应用程序的入口代码系统调用的AP I,输入输出过程 ( I/0 r o u t i n e s )等进行了修改
,
。。
,
ma k e r o or t s、ma k e i ma g e、ma k e,至Ⅱ 交叉开发环境就算建立好了。
o n l y
3,结束语
u C L i n u x作为L i n u x操作系统在 N0 MMU 入式领域中的首选,已经成为国内嵌入式L i n u x 究的一个热点。了解和掌握u C L i n u x,对于很多入式爱好者来说,显得很有必要。
参考文献 [ 1】h t t p:// w w w. u c l i n u x, o r g
。
,
。
,
,
,
。
[ 2]李岩,容盘样基于¥ 5 C 4 4 B 0嵌入式 u C L i n u x 系统原理及应用,清华大学出版社,2 0 0 5 [ 5] Wo o k y,C h r i s g u t t e r,J e f f S u t h e r l,e t a l T h G N U T o o l c h a J n f o r A P J v l t a r g e t s H O W T O
运行不再进行直接控制,而是通过系统调用给应
用程序提供服务和相应外部及内部的异常事件, 咧如:程序错误,硬件中断等。用户程序如果想得到系统资源,必须通过系统调用。当用户进程发生中断后,内核获得控制权,取得系统调用
2,嵌入式 u C L i n u x的实现
当然,我们学习 u C L i n u x是为了能用它来开发自
己的应用程序,这就涉及到 u C L i n u x交叉编译环境的搭建问题。下面简要介绍一下如何建立
作者简介:
周建胜,河; l h' r业大学计算机软件与科学学院。