基于ARM2410 嵌入式Linux内核的编译与移植

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:xhbing520
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要介绍了嵌入式Linux内核以及在ARM平台下的编译与移植过程。
  关键字:Linux 内核;移植;编译
  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2008)15-20000-00
  
  Compile And Transplant The Embedded Linux Kernel Based on ARM2410
  ZOU Qiu
  (Computer Dept., Nanbo Polytechnic, Dongguan 523083, China)
  Abstract:This paper mainly introduces the Embedded linux kernel’s Compilation and transplantation at the platform of ARM.
  Key words:Linux kernel;transplant;compile
  
  1 Linux内核简介
  
  Linux内核,是Linux操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
  嵌入式linux内核指的是针对具体的嵌入式设备硬件平台,裁减掉一些不必要的功能后,针对该具体的硬件平台编译产生的一个Linux内核。嵌入式Linux通常都需要裁减,主要目的是节省系统资源,提高系统运行效率。同时嵌入式Linux作为一种嵌入式操作系统有其得天独厚的优势,主要表现在:
  首先,Linux是开放源代码的,所有的内核源程序都可以在 /usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;
  其次,Linux的内核小、效率高,内核的更新速度很快;
  再次,Linux是免费的操作系统,在价格上极具竞争力。
  
  2 Linux内核移植准备
  
  所谓Linux移植就是把Linux操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概念目前在嵌入式开发领域讲的比较多。其基本内容是:获取某一版本的Linux内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于我们目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC机)的新操作系统,对该系统进行针对我们目标平台的交叉编译,生成一个内核映象文件,最后通过一些手段把该映象文件烧写(安装)到我们目标平台中。而通常对Linux源码的改写工作难度较大,它要求你不仅对Linux内核结构要非常熟悉,还要求你对目标平台的硬件结构要非常熟悉。所以这部分工作一般由目标平台提供商来完成。我们所要做的就是从其网站上下载相关版本Linux内核的补丁(Patch),把它打到我们的Linux内核上,再进行交叉编译就可以。
  其基本过程如下(以Linux2.6.24为例):
  到ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.6/上下载Linux2.6.24内核及其关于ARM平台的补丁(如:Patch-2.6.24.gz)。给Linux2.6.24打补丁:使用命令zcat ../patch-2.6.24.gz | patch –p1(前面../表示补丁文件放在内核文件上一层目录),
  然后准备交叉编译环境:交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-gcc,glibc等。
  接下来修改内核目录下的makefile文件,主要是以下几行:
  注释掉ARCH:=$(shell uname –m | sed –e s/i.86/i386/-e s/sun4u/sparc64/ -e s/arm. \ */arm/ - e s/sa110/arm/)这一行。
  将ARCH := 改为 ARCH := arm
  将CROSS_COMPILE:=改为 CROSS_COMPILE := 交叉编译工具中arm-linux所在目录/arm-linux-(如:CROSS_COMPILE := /usr/local/arm/2.95.3/bin/arm-linux-)此后就可以进行编译。
  
  3 关于交叉编译环境
  
  交叉编译环境的建立最重要的就是要有一个交叉编译器。所谓的交叉编译就是:利用运行在某机器上的编译器编译某个源程序生成在另一台机器上运行的目标代码的过程。这里我们主要用到的编译器是arm-linux-gcc,它是gcc的arm改版。无论编译器的功能有多么强大,但它的实质都是一样的,都是把某种以数字和符号为内容的高级编程语言转换成机器语言指令的集合。具体安装和配置工作我们一般不需要自己动手了,只要直接从网上下载相关工具包安装即可。
  
  4 Linux内核裁减
  
  Linux内核移植过程中最重要的一步就是内核裁减。由于目标板硬件平台的不同以及内核版本的不同,所以涉及的内容往往也有很大不同。下面我们以已改造好的ARM-linux,针对ARM2410平台来看看内核的裁减主要涉及的地方。
  4.1 Linux内核裁减的配置菜单命令
  Linux内核裁减的配置菜单命令有好几个版本,运行:
  (1)make config:基于文本的最为传统的配置界面,进入命令行,可以一行一行的配置,这不好使用,并且很烦琐。
  (2)make menuconfig:基于文本菜单的配置界面,是字符终端下常用的方式。
  (3)make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。
  这三个命令中,make xconfig的界面最为友好,如果机器可以使用Xwindow,那么就推荐你使用这个命令,如果不能使用Xwindow,那么就可以使用make menuconfig。界面虽然比上面一个差点,总比make config的要好多了。所有内核配置菜单都是通过Config.in经由不同脚本解释器产生.config,在内核配置完成后就就会在当前目录下产生一个.config的配置文件,当然我们也可以直接修改此文件来配置内核。
  选择相应的配置时,有三种选择,它们分别代表的含义如下:
  * -----将该功能编译进内核
  空-----不将该功能编译进内核
  M-----将该功能编译成可以在需要时动态插入到内核中的模块
  4.2 Linux内核裁减的配置选项
  在内核移植的过程中,最烦杂的事情就是配置内核选项了,但实际配置时大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
  针对ARM2410平台要配置的内核选项主要有:
  (1) 配置MTD,要使用Cramfs和YAFFS文件系统,首先需要配置MTD.
  在Memory Technology Devices (MTD) --->选项中选中如下选项:
  <*> Memory Technology Device (MTD) support MTD支持
  [*]MTD partitioning support MTD分区支持
  <*> Direct char device access to MTD devices 字符设备的支持
  <*> Caching block device access to MTD devices 块设备支持
  NAND Flash Device Drivers---> 对NAND Flash的支持
  <*> SMC Device Support
  <*> Simple Block Device for Nand Flash(BON FS)
  <*> SMC device on S3C2410 SMDK
  [*] Use MTD From SMC
  (2)配置文件系统
  <*> Kernel automounter version 4 support (also supports v3)文件系统自动挂载支持
  <*> DOS FAT fs supportt fs support 对DOS/FAT文件系统的支持
  <*> VFAT (Windows-95) fs support 对FAT32文件系统的支持
  <*> Yaffs filesystem on NAND 对YAFFS文件系统的支持
  <*> Compressed ROM file system support 对Cramfs文件系统的支持
  [*] Virtual memory file system support (former shm fs)对temfs文件系统的支持
  <*> Simple RAM-based file system support 对RAM文件系统的支持
  [*] /proc file system support 对/proc和/dev设备文件系统的支持
  [*] /dev file system support (EXPERIMENTAL) /dev设备文件系统支持
  [*] Automatically mount at boot 启动时自动挂载的支持
  [*] /dev/pts file system for Unix98 PTYs
  Network File Systems---> 对NFS网络文件系统的支持
  <*> NFS file system support
  [*]Provide NFS v3 client support
  (3)配置系统类型,主要是CPU类型
  (S3C2410-based)ARM system type 设置ARM的系统类型为ARM2410
  [M] S3C2410 USB function support 对USB功能的支持
  [*] ARM920T CPU idle 设置处理器的类型
  [*] ARM920T I-Cache on
  
  5 内核的编译
  
  在完成内核的裁减之后,内核的编译就是一个非常简单的过程。你只要执行以下几条命令就行:
  (1) make clean
  这条命令是在正式编译你的内核之前先把环境给清理干净。有时你也可以用make realclean或make mrproper来彻底清除相关依赖,保证没有不正确的.o文件存在。
  (2)make dep
  这条命令是编译相关依赖文件。
  (3)make zImage
  这条命令就是最终的编译命令。有时你可以直接用make(2.6.X版本上用)或make bzImage(给PC机编译大内核时用)
  完成后,就会编译出一个压缩内核映像文件,压缩内核映像所在路径为:arch/arm/boot/zImage
  (4) make install
  这条命令可以把相关文件拷贝到默认的目录,当然在给嵌入式设备编译时这步可以不要,因为具体的内核安装还需要你手工进行。
  (5)make modules
  这条命令是编译在配置时选择为模块的,即选项前为[M]的。如果你的内核配置选项中有选择编译为模块的,就需要此命令。
  (6)make modules_install
  这条命令将make modules 生成的模块文件复制到相应的目录。在给嵌入式设备编译时这步也可以不需要。
  
  6 结束语
  
  最后我们就可以将上面第三步产生的压缩内核映像文件烧写到嵌入式系统中去,最终完成嵌入式系统内核的移植。
  
  参考文献:
  [1] 孙纪坤,张小全. 嵌入式LINUX系统开发技术祥解—基于ARM. 北京:人民邮电出版社 2006.
  [2] 魏洪兴,胡亮,曲学楼. 嵌入式系统设计与实例开发实验教材—基于ARM9微处理器与Linux操作系统. 北京:清华大学出版社,2005.
  [3] 于明,范书瑞,曾祥烨. ARM9嵌入式系统设计与开发教程. 北京:电子工业出版社 2006.
  
  收稿日期:2008-03-05
  作者简介:邹球,男,湖南人,在读研究生,主要研究方向:网络,嵌入式系统。
