




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3嵌入式Linux系统设计报告一、硬件设备介绍此次实验用的板子是韦东山的JZ2440V2, JZ2440V2是一款基于ARM9的 开发板,采 用Samsu ng S3C2440芯片,并采用专业稳定的CPU内核电源芯片 和复位芯片来保证系统 运行时的稳定性。在进行器件地址说明之前,有一点需要 注意,nGCSO片选的空间在不同的 启动模式下,映射的器件是不一样的。在NAND Flash启动模式下,内部的4KBytes BootSram被映射到nGCSO片选的空间;在Nor Flash启动模 式下(非Nand Flash启动模式),与nGCSO相连的外部存储器Nor Flash就被映射到nGCSO片
2、选的空间SDRAM 地址空间:0x30000000 0x34000000o嵌入式Linux系统的移植主要有UBoot、Linux内核、文件系统这三部分。Uboot是在系统上电时开始执行,初始化硕件设备,准备好软件环境,然后才调用Linux操作 系统内核。文件系统是Linux操作系统中用来管理用户文件的内核软件层。文件系统包括根文 件系统和建立于Flash内存设备之上文件系统。根文件系统包括系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软 件,并作为存储数据读写结果的区域。Linux系统移植步骤1. 准备工作,包括下载源码、建立交叉编译环境等。交叉开发是指在开发主机上安 装开
3、发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。2. 配置和编bootloader (引导装载程序)。通过这段小程序,可以初始化硬 件设备、 建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准 备。3. 配置和编译Linux内核,对其进行相应的裁剪,修改内核以支持相关的硕件设备。4. 为大容量NAND Flash移植YAFFS文件系统,并将该文件系统加入Linux内核中。5. 制作RAMdisk来挂载根文件系统。Linux系统中的文件和设备是通过文件系统来组 织的。文件系统的存在使得数据和设备可以被有效而透明地存取访问。一个linux的最简
4、根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使 用的软件和库,以及所有用来为用户提供基本支持的架构和指令。6. 烧写、调试系统;如果调试出错,则需要重新配置,返回上述步骤(2) o三、U-Boot移植3 1 U-Boot 简介U-Boot全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxR0M、PPCBOOT逐步发展演化而来。其源码目录、编译形式 与Linux内核 很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序 的简化,尤其是一些设备的 驱动程序,这从U-Boot源码的注释中能体现这一点。但是UBoo
5、t不仅仅支持嵌入式Linux 系统的引导,当前,它还支持NetBSD,VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统 是 Open BSD, NetBSD, FreeBSD,4.4BSD, Li nux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOSo 这是 U-Boot 中 Universal 的一层含义, 另外一层含义则是U-Boot除了支持PowerPC系列的 处理器外,还能支持MIPS、x86、 ARM
6、、NIOS、XScale等诸多常用系列的处理 器。这两个特点正是U-Boot项目的开发目标, 即支持尽可能多的嵌入式处理器 和嵌入式操作系统。就目前来看,UBoot对PowerPC系列 处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002 年11月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上 归功于U-Boot的维护人德国DENX软件工程中心 Wolfgang Denk 以 下简称W.D本人精 湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植
7、工作的嵌入式开发人员正 如火如荼地将 各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。32 U-Boot移植的方法U-Boot移植方法当前,对于U-Boot的移植方法,大致分为两种。一种是先用BDI2000 创建目标板初始运行环境,将U-Boot镜像文件u-boot.bin下载到目标板RAM中的指定位 置,然后,用BDI2000进行跟踪调试。其好处是不用将U-Boot镜像文件烧写到FLASH中 去。但弊端在于对移植开发人员的移植调试技 能要求较高,BDI2000的配置文件较为复杂。 另外一种方法是用BDI2000先将U-Boot镜像文件烧写到FLASH
8、中去,然后利用GDB和BDI2000进行调试。这种方法所用 BDI2000的配置文件较为简单,调试过程与UBoot移植后运行过程相吻合,即U-Boot先从 FLASH中运行,再重载至RAM中相应位置,并从那里 正式投入运行。唯一感到有些麻烦的 就是需要不断烧写FLASH。但考虑到FLASH常规擦写次数基本为10万次左右,作为移植U Boot,不会占用太多的次数,应 该不会为FLASH烧写有什么担忧! UBoot移植要点 BDI2000的配置文件。如果采用第二种移植方法,即先烧入FLASH的方法,配置项只需 很少几个,就 可以进行U-Boot的烧写与调试了。对PPC 8xx系列的主板,可参考DU
9、LG文 档 中TQMSxx的配置文件进行相应的修改。3.3移植U-Boot的常见问题在移植UBoot的过程中会遇到很多问题,最主要的是一开始无法启动U-Booto代码中很 多地方设置有误都会导致无法启动,对于Stagel的代码来说,系统的出错信息是无法打印到串口或者其他设备的,此时可以使用JTag调试器调试目标开发板。对于汇编编写的代码,一般都与系统硬件息息相关,在编写的时候需要非 常仔细。最好准备好ARM体系结构手册和S3C2440A芯片手册,并 且认真阅读编程模型相 关的章节,对硬件的初始化流程要细心分析。四、Linux内核移植4.1 内核简介Linux内核主要由5个模块构成,它们分别是:
10、进程调度模块、内存管理模 块、文件系统 模块、进程间通信模块和网络接口模块。进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能够 公平合理地访问CPU,同时保证内核能及时地执行硕件操作。内存管理模块用于确保所有进 程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存 容量。并可以 利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。文 件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设 备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而
11、提供并支持与其他操作系统兼容的多种文件系统格式。进程间通信 模块子系统用于支持多种进程间的信息交换方式。网络接口模块提供对多种网络通信标准的访问并支持许多网络硕件。42内核移植要点Linux的代码完全开放以及其良好的结构设计非常适于嵌入式系统。移植Linux系统包括 内核、程序库和应用程序,其中最主要的就是内核移植。由于Linux内核的开放性,出现了许 多针对嵌入式硕件系统的内核版本,其中著名的包括卩cLinux RT-Linux等。Linux本身对内 存管理(MMU )有很好的支持。因此,在移植的时候首先要考虑到目标硬件平台是否支持MMUo以ARM平台为例,ARM7内核的CPU不支持MMU,
12、无法直接把Linux内核代码移植到ARM7核 的硕件平台 上。卩cLinux是专门针对ARM7这类没有MMU的硬件平台上设计的,它精简了 MMU部分 代码。本实验的目标平台是S3C2440A,该处理器基于ARM9核,支持MMU,可以直接移植Linux 26版本的内核代码。4.3.移植Linux内核对硬件的要求1 目标平台目标平台包括了嵌入式处理器和周围器件,处理器可能整合了一些周围器 件,如中断控 制器、定时器、总线控制器等。在移植之前需要确定被移植系统对外部设备和总线的支持情 况。本书的ARM开发板采用JZ2440V2平台,在S3C2440A外围连接了许多外围设备,包括NOR Flash存储
13、器、NANDFIash存 储器、网络 接口芯片、USB控制器等。在S3C2440A处理器内部集成了许多常用的控制器以及嵌入式领 域常用的总线控制器。对于移植Linux内核来说,操作处理器内部的控制器要比外部的设备容易得多。2 内存管理单元(MMU)前面提到过MMU,对于现代计算机来说,MMU负责内存地址保护、虚拟 地址和物理地 址相互转换工作。在使用MMU的硕件平台上,操作系统通过MMU可以向应用程序提供大于 实际物理内存的地址空间,使应用程序获得更高性能。Linux的虚拟内存管理功能就是借助 MMU实现的。在移植的时候要考虑目标平台的MMU操作机制,这部分代码是较难理解的, 最好能在相似代码
14、基础上修改,降低开发难度。3 内存映射嵌入式系统大多都没有配备硕盘,外部存储器只有Flash,并且系统内存也非常有限。内存控制器(Memory Controller)负责内部和外部存储器在处理器地 址空间的映 射,由于硬件预设的地址不同导致每种平台内存映射的地址也不同。在移植时需要参考硕件 的用户手册,得到内存地址的映射方法。4 存储器由于嵌入式系统多用Flash存储器作为存储装置。对于文件系统来说,在PC流行的 ext2> ext3文件系统在嵌入式系统无法发挥作用。幸好Linux支持许多文件系统,针对Flash 存储器可以使用JFFS2文件系统。在移植的时候,不必要的文件系统都可以裁剪
15、掉。五' 文件系统移植5.1 文件系统简介文件系统是Linux操作系统的重要组成部分,Linux文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结 构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。Linux和Windows文件类型最显着的区别就是Linux对目录和设备都当着文 件来进行处 理,这样就简化了对各种不同类型设备的处理,提高了效率。Linux文件类型最主要的有四种:(D 普通文件:包括文本文件,Shell脚本,二进制可执行程序和各类型的数据(2) 目录文件:在Linux中,目录也是文件,它们包
16、含文件名和子目录名以及指向那些文件和子目录的指针。目录文件时Linux中存储文件名的唯一地方,当把文件和目录相对应起来,也就是用指针将其连接起来之后,就构成了目录文件,因此,在对目录文件进行操作时,一般不涉及文件内容的操作,而只是对目录名和文件名的对应关系进行操作。另外, 在Linux系统中的每个文件都被赋予一个唯一的值,而这个数值被称作索引节点。索引节点存储在一个称作索引节点表中,该表在磁盘格式化时没分配。一个索引节点包含文件的所有信息,包括磁盘数据的地址和文件类型。(3) 链接文件:链接文件相当于Windows的快捷方式”但是它有更强大的功能。可以实现对不同的目录、文件系统甚至是不同的机器
17、上的文件 直接访问,并且不必重新占用磁盘。(4) 设备文件:Linux把设备都当着文件一样来进行操作,这样就大大方便了用户的使用。在Linux下与设备相关的文件一般都在/dev下,包括两种:块设备和字符设备。块设备是指数据读写时,他们是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如 硬盘(/dev/hda I)等。5,2.文件系统移植的方法文件系统是基于被划分的存储设备上的逻辑上单位上的一种定义文件的命名、存储、组 织及取出的方法。如果一个Linux没有根文件系统,它是不能被正确的启动的。因此,我们需要为Linux创建根文件系统,我们将其创建在K9S1208 NAND FLASH 上。
18、Linux的根文件系统可能包括如下目录(或更多的目录):(1) /bin (binary):包含着所有的标准命令和应用程序;(2) /dev (device):包含外设的文件接口,在Linux文件和设备采用同种地 方法访问的,系统上的每个设备都在/dev里有一个对应的设备文件;(3) /etc (etcetera):这个目录包含着系统设置文件和其他的系统文件,例如/etc/fstab(file system table)记录了启动时要 mount 的 filesystem;(4) /home:存放用户主目录;(5) /lib(library):存放系统最基本的库文件;(6) /mnt:用户临时
19、挂载文件系统的地方;(7) /proc: linux提供的一个虚拟系统,系统启动时在内存中产生,用户可以直接通过访 问这些文件来获得系统信息;/root:超级用户主目录;(9) /sbin:这个目录存放着系统管理程序,如fsck、mount等;(10) /tmp(temporary):存放不同的程序执行时产生的临时文件;(11) /usr(user):存放用户应用程序和文件。采用BusyBox是缩小根文件系统的好办法,因为其中提供了系统的许多基本指令但是其体 积很小。在根文件系统中,为保护系统的基本设置不被更改,可以采用cramfs格式,它是一种只读的闪存文件系统。制作 cramfs文件系统的
20、方法为:建立一个目录,将需要放到文件系统的文件copy到这个目录,运行"mkcramfs目录名image名”就可以生成一个cramfs文件系统的image文件。我们使用下面的命令可以mount生成的rootfs.ramfs文件,并查看其中的内容:mount-o loop -t cramfs rootfs.ramfs /mount/poin.对于 cramfs 闪存文件系统, 如果没有 ramfs 的支 持则只能读,而采用jfss2(The Journalling Flash File System version 2)文件系统则可以直接在闪存中读、写数据。jfss2是一个日志结构(l
21、ogstructured)的文件系统,包含数据和原数据(meta-data的节点在闪存上顺序地 存储。jfss2记录了每个擦写块的擦写次数,当闪存上各个擦写块的擦写次数的差距超过某个预定的阀值,开始进行磨损平衡的调整。调整的策略是,在垃圾回收时将擦写次数小的擦写块上的数据迁移到擦写次数大的擦写块上以达到磨损 平衡的目的。为使Linux支持yaffs文件系统,我们需要将其对应的驱动加入到内核中fs/yaffs/,并修 改内核配置文件。使用我们使用mkyaffs I具可以将NAND FLASH中的分区格式化为yaffs 格式(如/bin/mkyaffs/dev/mtdblock/ 0命令可以将第1
22、个MTD块设备分区格式化为yaffs), 而使用mkyaffsimage (类似于mkcramfs> mkfs.jffs2 )则可以将某目录生成为yaffs文件系 统镜像。嵌入式Linux还可以使用NFS (网络文件系统)通过以太网挂接根文件系统,这是 一种经常用来作为调试使用的文件系统启动方式。通过网络挂接的根文件系统,可以在主机 上生成ARM交叉编译版本的目标文件或二进制可执行文件,然后就可以直接装载或执 行它,而不用频繁地写入flash。如广州友善之臂的demo提供如下三种启动方式:(1) 从 cramfs 挂接根文件系统:root=/dev/bon/2();(2) 从移植的yaf
23、fs挂接根文件系统:root=/dev/intdblock/0 ;(3) 从以太网挂接根文件系统:root=/dev/nfs。Partiallyvvxi tten block462detectedPartiallywrittenblock452detectedPartiallyufiittenblock462detectedPartiallywrittenblack462detected dePartiallywrittenblock462tsctedPartiallyvvii tten block462detectedPartiallywrittenblock462detectedPartiallywrittenblock462detectedyaff :s_re ad_super:isCheckpointed 0文件(E)輪揖即查看呼叫Q槎送帮助妁D 口石容滩0古囹Partially written block 462 detectedVFS: Mounted root(yaf f s f ilesysteift) on device 31: ClFr teint initmemory:1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校供餐服务合同(3篇)
- 驾驶员聘用合同(28篇)
- 夫妻起草离婚协议书
- 房地产交易合同书
- 印刷品采购合同
- 人工智能与教育融合合作协议
- 建设工程转让合同
- 合伙入股协议书分红
- 体育行业智能赛事管理与运动训练方案
- 基于大数据分析的企业决策支持系统合作协议
- 色卡 对照表 PANTONE-CMYK
- 深圳水管理体制改革的思考和建议
- 苏教版六年级上册计算题练习大全(经典)
- 五金英语词汇盘点
- 内容讲义说明案例nxt pop trainning
- 2021年羽毛球比赛规则及裁判手势
- 消毒供应中心打包区教学要点 ppt课件
- 现代科学技术概论复习重点
- 年“职工书屋”示范点申报材料(2篇总结汇报报告参考)
- 部编本语文五年级上册第七单元教材解读
- 入职申请表完整版
评论
0/150
提交评论