嵌入式Linux系统在S3C2410开发板上移植的关键环节

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:gf930
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要是对基于嵌入式Linux在S3C2410开发板上的移值过程所需要的三个重要文件:BootLoader引导程序uboot、Linux内核的映像文件zImage、根文件系统rootfs的制作过程,以及怎样将这三个文件移植到自己开发板上所涉及到的一些关键环节作了详细的介绍说明。
  关键词:BootLoader引导;内核的映像;根文件系统;下载;烧写
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)33-1513-04
  The Key Transplant Processes of Embedded Linux System
  HE Zhi-hong1,2, HE Wei-min1
  (1. East China University of Technology, Fuzhou 344000, China; 2. Sontian Institute of Guangzhou University, Guangzhou 510515, China)
  Abstract: This paper mainly refers to three primary files when transplanting a based-Linux embedded system: uboot, zImage and rootfs, how to be done and transplant to our developed board in detail. And it also come to some key steps what our developed board refers to.
  Key words: BootLoader guidance; the core image; root file system; downloads; programming
  1 引言
  嵌入式Linux系统移植的工作能否正常进行以及移植后系统能否正常运行,与移植过程的几个小环节是分不开的。其实我们用于做嵌入式开发的ARM开发板,它们也是一台简单的电脑来的,也具备计算机系统的绝大部分接口。但是,嵌入式开发板上一般都没有提供类似个人电脑(PC机)在主板上的BIOS程序段,那么我们又怎样能使它们的部件运转起来呢?这只能靠我们用户自己去做一个类似BIOS的硬件启动程序,该程序我们称作BootLoader程序;另外就是即便是我们启动了硬件,如何让我们的开发板能够更好地发挥它的功能呢,那就是需要一个类似操作系统的大管家,而嵌入式系统一般来说,在硬件上是比较简单的(考虑到成本),所以,它不会象个人电脑那样有硬盘、光驱、软驱等之类的东西,甚至内存都是比较小的,因此,我们在定制嵌入式操作系统的时候,一般以“够用”为原则,不需要浪费太多的存储空间而节省生产成本,因此就需要对Linux操作系统的内核进行压缩映像,这就是我们说的Linux内核的映像文件。那么在Linux嵌入式系统的移植过程中涉及到三个文件,这三个文件分为:处于最底层的BootLoader引导程序、Linux内核的映像文件、另外就支持用户操作使用的根文件系统。所以,本文从这三个文件的制作过程中谈论我们要注意的关键环节。
  2 BootLoader引导程序uboot制作的关键环节
  bootloader的两大功能:一是下载功能,既通过网口、串口或者USB口下载文件到RAM中;一是对flash芯片的读写功能。具体来说:当用户输入启动Linux的命令的时候,u-boot会将 kernel 映像(zImage)和从 nand flash 上读到 RAM 空间中,为内核设置启动参数,调用内核,从而启动Linux。
  Uboot是严重依依赖于硬件的体系结构的,而我们从网上下载的u-boot源代码只是提供了一种框架结构,如果要制作适合我们自己的开发板的引导程序uboot,必需在它的基础上进行修改。下面介绍uboot制作过程中的关键步骤:
  1) 建立适合自己开发板的board平台目录
  可以参照board/smdk2410目录,在源码的board下建立自己的平台目录比如:gxy(这是开发板的名称起名叫gxy,可以依自己的喜好随意起),并将board/smdk2410目录中的所有文件拷贝到gxy目录下,将smdk2410.c更名为gxy.c。
  2) 用vi修改u-boot顶层目录下的Makefile文件
  在u-boot顶层目录下的Makefile文件中找到:
  smdk2410_config : unconfig
  @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
  在其后面添加:
  gxy _config : unconfig
  @./mkconfig $(@:_config=) arm arm920t gxy NULL s3c24x0
  各项的意思为:arm: CPU的架构(ARCH);arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录;gxy:开发板的型号(BOARD),对应于board/gec2410目录;NULL: 开发者/或经销商(vender);s3c24x0:片上系统(SOC)。
  3) 修改board/gxy/Makefile文件
  将 OBJS := smdk2410.o flash.o 改为 OBJS := gxy.o flash.o
  4) 以include/configs/smdk2410.h文件为蓝本复制一个include/configs/gxy.h文件。
  Cp include/configs/smdk2410.h include/configs/gxy.h
  5) 修改cpu/arm920t/config.mk文件。
  将 PLATFORM_CPPFLAGS =$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
  改为 PLATFORM_CPPFLAGS =$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu))
  6) 在uboot顶层目录中设置交叉编译环境变量后直行编译,执行下列语句:
  export PATH=/usr/local/arm/2.95.3/bin:$PATH; make gxy_config; make all ARCH=arm
  编译过程如果不出现错误,则可正常生成u-boot.bin了。
  3 Linux内核的映像文件zImage制作的关键环节
  当把Linux内核文件下载后,制作Linux内核的映像文件zImage需要经过以下几个环节:(假设用的内核版本为Linux2.6.8.1,编译器为ross-3.3.2)
  3.1 修改Linux内核顶层下的Makefile文件
  修改内核目录树根下的的Makefile,指明体系结构是arm,交叉编译工具是arm-Linux-。找到ARCH和CROSS_COMPILE,修改为:
  ARCH ?= arm
  CROSS_COMPILE ?= arm-Linux-
  3.2 设置flash分区
  在arch/arm目录中建立一个mach-gxy的文件夹,并将arch/arm/mach-s3c2410目录下的所有文件及文件夹复制到mach-gxy目录下,并将相应的文件名进行修改。再修改下面三个文件的相关信息:
  arch/arm/mach-gxy/devs.c; 指明分区信息
  arch/arm/mach-gxy/mach-smdk2410.c; 指定启动时初始化
  drivers/mtd/nand/gxy.c; 禁止Flash ECC校验
  3.2.1 内存分区信息
  
  内存分区信息如上图,则修改结构体partition_info[]为如下内容:
  static struct mtd_partition partition_info[] ={
  { /* 256kB */name: "boot", size: 0x00040000, offset: 0x0, },
  { /*1.75MB */ name: "kernel",size: 0x001C0000, offset: 0x00040000, },
  { /* 30MB */ name: "root", size: 0x01e00000,offset: 0x00200000, },
  { /* 32MB */ name: "user", size: 0x02000000, offset: 0x02000000,}
  };
  在结构体nandset中添加Nand Flash分区信息:
  struct s3c2410_nand_set nandset ={
  nr_partitions: 4, /* 指明partition_info中定义的分区数目 */
  partitions: partition_info, /* 分区信息表*/}};
  在结构体superlpplatform中提供Nand Flash芯片支持,
  struct s3c2410_platform_nand superlpplatform={ tacls:0,
  twrph0:30,
  twrph1:0,
  sets:
其他文献
《爱之链》是苏教版小学语文六年级的一篇小说。这是一曲颂扬人间互助友爱的赞歌。小说描写了发生在严冬里充满爱的连环故事:失业工人乔依在荒无人烟的野外帮助老妇人修好汽车,老妇人非常感激;老妇人在小餐馆里得到女店主热情照顾,也受到爱的感染,悄悄留钱资助;女店主发现老妇人留下的钱和纸条以后非常感动,安慰、鼓励丈夫乔依坚定生活的信心,“一切都会好起来的”……小说通篇流淌着爱的暖流,而“意料之外,情理之中”的艺
随着近几年教育改革的逐步深入,在核心素养引领下的语文学科教学越来越受到人们的重视。越来越多的教育工作者开始深入思考和探讨语文课堂教学,并不断对其进行优化与改革,以期进一步提高教学效率。《语文教学情道术》便是在这一背景下出版的内容实用的著作。该书作者是湖北省武汉市江夏区一中的特级语文教師程良焱。程老师从个人教学素养、教学理念、教学方法、教学技巧等多方面出发,结合自己多年的实践经验,围绕核心素养引领下
摘要:局域网ARP攻击会导致网络大面积的瘫痪,威胁整个网络的安全。该文通过对ARP攻击的分析,详细讨论了ARP攻击原理,提出几种常用的防范ARP攻击的方法。  关键词:ARP攻击;ARP病毒;ARP欺骗;ARP防范  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)32-1320-01  LAN ARP Attack Principle and Guard Agains
《义务教育语文课程标准(2011年版)》在阶段目标中明确指出:一到二年级的学生应“阅读浅近的童话、寓言、故事,向往美好的情境,关心自然和生命,对感兴趣的人物和事件有自己的想法,并乐于与人交流”,三到四年级的学生能“述说叙事性作品的大意,初步感受作品中生动的形象和优美的语言,关心作品中人物的命运和喜怒哀乐”。语文新课标对儿童阅读能力、语言表达能力提出明确要求的同时,也强调了语文承担着培养学生情感素养
文学教育是语文教学中不可或缺的构成部分,它承担着语文核心素养建构的具体功能,在语言的理解与运用、思维发展及审美能力的培养上发挥着举足轻重的作用。就小学生而言,以儿童文学为主体的文学教育能激活儿童潜在的认知结构,唤醒儿童的语言灵性。然而,如何在小学语文教学中渗透高质量的文学教育,还存在着诸多难题。比如,如何形成课外文学作品与课内作品的有机补充?如何有效地对课外文学作品进行施教,以实现学生文学素养的内
从广义上说,文化可以涵盖社会生活中政治、经济、科学、艺术、教育等众多方面。不同民族和国家表现出鲜明的特性,并在人民的性格、价值观、思维方式等方面呈现出不同的特点。随着科技的进步和时代的发展,不同民族文化问的交流与碰撞日益频繁,认识和理解不同的文化也逐渐成为人们工作与生活的常态。西北工业大学出版社出版、黄雯琴编著的《英美文化导读》一书,便是面向大众读者的一部英美文化普及性著作。该书结构严谨,分析透彻
在当下,发扬与推广自身文化势在必行。汉语作为中华文化开枝散叶的载体,对中国文化的传承与发展起到了不可替代的作用,也为世界了解中国打开了一扇窗户。因此,对外汉语教学的学科发展和人才培养不仅关乎汉语言教育教学的完善与创新,更关乎时代的需要、中国文化的推广。由姜丽萍著、北京语言大学出版社于2008年出版的《对外汉语教学论》一书,吸收了应用语言学研究与对外汉语教学研究的最新成果,并根据对外汉语教学的学科特
我在石阶上坐下来,看着这个五岁的小男孩,还在很努力地打那个蝴蝶结:绳子穿来穿去,刚好可以拉的一刻,又松了开来,于是重新再来;小小的手慎重地捏着细细的草绳。淡水的街头,阳光斜照着窄巷里这间零乱的花铺。我,坐在斜阳浅照的石阶上,愿意等上一辈子的时间,让这个孩子从从容容地把那个蝴蝶结扎好,用他五岁的手指。孩子你慢慢来,慢慢来。  ——《孩子,你慢慢来》首卷语  上了师范类大学之后忽然改变了阅读的风格,以
文学是一种具有丰富阐释性的特殊话语体系,既是传递文化信息的表意符号,又是一种具有文化、政治和性别诉求等蕴含的话语。因此,在探析华裔美国文学作品时不应只关注内容而忽视其形式,只关注其文学性而忽视其社会功能,要将华裔美国文学创作的形式与内容放在其所处的现实语境中去分析。换言之,要以美国多元文化语境为视野探析华裔美国文学。笔者在进行“华裔美国文学中作者的文化诉求研究”课题研究时,参考了寇才军的《突围异托
摘要:对现行的广告审查流程的弊端进行了分析,设计并实现了基于B/S架构的广告审查系统来辅助大众媒体单位的广告审查以及工商行政管理部门的广告监审,提高了广告审查的质量,降低了违法违规广告的发布率。  关键词:广告审查;B/S;ASP.NET2.0;存储过程  中图分类号:TP315 文献标识码:A文章编号:1009-3044(2008)36-2628-01  Design and Implement