Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2278203
  • 博文数量: 668
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 8588
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 19:22
文章分类

全部博文(668)

文章存档

2011年(1)

2010年(2)

2009年(273)

2008年(392)

分类:

2008-06-15 15:44:55

在笔者撰写的《》一文中,主要陈诉的软件架构是单任务无操作系统平台的,而本文的侧重点则在于讲述操作系统嵌入的软件架构,二者的区别如下图:



   嵌入式操作系统并不总是必须的,因为程序完全可以在裸板上运行。尽管如此,但对于复杂的系统,为使其具有任务管理、定时器管理、存储器管理、资源管理、 事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,很有必要针对特定的硬件平台和实际应用移植操作系 统。鉴于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;
}

作者:宋宝华   更新日期:2006-11-21

阅读(1132) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~