文档详情

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

发布:2015-07-26约7.72千字共8页下载文档
文本预览下载声明
ARM 的嵌入式Linux 移植体验之操作系统(上) 作者: 宋宝华 摘要 本章介绍了嵌入式Linux 的背景、移植项目、init 进程修改和文件系统移植,通过这些步骤, 我们可以在嵌入式系统上启动一个基本的Linux 。 关键词:ARM ,嵌入式Linux ,移植 在笔者撰写的《C 语言嵌入式系统编程修炼之道》一文中,主要陈诉的软件架构是单任务无 操作系统平台的,而本文的侧重点则在于讲述操作系统嵌入的软件架构,二者的区别如下图: 嵌入式操作系统并不总是必须的,因为程序完全可以在裸板上运行。尽管如此,但对于复杂 的系统,为使其具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、 消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,很 有必要针对特定的硬件平台和实际应用移植操作系统。鉴于Linux 的源代码开放性,它成为 嵌入式操作系统领域的很好选择。国内外许多知名大学、公司、研究机构都加入了嵌入式 Linux 的研究行列,推出了一些著名的版本: ·RT-Linux 提供了一个精巧的实时内核,把标准的 Linux 核心作为实时核心的一个进程同用 户的实时进程一起调度。RT-Linux 已成功地应用于航天飞机的空间数据采集、科学仪器测 控和电影特技图像处理等广泛的应用领域。如NASA(美国国家宇航局)将装有RT-Linux 的设 备放在飞机上,以测量Georage 咫风的风速; ·uCLinux (Micro-Control-Linux ,u 表示Micro ,C 表示Control )去掉了MMU (内存管理) 功能,应用于没有虚拟内存管理的微处理器/微控制器,它已经被成功地移植到了很多平台 上。 本章涉及的mizi-linux 由韩国mizi 公司根据Linux 2.4 内核移植而来,支持S3C2410A 处理 器。 1.Linux 内核要点 和其他操作系统一样,Linux 包含进程调度与进程间通信(IPC)、内存管理(MMU)、虚拟文件 系统(VFS)、网络接口等,下图给出了Linux 的组成及其关系: Linux 内核源代码包括多个目录: (1)arch :包括硬件特定的内核代码,如arm、mips 、i386 等; (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 等,如在string.c 中包含: char * strcpy(char * dest,const char *src) { char *tmp = dest; while ((*dest++ = *src++) != \0) /* nothing */; return tmp; } (11)Documentation :文档 在Linux 内核的实现中,有一些数据结构使用非常频繁,对研读内核的人来说至为关键,它 们是: 1.task_struct Linux 内核利用task_struct 数据结构代表一个进程,用task_struct 指针形成一个task 数组。 当建立新进程的时候,Linux 为新的进程分配一个task_struct 结构,然后将指针保存在task 数组中。调度程序维护current 指针,它指向当前正在运行的进程。 2.mm_struct 每个进程的虚拟内存由mm_struct 结构代表。该结构中包含了一组指向vm-area_struct 结构 的指针,vm-area_struct 结构描述了虚拟内存的一个区域。 3.inode Linux 虚拟文件系统中的文件、目录等均由对应的索引节点(inode)代表。 2.Linux 移植项目 mizi-linux 已经根据Linux 2.4 内核针对S3C2410A 这一芯片进行了有针对性的移植工作,包 括: (1)修改根目录下的Makefile 文件 a.指定目标平台为ARM :
显示全部
相似文档