其他文献
书名:中国音乐中的文学  作者:闫笑雨、尚红  出版社:广东教育出版社  出版时间:2016年  ISBN:9787554810330  定价:42元  文学与音乐都是艺术,只不过文学是以文字来表现作者情感,而音乐是以声音来表现作者情感。文学与音乐虽然是两种不同的艺术形式,但是却有着千丝万缕的联系。我国古代很多艺术是文学与音乐的结合体,例如,清商乐、元散曲以及宋元戏曲等,这些都是我国艺术发展史上宝
摘要:介绍了基于Authorware附带的数据库编程接口Odbc.u32的打开数据库、SQL语句的执行、关闭数据库等3个功能,并详细介绍开发电子词典的关键技术。  关键词:Authorware;数据库;电子词典  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30533-02    Developing Electronic Dictionary Based o
摘要:为培养具有创新精神和实践能力的高素质计算机人才,需要不断改革和完善教学模式。MCLA教学模式在计算机课程教学中的成功应用,使我们看到传统教学模式改革的必要性。本文探讨了MCLA的教学方法及其实施的关键环节,分析了这种教学法的特点,最后讨论了高校计算机课中引入MCLA教学模式的要求条件。  关键词:计算机教学;MCLA;ISAS;教学模式  中图分类号:G642 文献标识码:A文章编号:100
摘要:网卡、软件、ADSL调制解调器、线路等故障及分析。  关键词:ADSL;故障  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)21-30432-02    On ADSL Broadband Network and Common Fault Analysis  ZHANG Bao-jun   (Computer Communications,Huaibei Mi
摘要:小说《赴宴者》勾勒出了一幅亦真亦假、亦虚亦实的北京社会生活画面,严歌苓独具匠心,让“记者”董丹带领读者在一同享受美味盛宴的同时,跨越中西文化,寻求心灵的回归,也给广大读者献上了一场各种文化纷繁交织的文化“盛宴”,使读者也成为回归心灵家园的“赴宴者”。  关键词: 严歌苓 《赴宴者》 文化 心灵回归  一、引言  在外国文学迅速发展的新千年,许多美国华裔文学家不断走进大家的视野,《赴宴者》的作
摘要:《义务教育语文课程标准(2011年版)》反思了经过十年课改实践所暴露的语文教学存在的一些误区,理清了一些模糊的认识,纠正了一些较为偏激的认识与做法,这些纠偏对大学语文的教学也颇具启发意义。本文从语文教什么、怎样教以及课程效果如何评价三方面阐述了《义务教育语文课程标准》的修订对大学语文教学改革的启示。  关键词:课程标准 大学语文 教学改革  引言  《义务教育语文课程标准(2011年版)》(
编者按  如何用好统编本语文教材?这是当前乃至之后很长时间内教师们需要面对的问题。尤其是对于四至六年级的老师来说,不仅面临教材中很多新的教学内容,还要解决“新旧”教材之间的衔接问题。那么,除了了解教材的编写理念、框架等,在宏观上,我们应该以怎样的视角来看待统编本教材?在使用中应该遵循怎样的原则?具体到教学中,又应如何处理教材变化带来的教学内容和方法上的改变?有哪些具体策略?  本期,统编本教材总主
摘要:IP子网与VLAN都属于网络分组技术,两项技术既有相互联系,又有本质区别,在实际应用中各有千秋,本文从IP子网和VLAN的技术入手,归纳了这两项技术相同点和不同点,以及两项技术在实际组网中的应用。  关键词:IP子网;VLAN;技术;比较;应用。  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-1pppp-0c    1 IP子网技术及其作用    我们现
摘要:Java语言是高职高专院校进行程序设计教学的一门重要编程语言。结合高职高专的培养目标及Java语言的特点,本文从内容的安排、实例的选取、编程思想的培养、项目实训的有效开展等几方面对如何提高高职高专Java教学效果进行了探讨和研究。  关键词:高职高专;Java;教学   中图分类号:G642文献标识码:A文章编号:1009-3044(2008)09-11682-01    Research
摘要:C 程序良好的可移植性使得C 语言成为程序设计人员的首选工具语言,而保证这一特性必需使用标准化的C 编码。国内高校尤其是高职院校的教材中,存在着大量非标准化的C 程序,不利于培养具有标准化C 编程风格的学生。本文从C 发展史、教育工作者和教材规范化等多个角度出发,分析了这一问题产生的原因,并提出了相应的解决办法。  关键词:C 标准;可移植性;高等教育  中图分类号:TP311