ImageVerifierCode 换一换
格式:DOCX , 页数:61 ,大小:2.20MB ,
资源ID:4996519      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4996519.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式内核文件系统编译裁剪应用程序项目文档.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式内核文件系统编译裁剪应用程序项目文档.docx

1、嵌入式内核文件系统编译裁剪应用程序项目文档嵌入式系统与应用基于PXA270平台动态变更CPU工作频率指导教师:李晓宁 陈立文小组成员: 林 宇 06382363 林锐圳 06382362 黄智寿 06382354 第一学期 2009.1项 目 报 告 目 录1项目总体方案与设计概述1.1方案概述本实验项目将在PXA270的实验平台上完成。项目根据要求与实际的需要实现最小系统,裁剪linux内核,制作文件系统,生成BOOTLOADER并初始化最小硬件系统。同时,本项目还将在这个实现的最小系统的基础上实现动态变更CPU工作频率方案:加载驱动程序模块实现操作CPU时钟寄存器的功能,通过修改PLL (

2、Phased-locked loop) 寄存器来设置新的运行速率。而应用软件则向用户提供修改寄存器的接口,方便用户对CPU的运行速度以及运行模式的修改。1.2功能模块:本项目具备以下功能模块:(1)平台构建模块:a)裁剪生成Linux内核眏象。b) 生成Linux根文件系统。c)生成BOOTLOADER并初始化最小硬件系统。(2)设计开发模块 a)操作CPU时钟寄存器的驱动程序。 b)查询、修改CPU频率以及模式的应用程序。1.3任务概述1.3.1目标和原则在PXA270实验板上构建项目平台,根据要求开发驱动程序,并且开发相应的应用程序,为用户提供查询CPU速率,修改CPU速率,修改CPU时钟

3、的功能,本系统的主要服务人员角色有系统设计者和一般用户。 要求达到一下原则: 良好的安全性。本系统要具备一定的安全性机制,避免烧坏目标板。此外,还要保证各种操作的合法性。 简单性。本系统应该简单易用,交互性好,符合一般用户的使用习惯 实时性好,响应速度快。本系统属于嵌入式系统,应该具备嵌入式系统应有的实时性,响应度要高。1.3.2假定和约束 (1)假定:本系统开发期限约为11天交付期限为2009-2-24(2)约束:A软硬件约束:开发平台:PXA270操作系统:Linux操作系统编程语言:C语言、汇编语言开发工具:GCC编译器,VI编辑器B系统质量约束:正确性:系统必须被正确执行健壮性:系统必

4、须被长时间运行,而且能被多次执行易用性:系统运行的界面要交互性好1.4 需求规定1.4.1功能规定根据老师给出的要求,组员之间经过多次沟通,本系统设计小组确定了本项目的功能需求规定。我们吸取了面向对象的分析建模方法,按照系统的实际需求生成下面一下用例,下面的描述统一用UML语言描述。1.4.2场景与用例图a. 用例1-编译Bootloader场景1编译Bootloader参与执行者系统设计人员前置条件安装Linux系统,具备完整的Bootloader源程序主流事件1. 用tar解压源程序包2. 用make clean 清除旧镜像3. 用Jflashmm烧写boot辅助事件1.配置以太网MAC地

5、址后置条件目标板就绪b. 用例2-linux内核裁剪场景2Linux内核裁剪参与执行者系统设计人员前置条件版本为Linux 2.6.9的内核主流事件1. 解压内核包2. 进入解压后的目录3. 在终端输入make menuconfig4. 在配置界面根据具体要求配置5. 在终端输入make zImage编译内核6. 使用Jflashmm烧录内核到目标板辅助事件无后置条件目标板就绪c. 用例3-制作根文件系统场景3制作根文件系统参与执行者系统设计人员前置条件已安装linux系统,已安装创建程序mkfs.jffs2主流事件1. 选择要制作的根文件系统为JFFS22. 将创建程序mkfs.jffs2复

