uClinux在嵌入式系统中的移植研究
来源:互联网 发布:25岁学游戏编程 编辑:程序博客网 时间:2024/05/21 17:04
作者:苏义鑫,王子毅,张素文 时间:2007-04-28 来源: |
摘要:uClinux是针对微控制领域而设计的Linux操作系统,继承了Linux的众多优点,广泛应用于嵌入式系统中。针对不同的嵌入式处理器移植uClinux已成为嵌入式系统研究的一个重点。本文选择以三星公司生产的S3C44B0处理器为核心的硬件平台,详细介绍uClinux移植到S3C44B0的方法和过程。 关键词:嵌入式系统;uClinux;移植;ARM 引言 uClinux作为Linux衍生操作系统,具有支持多任务、内核精简、高效、稳定和源代码开放等优点,专门应用于无MMU微处理器的嵌入式系统。将uClinux应用于嵌入式系统已经成为许多嵌入式开发人员的选择。本文针对基于三星公司生产的ARM系列微处理器S3C44B0的硬件平台,详细论述移植uClinux的过程,主要包括BootLoader的设计,uClinux内核的修改,交叉编译环境的建立,uClinux内核的配置,编译及连接,映像文件的下载及运行。 硬件环境 硬件平台以S3C44B0为核心,采用的外部晶振频率为10MHz,内核主频最高可达到64MHz;通过RS232接口与上位机通讯;外接JTAG接口,支持在线调试;采用SST39VF1601(2M字节)作为程序存储器,对应的地址空间为0x00000000-0x001fffff;采用HY57VF641620(8M字节)作为数据存储器,对应的地址空间为0x0c0000000x0c7fffff。硬件框图如图1所示。
uClinux的移植 移植思路 Bootloader的设计 在终端的提示符“/"下输入0、1或2分别代表选择功能0、功能1或功能2。BootLoader执行对应的操作,功能0利用TFTP网络传输程序到SDRAM,默认下载地址为0x0c000800;功能1下载程序到flash,uClinux的映像文件image.rom的下载地址为0x00010000,Romfs.img的下载地址为0x00100000。这两个下载地址不是任意的,前一个地址与BootLoader的功能2有关;后一个地址与uClinux的文件系统定位有关。具体确定方法在下文论述;功能2启动烧写到Flash的uClinux。 因为本文的重点是uClinux的移植,所以这里不再详述BootLoader的具体实现过程,只介绍一下与uClinux相关的地方:(1)因为uClinux要利用S3C44B0的串口输出一些信息,所以BootLoader初始化过程中要设定处理器的主频,uClinux根据这个主频来设定串口寄存器,得到一定数值的波特率。本文选择的主频为61Mhz,波特率为115200。(2)执行功能2时,会调用一个MoveRun函数: Void MoveRun(void) (3)启动uClinux后,image.rom在0xc300000处自解压,并在0x0c000000处放置uClinux的中断向量表。即使uClinux内核已经得到处理器的控制权运行,一旦发生中断,处理器还是会自动跳转到从0x0地址开始的第一级中断向量表中的某个表项(依赖于中断类型)处读取指令运行。所以在编写BootLoader时,地址0x0处的一级异常中断矢量表只需简单地包含向0x0c000000处的中断向量表的跳转指令就可以,这样就能够正确地将发生的事件交给uClinux的中断处理程序来处理,BootLoader的第一级异常中断向量表如下所示: bResetHandler; //跳转到初始化部分 uClinux内核的修改 首先,从网站(www.uClinx.org)下载源码uClinuxdist-20040408,但这个发行包中的内核对S3C44B0X处理器的支持是不完整的,必须为内核打上补丁uClinux-2.4.24.patch(可以从http://www.hzlitai.com.cn下载),然后在终端下执行:patch-p0 (1)压缩内核代码起始地址修改 ZTEXTADDR代表映像文件image.rom自解压的起始地址,它的值是由BootLoader的功能2决定的。执行功能2,将image.rom从Flash转移到SDRAM的地址0x0c300000,内核自解压,所以ZTEXTADDR必须和这个值相同。ZRELADDR代表内核解压后代码输出起始地址。 (2)处理器配置选项的修改 (3)内核起始地址的修改 (4)ROM文件系统的定位修改 #ifdefCONFIG_BOARD_MBA44 (5)定义uClinux异常中断向量表的起始地址 (6)定义CPU体系结构和交叉编译器 交叉编译环境的建立 uClinux内核的配置,编译及连接 配置完成后,开始编译内核,在终端分别执行makedep,makelib_only,makeuser_only,makeromfs,makeimage,make。当内核的编译工作完成后,在目录uClinux/images下会生成我们需要的映像文件image.rom,image.ram,romfs.img。 uClinux内核的下载与执行 结束语 对于嵌入式系统开发人员来说,要将嵌入式操作系统应用到嵌入式系统中,首先要做的工作是根据不同的硬件平台移植操作系统,掌握移植的方法非常重要。本文所述的移植方法已经成功应用于多个项目的开发。所述的移植虽然是针对ARM处理器芯片S3C44B0,但重点阐述的是移植的思路和方法,对将uClinux移植到其他处理器为核心的硬件平台也有借鉴作用。 本文创新点:本文从如何将嵌入式操作系统uClinux与特定硬件相结合出发,分析移植uClinux到S3C44B0的过程。作者将自己成功移植所修改的部分作了详细的分析。有利于应用uClinux的人员快速理解,移植uClinux到特定的硬件平台。 |
- uClinux在嵌入式系统中的移植研究
- 嵌入式Linux系统中的GUI系统的研究与移植
- 嵌入式Linux系统中的GUI系统的研究与移植
- Minigui V1.3.3在uClinux中的移植经验总结
- DE2上移植uClinux系统
- uclinux系统的进一步移植
- uclinux下的sqlite嵌入式数据库移植
- 嵌入式数据库sqlite在Motorola Coldfire + uclinux下的移植 [原创]
- uClinux 在 S3C4510B 嵌入式开发板上的移植和开发详解
- [转载] S3C4510上嵌入式Web服务器-boa在uclinux下的的移植
- uClinux 在 S3C4510B 嵌入式开发板上的移植和开发详解
- S3C4510上嵌入式Web服务器-boa在uclinux下的的移植
- uClinux 在 S3C4510B 嵌入式开发板上的移植和开发详解
- lorawan在嵌入式系统中的实现--节点端(三)--LoraWan 终端移植调试(1)
- uclinux + nios (UCLinux在NIOS上的移植)
- uClinux嵌入式系统开发过程控制
- 嵌入式系统 操作系统 uC/OS uClinux
- arm+uClinux的嵌入式系统的开发
- 顶得住?还是顶不住?不是一道选择题!
- Aop(Aspect-Oriented Programming)介绍 zz
- 多媒体基础知识(软考复习资料)
- JS定时调用模型
- 从应用层设置mx31-pdk板的lcd背光亮度
- uClinux在嵌入式系统中的移植研究
- 深入 Java 调试之第1部分:揭开 JPDA 面纱
- 在 Ajax 应用程序上使用 Nagios
- JPEG 原理详述及在嵌入 Linux 中的应用
- Mercurial - 方便控制、强扩展性的分布式版本控制系统
- 在 AIX 平台下编译安装 Sendmail技巧
- 使用 WebSphere sMash 为 Google Gadget提供支持
- 聚焦SOA 和 IBM 产品
- 个人创业十大秘诀