ARM的嵌入式Linux移植体验之操作系统

ARM的嵌入式Linux移植体验之操作系统

ID:41062464

大小:79.00 KB

页数:8页

时间:2019-08-15

ARM的嵌入式Linux移植体验之操作系统_第1页
ARM的嵌入式Linux移植体验之操作系统_第2页
ARM的嵌入式Linux移植体验之操作系统_第3页
ARM的嵌入式Linux移植体验之操作系统_第4页
ARM的嵌入式Linux移植体验之操作系统_第5页
资源描述:

《ARM的嵌入式Linux移植体验之操作系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ARM的嵌入式Linux移植体验之操作系统在笔者撰写的《C语言嵌入式系统编程修炼之道》一文中,主要陈诉的软件架构是单任务无操作系统平台的,而本文的侧重点则在于讲述操作系统嵌入的软件架构,二者的区别如下图:  嵌入式操作系统并不总是必须的,因为程序完全可以在裸板上运行。尽管如此,但对于复杂的系统,为使其具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,很有必要针对特定的硬件平台和实际应用移植操作系统。鉴于Linux的源代码开放性,它成为嵌

2、入式操作系统领域的很好选择。国内外许多知名大学、公司、研究机构都加入了嵌入式Linux的研究行列,推出了一些著名的版本:  ·RT-Linux提供了一个精巧的实时内核,把标准的Linux核心作为实时核心的一个进程同用户的实时进程一起调度。RT-Linux已成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛的应用领域。如NASA(美国国家宇航局)将装有RT-Linux的设备放在飞机上,以测量Georage咫风的风速;  ·uCLinux(Micro-Control-Linux,u表示Micro,C表示Contr

3、ol)去掉了MMU(内存管理)功能,应用于没有虚拟内存管理的微处理器/微控制器,它已经被成功地移植到了很多平台上。  本章涉及的mizi-linux由韩国mizi公司根据Linux2.4内核移植而来,支持S3C2410A处理器。  1.Linux内核要点  和其他操作系统一样,Linux包含进程调度与进程间通信(IPC)、内存管理(MMU)、虚拟文件系统(VFS)、网络接口等,下图给出了Linux的组成及其关系:  Linux内核源代码包括多个目录:  (1)arch:包括硬件特定的内核代码,如arm、mips、i386等;  (

4、2)drivers:包含硬件驱动代码,如char、cdrom、scsi、mtd等;  (3)include:通用头文件及针对不同平台特定的头文件,如asm-i386、asm-arm等;  (4)init:内核初始化代码;  (5)ipc:进程间通信代码;  (6)kernel:内核核心代码;  (7)mm:内存管理代码;  (8)net:与网络协议栈相关的代码,如ipv4、ipv6、ethernet等;  (9)fs:文件系统相关代码,如nfs、vfat等;  (10)lib:库文件,与平台无关的strlen、strcpy等,如在

5、string.c中包含:char*strcpy(char*dest,constchar*src){char*tmp=dest;while((*dest++=*src++)!='')/*nothing*/;returntmp;}(11)Documentation:文档  在Linux内核的实现中,有一些数据结构使用非常频繁,对研读内核的人来说至为关键,它们是:  1.task_struct  Linux内核利用task_struct数据结构代表一个进程,用task_struct指针形成一个task数组。当建立新进程的时候,Linux

6、为新的进程分配一个task_struct结构,然后将指针保存在task数组中。调度程序维护current指针,它指向当前正在运行的进程。  2.mm_struct  每个进程的虚拟内存由mm_struct结构代表。该结构中包含了一组指向vm-area_struct结构的指针,vm-area_struct结构描述了虚拟内存的一个区域。  3.inode  Linux虚拟文件系统中的文件、目录等均由对应的索引节点(inode)代表。  2.Linux移植项目  mizi-linux已经根据Linux2.4内核针对S3C2410A这一芯

7、片进行了有针对性的移植工作,包括:  (1)修改根目录下的Makefile文件  a.指定目标平台为ARM:#ARCH:=$(shelluname-m

8、sed-es/i.86/i386/-es/sun4u/sparc64/-es/arm.*/arm/-es/sa110/arm/)ARCH:=arm  b.指定交叉编译器:CROSS_COMPILE=arm-linux-  (2)修改arch目录中的文件  根据本章第一节可知,Linux的arch目录存放硬件相关的内核代码,因此,在Linux内核中增加对S3C2410的支持,最主要就

9、是要修改arch目录中的文件。  a.在arch/arm/Makefile文件中加入:ifeq($(CONFIG_ARCH_S3C2410),y)TEXTADDR=0xC0008000MACHINE=s3c2410Endif  b.在archarm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。