6、制到用户目录下3. 编写r.sh的脚本来创建JFFS2文件系统映像4. 把文件系统镜像烧到目标板5. 测试文件系统辅助事件无后置条件目标板就绪d. 用例4-驱动设计场景4驱动设计参与执行者系统设计人员前置条件开发板已加载了boot和文件系统主流事件1. 编写加载和卸载模块2. 编写打开文件设备的模块3. 编写CPU操作模块3.1读取CPU时钟寄存器3.2对CPU寄存器的读取值进行运算,得出CPU频率3.3修改CPU时钟寄存器3.4修改CPU的运行模式4. 编写释放文件设备的模块辅助事件无后置条件目标板就绪e. 用例5-操作CPU速率场景5操作CPU速率参与执行者用户前置条件应用程序已经烧到目标

7、板上主流事件1. 显示界面选择菜单2. 选择查询CPU速率3. 选择修改CPU速率4. 选择修改CPU模式辅助事件无后置条件目标板就绪1.5 性能规定1.5.1 精度本系统涉及的数据类型包括:int型,long型。1.5.2 时间特性要求本系统属于嵌入式系统,在时间特性上有严格的要求,本系统的实时性要高,这体现在对用户的输入,要即时做出响应,平均响应时间不能超过1秒。1.5.3 灵活性说明对该系统的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力:A 操作方式上的变化:当发生非法操作时,系统弄够识别,拒绝执行B 运行环境的变化:无C 同其他软件的接口的变化:无;D 精度和有效时

8、限的变化:对文档的修改,系统应该有一定的日志文件,在一定的时效内,可以根据日志文件进行恢复;E 计划的变化或改进:能根据不同的要求调整开发计划1.5.4 输入输出要求 本系统涉及到的输入输出数据类型只有字符串,整型。本系统与用户的交互主要通过命令行菜单来传递消息。1.6运行环境设定1.6.1设备列出运行该系统所需要的硬设备。说明其中的新型设备及其专门功能,包括:PC机:装有linux操作系统ARM开发板:PXA270,网线,串口。2项目开发计划本项目以理解嵌入式系统硬件、设备驱动、内核、文件系统及应用程序的构建与开发为主要目的。项目开发全过程参考嵌入式系统与应用课程以往做过的实验,并在以往实验

9、的基础上加上适合本项目的步骤以及代码。严格遵守PXA系列的开发手册(Intel PXA27x Processor Family Developers Manual)上的指引以及说明进行开发制作。在项目开发的过程中,不仅尽力完成李晓宁老师在“嵌入式系统与应用PROJECT设计要求及成绩计算方法”对本项目的最基本的功能要求(即查询与修改CPU运行速率),而且还在此基础上增加自己设想与上述成体系的功能(查询修改CPU运行模式),使应用程序的功能更加完善。在项目开发前期,我们小组对项目做了一系列的开发准备,其中包括寻找相关资料,召开会议确定需求,对系统进行方案设计,完成系统功能模块的初步设计等工作,为

10、项目的展开提供了必要的基础支持。同时,小组各成员利用寒假的时间熟读Intel PXA27x Processor Family Developers Manual用户手册,特别是其中Clocks and Power Manager(79页开始)一章节的内容,该章节详细讲述了PXA27x处理器所支持的时钟与电源管理单元以及寄存器,特别是CCCR寄存器,CCSR寄存器以及CLKCFG寄存器的使用说明的章节中,其内容更是对本项目的开发有巨大的帮助。本项目的开发计划表如下所示:阶段时间内容第一阶段2009-2-92009-2-10收集资料,召开会议确定项目需求第二阶段2009-2-112009-2-12

11、Linux内核裁剪,生成内核映像制作根文件系统第三阶段2009-2-132009-2-14编写生成BOOTLOADER始化最小硬件系统第四阶段2009-2-142009-2-16编写驱动程序第五阶段2009-2-17编写测试程序,编写应用程序第六阶段2009-2-18设计测试用例,对系统进行测试第七阶段2009-2-192009-2-20编写文档预计本项目完成之后,将产生以下文件,源代码以及文档:1) 经过裁剪的linux内核文件;2) 经过剪裁的根文件系统;3) 重新设计的BOOTLOADER引导程序;4) 操作CPU时钟寄存器的驱动程序源代码5) 查询、修改CPU运行速率以及运行模式的应用

