当前位置:首页 > 述职报告 > 嵌入式系统就业前景_基于ARM9_2410EP的嵌入式Linux的研究和移植
 

嵌入式系统就业前景_基于ARM9_2410EP的嵌入式Linux的研究和移植

发布时间:2019-02-21 04:13:30 影响了:

  [摘 要]本文重点研究了嵌入式操作系统Linux基于ARM9微处理器的移植技术,通过交叉编译环境的建立、启动代码Bootloader的实现、制作嵌入式Linux内核以及建立一个据实情需要的根文件系统,成功实现了嵌入式操作系统Linux在三星S3C2410A微处理器的目标板ARM9_2410EP上的移植。
  [关键词]嵌入式操作系统Linux ARM 移植
  [中图分类号]TP399[文献标识码]A[文章编号]1007-9416(2010)02-0024-02
  
  1 引言
  嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统极为重要的组成部分。免费型的实时嵌入式操作系统目前主要有嵌入式Linux和μC/OS,μC/OS仅是一个实时内核,它只能提供给用户一些API函数接口。而嵌入式Linux的最大的特点是源代码公开并且遵循GPL协议,且其运行所需资源少,十分适合嵌入式应用。
  三星公司的嵌入式微处理器S3C2410A是基于ARM920T开发的低功耗系列芯片,本文实现了嵌入式Linux在基于三星S3C2410A微处理器的目标板ARM9_2410EP上的移植,为用户建立了一个嵌入式开发简易平台,更好的促进嵌入式系统的推广应用。
  2 从Linux到嵌入式操作系统Linux
  与传统的操作系统不同,Linux操作系统的开发一开始就在FSF(自由软件基金会组织)的GPL(GNU Public License)的版本控制之下,Linux内核的所有源代码都采用开放源代码的方式,其诸多特性都非常适合嵌入式的应用。但Linux最初并不是为嵌入式系统而设计的,要想把Linux应用于嵌入式系统,必须将Linux实时化、嵌入式化,这正是目前嵌入式开发的新热点。
  嵌入式Linux就是在嵌入式系统中使用的Linux。通常是将标准Linux进行相应的改造,再用作嵌入式计算机的操作系统。Linux的嵌入式改造主要围绕体积和实时性展开。与目前市场上的众多商业的实时系统相比,嵌入式Linux的内核稳定、功能强大、支持多种硬件平台并且拥有完全开放源代码、丰富的实用软件,可以提高用户的开发效率并提供丰富的资源保障。
  3 基于ARM9_2410EP的嵌入式Linux的研究和移植
  基于ARM9_2410EP的嵌入式Linux的移植过程主要分为以下几个重要步骤:
  (1)嵌入式Linux主机开发环境的建立;(2)启动程序Boot loader的实现;(3)内核kernel的移植;(4)根文件系统的实现;(5)烧写以上各部分到目标板ARM9_2410EP。
  3.1 嵌入式Linux主机开发环境的建立
  3.1.1 嵌入式Linux软件开发环境
  绝大多数Linux软件开发都是以native方式进行的,即本机(HOST)开发、调试、本机运行的方式。这种方式由于没有足够的资源在本机运行开发工具和调试工具,通常不适合于嵌入式系统的软件开发。于是交叉开发模式应运而生[2]。交叉开发模型如图1所示。
  这种在主机环境下开发,在目标板上运行的开发模式叫交叉开发。开发时使用开发主机上的交叉编译、汇编以及连接工具形成可执行的二进制代码,然后把可以执行文件下载到目标机上运行。
  建立交叉编译环境是进行嵌入式Linux移植的第一步,环境的建立需要许多软件模块协同工作。开发环境安装完成后会在根目录下生成两个目录:
  /s3c2410_linux/*嵌入式系统开发工作目录*/
  /opt/*交叉编译环境目录*/
  交叉编译环境建立后,需要对系统进行配置MINICOM、配置TFTP、配置NFS服务等工作。
  3.1.2 搭建基于ARM9_2410EP的嵌入式Linux硬件运行环境
  本文所使用的硬件平台是革新ARM9_2410EP试验箱。ARM9_2410EP的CPU是基于ARM920T内核的S3C2410。移植的移植工作的硬件环境如图2所示。
  开发主机端的PC使用COM1和ARM9_2410EP的串口直接相连接,完成对目标板的控制功能。通过交叉网线把试验箱连接到开发主机端PC的以太网接口,从而建立了原始IP连接,使得用链路层完成大批量数据的传送。
  3.2 启动程序Boot loader的实现
  嵌入式系统中,通常并没有像PC机中BIOS那样的固件程序,整个系统的加载启动任务就完全由Boot loader来完成。Boot loader[3]就是在操作系统内核运行之前运行的一段小程序,其主要运行任务就是将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
  Boot loader的启动通常可以分为stage1和stage2两个阶段[4]。Stage1主要包含依赖于CPU体系结构代码,比如设备初始化代码等。通常都用汇编语言来实现。stage2通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。
  现今比较成熟的启动程序Boot loader有PPC Boot、vivi和U-boot[4][5]等。这里使用的是PPC Boot。对PPC Boot编译后就可以看到该目录下有新生成的ppcboot.bin,将该文件复制到/tftpboot/下,以方便后面使用。
  3.3 嵌入式内核kernel的制作和移植
  把Linux用于嵌入式系统,需要有针对性地对Linux内核加以裁剪、修改和补充。Linux内核由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信[7]。整个代码分布如图3所示。
  移植工作的重点就是移植arch目录下的文件。编译前,首先需要对内核进行配置,这与对内存的大小和要实现的功能紧密相连的。合理的配置,能使生成的嵌入式Linux内核代码最优化。
  配置完成后,保存退出。依次输入如下命令,开始对上面配置好的Linux内核开始编译:
  [user]# make dep/*读取生成的配置文件,创建对应于配置的依赖关系树*/
  [user]# make clean/*完成删除前面步骤留下的文件,以避免一些错误*/
  [user]# make zImage/*实现完全编译上面配置好的Linux内核*/
  当内核编译完成后输入:
  [user]# make modules /*编译模块驱动程序*/
  至此内核的编译工作全部完成,我们可以看到在目录/arch/arm/boot/下有刚生成的编译文件zImage。把该文件复制到/tftpboot/目录中备用,以方便下载到目标板上。
  3.4 根文件系统的制作
  文件系统是Linux系统必备的部分,主要是一些系统文件和应用文件存储的地方,嵌入式系统中的文件系统是一个简化版,包括必要的目录和文件。
  根文件系统可以在已有的根文件系统基础上修改得到,也可以自己重新制作。根文件系统RAMDISK的制作过程包括准备目录、创建根文件系统、创建文件系统。按我们需要的大小所设计的RAMDISK文件系统建立好后只是一个基本的文件系统,用户需要将一些应用程序和一些必要的库软件包加入进去,最终成为一个实际可应用的根文件系统,并得到了压缩的根文件系统映像文件ramdisk.image.gz。
  3.5 移植各部分到目标板ARM9_2410EP
  在确保以上个步骤正确的情况下,正确把开发主机和目标板用下载线连接起来。至此,软硬件开发环境建立好了,就可以经过烧写引导程序ppcboot、Linux内核以及ramdisk文件系统开始下载,连接好系统后,用上电复位或者RESET的方式重新启动Linux,通过串口端就可以看到目标板上ppcboot的检测、引导内嵌Linux操作系统启动打印到串口的信息和Linux的整个启动信息。
  至此,嵌入式Linux在ARM9_2410EP的移植也基本完成。后期我们可以选定了国产优秀软件MiniGUI作为研究对象提供应用开发的友好接口。
  4 结语
  随着信息化、智能化、网络化的发展,嵌入式系统技术也将获得广阔的发展空间。本文在深入研究ARM体系结构及Linux操作系统的基础上,完成了嵌入式Linux在基于ARM9微处理器的三星S3C2410A的ARM9_2410EP目标板上的移植,建立了面向用户的更通用的嵌入式系统开发简易平台,提高了开发效率,促进了嵌入式系统在应用范围内的推广。
  
  [参考文献]
  [1] 张仑.32位嵌入式系统硬件设计与调试,北京:机械工业出版社,2005.
  [2] 杨洁.赵刚.嵌入式系统中BootLoader的编译与移植,四川大学学报,2007.4.
  [3] 陈文智等编著.嵌入式系统开发原理与实践,北京:清华大学出版社,2005.
  [4] 谢蓉,巢爱棠著.Linux基础及应用,北京:中国铁道出版社,2005.1.
  [5] 冯世奎.Linux嵌入式系统根文件系统地选择与制作,成都信息工程学院学报,2006,6.
  [基金项目]
  河南省教育厅自然科学研究项目(2007510022)。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3