12、程序源代码;6) 项目设计报告书。本项目将于2009年2月20日星期五完成全部开发,并向老师提交以上文档,供老师验收评分。3项目平台构建3.1编译Bootloader通常PC机上常见的BIOS不会用在嵌入式系统中,Bootloader实现了这样的功能。Bootloader初始化硬件如CPU、SDRAM、FLASH、UART、GPIO等等,并为用户提供系统引导等功能。Bootloader的功能初始化硬件初始化CPU clock、Memory timimg、interrupt、GPIO和UART。启动Linux这是Bootloader最重要的功能。它将内核映像复制到SDRAM中并跳转到内核入口地指

13、处。下载Image下载内核和文件镜像到SDRAM中。下载只能通过以太网。Flash存储器管理用write,erase,lock,and unlock等命令管理Flash存储器。实验室所使用的EELIOD开发板附带的Bootloader程序占用空间小,并且具备初始化硬件、启动Linux、下载内核和文件镜像的基本功能,所以我们使用该Bootloader程序来引导并初始化构建的最小化硬件系统。将Bootloader的源程序复制到用户目录文件夹下,使用tar命令解压,进入到解压后的文件夹目录下,使用make clean清楚之前编译生成的boot镜像,使用make重新编译生成新的boot镜像文件。kuk

14、ekuke-laptop:$ tar zxvf Boot-XSBase270-2.6.tar.gzkukekuke-laptop:$ cd Boot-XSBase270kukekuke-laptop:/Boot-XSBase270$ make cleankukekuke-laptop:/Boot-XSBase270$ make要将Bootloader程序下载到目标开发板中,需要使用到JTAG。EELIOD开发板也附带了JTAG所需的源程序。用编译生成Bootloader程序的方法同样生成JTAG程序。接下来要将Bootloader烧写到目标开发板中。为了方便起见,将boot镜像复制到jflas

15、hmm所在的目录下,将目标开发板与主机相连,使用编译生成的jflashmm将Bootloader烧写到Flash存储器。烧写成功后,关闭开发板的电源,在终端运行minicom,再打开开发板电源,若通过minicom能检测到开发板并显示开发板初始化界面,则说明Bootloader已正确烧写到开发板中并运行正常。成功烧写Bootloader到目标开发板后,还要为开发板中的以太网芯片设置MAC地址,该地址必须与/etc/bootptab的字段相同。这样才能通过bootp命令得到主机分配给开发板的IP地址,为以后使用tftp下载内核和文件系统做好准备。具体操作步骤如下:1)开发板上电后,敲主机键盘任意

16、键停止Bootloader运行。2)输入数字“0”,让Bootloader进入命令行模式。3)输入以下命令设置以太网MAC地址set myhaddr 12:34:56:78:9a:004)输入“bootp”,让主机分配IP地址给开发板,同时也验证主机与开发板的连接是否正常,若分配不到IP地址,需要检查主机与开发板的连接线以及主机上bootp和xinetd的配置是否正确。5)输入“quit”,回到菜单模式。3.2 Linux内核配置、编译和移植内核是所有嵌入式Liunx系统的核心软件,内核移植是一个比较复杂的任务,也是嵌入式开发中非常重要的一个过程。移植内核首先要确保准备好编译内核的工具,Lin

17、ux内核归根结底也是一个程序,所以它必须通过编译器编译后才能在硬件上执行,由于我们的目标开发板是基于ARM结构体系的PXA27X处理器,所以需要能够编译出在ARM处理器上可以运行的程序,这时就需要交叉编译链工具了,实验室的主机上都已经预先构建了交叉编译工具链,因此我们可以省略这一步,直接进行内核的移植工作。为了尽可能保持最大的兼容性,我们将要移植的内核源代码是实验室使用的EEliod开发板附带的EEliod_Linux_2.6.9,可以看出它的内核版本为Linux 2.6.9,符合我们的项目需求。内核移植一般包括内核配置、内核编译和内核下载3大部分,下面将分别概述内核移植的每一个步骤。3.2.

18、1 内核配置配置内核是构建一个嵌入式Linux系统内核的第一步,有好几种配置内核的方式,同时有很多内核的配置选项,由于我们使用的是开发板附带的内核源码,所以可以直接使用开发板的配置文件,再在此基础上针对本次项目所要构建的最小化系统的实际情况配置内核。操作如下:# cd EEliod_Linux_2.6.9# make xsbase270edr_defconfig# make oldconfig# make menuconfigLinux内核配置选项菜单界面具体配置情况如下:Code maturity level options - General setup - 默认Loadable modu

19、le support - 需要开启动态模块加载功能和自动加载动态模块功能System Type - 由于开发板使用的是PXA270处理器,所以在ARM system type中选择PXA2xx-based在Select target board中选择EELIOD开发平台General setup - 默认Parallel port support - 不选择Memory Technology Devices (MTD) - 需要选择MTD设备支持来支持FLASH等MTD设备根据开发板选择正确的FLASH设备支持:Plug and Play support - 不选择Block devices

20、- 不选择Multi-device support (RAID and LVM) - 不选择Networking support - 不选择ATA/ATAPI/MFM/RLL support - 默认SCSI device support - 不选择Fusion MPT device support - 默认IEEE 1394 (FireWire) support - 默认I2O device support - 默认ISDN subsystem - 默认Input device support - 默认Character devices - 默认I2C support - 默认Multime

21、dia devices - 不选择 Filesystems - 去掉对ext2文件系统的支持以及DOS/FAT/NT文件系统的支持设置对JFFS2的支持Profiling support - 默认Graphics support - 去掉系统启动的logo文件Sound - 不选择Misc devices - 默认USB support - 不选择MMC/SD Card support - 默认Kernel hacking - 不选择Security options - 默认Cryptographic options - 默认Library routines - 默认3.2.2 内核编译配置好

22、内核选项后保存配置文件,然后使用make zImage命令生成压缩的Linux内核映像文件。若编译通过,将会生成Linux内核映像文件,由于我们要用的是能在ARM结构体系的处理器上运行的内核,所以应该使用/EEliod-Linux-2.6.9/arch/arm/下的zImage内核映像文件。经过配置裁减后最终生成的内核映像文件大小为668.7KB。3.2.3内核下载下载内核需要用到bootp和tftp,实验室的主机上也已预先配置好了bootp和tftp,在下载内核前需要先确定bootp和tftp是否正常运行,若能正常进行,则可以继续以下步骤:1) 设置需要下载的镜像名:在菜单模式下,选择“a”

23、,按提示输入内核镜像名zImage,因暂时还不需要设置文件系统镜像名,所以可以不修改文件系统镜像名,将前面编译生成的内核镜像文件放到/tftpboot 目录下。2) 下载内核镜像:在菜单模式下,选择“3”,此时,内核镜像通过以太网下载到开发板的SDRAM上,若传输超时或失败,可以重新执行此选项。3)烧写到Flash:在菜单模式,选择“4”,将刚下载的内核镜像烧到Flash上以上步骤正常结束后,内核镜像已烧入目标开发板的Flash中。3.3 创建Linux根文件系统根文件系统是Linux系统启动的一个重要组成部分,也是操作系统正常工作是的必要组成部分,在启动内核时需要根文件系统来挂载。在现代Li

24、nux操作系统中,内核代码映像文件保存在根文件系统中,系统引导启动程序会从这个根文件系统设备上把内核执行代码加载到内存中去运行。3.3.1 文件系统的基本目录结构在根文件系统的最顶层目录中,每一个目录都有其具体的目的和用途,一般是根据FHS(Filesystem Hierarchy Standard)定义建立一个正式的文件系统结构的。FHS即文件系统结构标准,它在UNIX/Linux操作系统的文件系统中是用于确定在何处存储何种文件的标准。FHS定义的根文件系统顶层目录如下目录名 内容bin 提供基本的用户命令库boot 用于Bootloader的静态文件dev 设备或其他的特殊文件etc 系统

25、配置文件,包括启动文件home 多个用户的主目录lib 基本的系统库,例如C库、内核模块等mnt 用于临时挂载的文件系统opt 可选择的软件包proc 内核虚拟文件系统和进程信息root 根用户的主目录sbin 基本的系统管理二进制库tmp 临时文件usr 它的二级目录里包含许多应用程序和许多有用的文档var 一些变化的实例和工具等由于我们构建的是基于Linux的嵌入式系统,所以并不需要以上所有的目录,但通常目录/bin、/dev、/etc、/lib、/proc、/sbin、/usr是必须有的。3.3.2选择根文件系统选择一个文件系统用于根文件系统是一个取舍的过程,最后的决定往往是对一个文件系

26、统性能和目标用途的折中。通常选择一个文件系统需要注意以下几个特点。可写 是否该文件系统能被写数据。只有当一个文件系统发现有更新的数据时需要可写的文件系统,通常嵌入式根文件系统并不需要可写的东西。可保存 是否该文件系统再重启后能保存修改后的东西,一般是在有可写功能的基础上才会有该功能。可压缩 是否挂载的文件系统内容可被压缩。通常情况下该功能对于嵌入式系统非常有用,因为它可以节省宝贵的存储空间。存在RAM 是否可以在挂在之前将该文件系统的内容第一次从存储设备解压到RAM中,通常许多文件系统被直接从存储设备挂载。文件系统挂载在RAM磁盘必须首先从外存储设备解压缩到RAM中,然后执行挂载。可恢复 当突

27、然断电时能否恢复对文件系统的修改。根据以上特点结合我们的项目需求,我们最终选择了JFFS2文件系统作为我们构建的最小化系统的根文件系统。JFFS2 文件系统是日志结构化的,是专门为类似闪存芯片这样的嵌入式设备创建的文件系统,具有可写、可保存、可恢复和可压缩的特点。我们使用的是EELIOD开发板附带的文件系统。但是该文件系统占用空间太大,还附带了许多无关的程序,所以我们在该文件系统的基础上进行了适当的精简,删除了大部分与实验无关的文件,最终将其精简到11.5M左右。原始的文件系统目录结构及大小精简后的文件系统目录结构及大小3.3.3创建JFFS2文件系统映像创建JFFS2文件系统映像需要用到JF

28、FS2文件系统映像创建程序mkfs.jffs2。将程序复制到用户目录下。并用sudo chmod 777 mkfs.jffs2修改权限。由于实验需要,我们需要反复创建JFFS2文件系统映像,为了节省时间,我们写了个文件名为r.sh的脚本来创建JFFS2文件系统映像,脚本内容如下:#!/bin/sh./mkfs.jffs2 -o rootfs270.img -e 0x40000 -r rootfs270 -p l其中rootfs270.img是要生成的映像文件的文件名,rootfs270是文件系统所在的文件夹。使用chmod +x r.sh使脚本可以执行。最终生成的映像文件大小为5.8M。3.3

29、.4文件系统下载下载文件系统同下载内核的步骤相似,有以下步骤:1) 设置需要下载的镜像名:在菜单模式下,选择“a”,按提示输入文件系统镜像名,将前面编译生成的文件系统镜像文件放到/tftpboot 目录下。2) 下载文件系统镜像:在菜单模式下,选择“5”,此时,文件系统镜像通过以太网下载到开发板的SDRAM上,若传输超时或失败,可以重新执行此选项。3) 烧写到Flash:在菜单模式,选择“6”,将刚下载的文件系统镜像烧到Flash上以上步骤正常结束后,文件系统镜像已烧入目标开发板的Flash中。3.4 项目平台搭建总体测试至此,最小化系统已基本上搭建完成。重启目标板,观察是否能正常启动linux并能正确运行测试程序,若可以,则说明最小化系统已成功搭建。开发板启动时,minicom中显示的详细信息如下所示:Welcome to use 51Board Bootloader for XSBase270 board Copyright (C) 2002-2006 51Board Co,. Ltd. Support : http:/www.51B Version : 01.00.03 flash : base=0x00000000, size=0x02000000 Eth port can access, the base address is

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1