版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统开发实验121180166赵琛一实验目的•了解嵌入式系统的开发环境、内核的下载和启动过程•了解Linux内核源代码的目录结构及各目录的相关内容・了解Linux内核各配置选项内容和作用・掌握Linux内核的编译过程・了解嵌入式操作系统中文件系统的类型和作用・了解JFFS2文件系统的优点及其在嵌入式系统中的作用•掌握利用BusyBox软件制作嵌入式文件系统的方法•掌握嵌入式Linux文件系统的的挂载过程二实验内容和要求•掌握将linux内核和文件系统下载到开发板的过程•学会linux内核的配置与编译・了解嵌入式文件系统的构建三实验设计思想3.1硬件部分嵌入式实验系统x210v3是基于45nm工艺S5PV210芯片的开发平台。核心处理器S5PV210为Cortex-A8架构,主频可到1GHz,支持1GiBDDR2,片内32KiBI/D缓存及512KiB二级缓存,PowerVRSGX540图形加速引擎,支持MPEG4、H.263、H.2641080P@30fps编码及MPEG41080P@30fps解码,HDMI/TV-OUT,引脚间距0.65mm,17X17mmFBGA封装。x210v3由核心板,底板和液晶板三大块组成,心板采用8层板工艺设计,底板留有丰富的外设接口,几乎具备210所有功能的调试,液品板采用7口寸电容触摸屏。3.2软件部分bootloaderBootLoader的主要运行任务就是将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。bootloader的主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。串口设置(minicom)多数嵌入式系统都通过异步串行接口(UART)进行初级引导。这种通信方式是将字符一位一位地传送,一般是先低位、后高位。因此,采用串行方式,双方最少可以只用一对连线便可实现全双工通信。字符与字符之间的同步靠每个字框的起始位协调,而不需要双方的时钟频率严格一致,因此实现比较容易。tftptftp是基于UDP协议的简单文件传输协议。目标板作为客户机,bootloader默认采用tftp协议。主机安装tftp-server,作为tftp服务器。4编译规则Makefile利用makemenuconfig(或makeconfig、makexconfig)对1inux内核进行配置后,系统将产生配置文件“.config”。之前的配置文件备份到“.config.old”,以便用makeoldconfig恢复上一次的配置。5文件系统常用的文件系统有ext、NFS、JFFS2、YAFFS2、Ramdisk等。6busyboxBusybox最终编译成一个叫做busybox独立执行程序,并且可以根据配置,执行ashshell的功能,包含几十个小应用程序:mini-vi编辑器、系统不可或缺的/sbin/init程序,以及其他诸如文件操作、目录操作、系统配置等等°BusyBox具有全部这些功能,大小也不过几百K左右。而且用户还可以根据自己的需要对BusyBox的应用程序功能进行剪裁,使BusyBox的规模进一步缩小。四实验记录与分析本次实验分为三部分:1进行嵌入式系统开发实验流程熟悉2内核编译与配置3文件系统构建。以下将按照实际实验213的顺序进行。4.1内核编译与配置4.1.1内核的配置的基本结构Linux内核的配置系统由四个部分组成:Makefile:分布在Linux内核源码中的Makefile,定义Linux内核的编译规则。顶层Makefile是整个内核配置、编译的总体控制文件;配置文件config.in:给用户提供配置选择的功能。“.config”是内核配置文件,包括由用户选择的配置选项,用来存放内核配置后的结果;配置工具:包括对配置脚本中使用的配置命令进行解释的配置命令解释器和配置用户界面(基于字符界面:makeconfig,基于ncurses界面:makemenuconfig,基于X-Window图形界面:makexconfig);Rules.make:规则文件,被所有的Makefile使用。4.1.2内核配置与编译步骤:1、解压内核源代码tarxvf命令2、makemenuconfig这一步是进行内核配置。但是事实上,由于需要配置的东西太多,我们很难完成,因此参考了老师给出的.config文件,并将其覆盖了原来内核的.config文件。对于内核配置,关键的一步在于选择对系统类型。本次实验我们需要选择的是SystemTypewithS5PV210O在进行内核配置的时候,需要考虑到很多硬件部分,而内核有些部分是有待改进的,例如usb2.0中使用到关于usb1.0的东西,因此非常容易配置不成功。在配置时,有不同选项y—表示本编译选项对应的内核代码被静态编译进Linux内核;m—表示本编译选项对应的内核代码被编译成模块;n—表示不选择此编译选项;如果根本就没有选择,那么配置变量的值为空。makeclean清除以前构核所产生的所有的目标文件、模块文件、核心以及一些临时文件等,不产生任何新文件。make这一步就是在编译内核。由于实验室主机是4核的,因此在编译内核时,我们可以使用命令make-j4来并行编译从而提高效率。我们可以观察到,使用j4命令后编译速度明显加快。makezImage这一步生成了内核的镜像文件。这时我们就完成了对于内核的配置与编译。4.2文件系统的构建4.2.1关于ramdisk文件系统使用内存的一部份空间来模拟一个硬盘分区,这样构成的文件系统就是ramdisk。将ramdisk用作根文件系统在嵌入式Linux中是一种常用的方法。因为在ram上运行,读写速度快;用gzip算法进行压缩,可节省存储空间。但它也有缺点:由于将内存的一部分用作ramdisk,这部分内存不能再作其他用途;此外系统运行是更新的内容无法保存,系统关机后内容将丢失。4.2.2配置文件系统步骤1解压缩busybox源代码tarxvfmakemenuconfig这一步也是配置文件系统选项,但是为了能够迅速准确的成功,我借用了老师配置好的.config文件,并覆盖了原来文件系统的.Config文件。在这个配置文件中,要注意选择静态编译,并且加上编译器前缀(arm-2009q3-gcc)。make-j4编译文件系统makeinstall进入_install(cd_install)目录6在这个目录下建立etc文件夹,建立inittab、rc、motd三个文件。/etc/inittab:此文件由系统启动程序init读取并解释执行。以#开头的行是注释行。#/etc/inittab::sysinit:/etc/init.d/rcS〃为init提供初始化路径,将/etc/init.d/rcS〃设置为系统的初始化文件::askfirst:-/bin/sh//将促使init在控制台上显示:pleaseressEnterto//activethisconsole的信息,并在重新启动进程之前//等待用户按下Enter键,最重要的并且能够顺利进入//shell::once:/usr/sbin/telnetd-l/bin/login//仅执行相应的进程(即telnet登//陆)一次,而且不会等待它的完成::ctrlaltdel:/sbin/reboot//当按下Ctrl+Alt+Del键时,重启::shutdown:/bin/umount-a-r//当系统关机时,进行卸载。/etc/rc:这是一个脚本文件。此文件要求可执行属性,用命令“chmod+xrc”修改其属性。rc文件和其他脚本文件(.sh)第一行的#不是注释。#!/bin/shhostnamex210mount-tprocproc/proc/bin/cat/etc/motd/etc/motdWelcometoARM-LINUXWORLDx210v3@S5PV210/Cortex-A8protedby121180166ZhaoChen此文件内容随意,由/etc/rc调用打印在终端上。7在etc目录下再创建init.d目录,并将/etc/rc向/etc/init.d/rcS做符号链接。此文件为inittab指定的启动脚本:$mkdirinit.d$cdinit.d$ln-s../rcrcS8创建dev目录,并在该目录下建立必要的设备:$mknodconsolec51$mknodnullc13$mknodzeroc159建立proc空目录,供proc文件系统使用。10建立lib目录,将交叉编译器链接库路径下的下面几个库复制到lib目录:ld-2.10.1.so,libc-2.10.1.so,libm-2.10.1.so并做相应的符号链接:ln-sld-2.10.1.sold-linux.so.3ln-slibc-2.10.1.solibc.so.6ln-slibm-2.10.1.solibm.so.6至此文件系统目录构造完毕。从根目录看下去,应该至少有下面几个目录:bindevetcliblost+foundmntprocsbin它们是下面制作文件系统的基础。接下来我们要进行ramdisk文件映像的制作。11为了生成并修改ramdisk,需要在主机上创建一个空文件并将它格式化ext2fs文件系统映像。格式化后的文件就可以像普通文件系统一样在主机上进行挂载和卸载。挂载后可以进行正常的文件和目录操作,卸载后,如果原映像文件仍然在,则更新到卸载之前的操作内容。$ddif=/dev/zeroof=ramdisk_imgbs=1kcount=8192$sbin/mke2fsramdisk_img12下面我们进行挂在与卸载$mountramdisk_img将_install目录下除dev外内容拷贝到/mnt/ramdisk下,并且在此时建立dev目录和相关设备文件$umount/mnt/ramdisk此时的ramdisk文件已经是一个完整独立的文件系统映像。13最后我们进行压缩,从而生成gzip文件$gzipramdisk_img这样我们就完成了一个文件系统的制作。4.3将内核与文件系统写进开发板我们这时候首先需要打开串口通信软件minicom,并且按照要求配置好(事实上之前已经被配置好)然后写入以下命令setenvipaddr41//开发板地址setenvserverip1〃主机地址#以上两行配置了初始网络地址
tftp0xc000800zIMagetftp0x40000000ramdisk_img_zc.gz#在目标机中下载编译好的内核和文件系统映像,其中文件系统镜像的名称是为了声明是我自己的文件系统bootm0xc0008000#启动内核执行完这个命令之后,我们可以看到显示出如下画面:心RM-LINUXWORLDprotedby121180166ZhaoChen心RM-LINUXWORLDprotedby121180166ZhaoChen2.919846]2.925522]2.931466]2.941937]2.945763]2.949853]2.952505]2.959187]2.970210]2.973749]3.167228]3.171719]Melcometoreguiator_init_compIete:disablingpd_cam_supplysmdkcllO-rtcsmdkcllO-rtc:rtcdisabled,re-enablingsmdkcllO-rtcsmdkcllO-rtc:settingsystemclockto2010-01-0112)FIMCOregisteredsuccessfullyFIMC1registeredsuccessfullyFIMC2registeredsuccessfully<6>S5PC1XXTVOUTDriver,(c)2009SamsungElectronicss5p-tvouts5p-tvout:hpdstatusiscableremovedDBUG_PORTmustnotuseAFC!RAMDISK:gzipimagefoundatblock0VFS:Mountedroot(ext2filesystem)ondevice1:0.Freeinginitmemory:540Kx210v3之后按回车键即可进入目标机的shell进行操作。五、实验思考题5.1为何使用普通gcc编译的程序不能在开发板运行?答:因为arm平台开发板所使用编译器编译方式与普通编译不同,主机使用x86体系,而开发板使用arm体系。如果想要在ARM平台编译通过,应该使用arm-none-linux-gnueabi-gcc编译命令。5.2归纳总结嵌入式系统下软件开发的一般流程答:1主机编写程序并使用特定交叉编译器编译2将程序复制到对应挂载文件夹内3在开发板进行运行测试5.3总结内核映像文件的生成方法及对操作系统的作用答:简单的内核配置和编译过程通常是makemenuconfigf选项配置fmakecleanfmakedep(kernel2.4)fmakefmakezImage。5.4内核配置中,哪些选项对操作系统的正常启动是必须的?答:systemtype;characterdevice|中板irtualterminal,supportforconsoleonserialsupport;upportforconsolonvirtualterminal;filssystem5.5比较romfs、ext2fs/ext3fs、JFFS2等文件系统的优缺点答:romfs:优点:相对简单、占用空间较小。内核支持romfs需要比ext2更少的代码,在嵌入式设备常用,有体积小,可靠性高,读取速度快等优点。同时支持目录,符号链接,硬链接,设备文件。缺点:只是可读文件系统,禁止写操作,因此系统同时需要ramdisk来支持临时文件和数据文件的存储。extfs2:可以实现快速符号链接,类似于windows文件系统的快捷方式,可将目标名称直接存储在索引节点表中,提高访问速度;支持内存4TB,文件名可1024字符;管理者在创建系统文件时根据需要存储逻辑块的大小。这种系统稳定,可靠,健壮,在台式机、服务器、工作站普遍使用。缺点:占用空间比romfs大。Jffs2:支持数据压缩,支持多种文件节点类型,是一种基于Flash的日志文件系统,提高了对山村的利用率,降低了内存的损耗。通过jffs2,可以通过flash来存储数据,将Flash当作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑施工行业安全生产工作总结
- 装饰行业设计培训
- 农业行业市场宣传策略总结
- 医疗行业护士岗位培训总结
- 加工制造行业车间主任培训总结
- 基础设施行业行政后勤工作总结
- 风电行业销售代表工作总结
- 2024年度美容化妆品代理委托服务合同(含品牌合作)3篇
- 教育行业人才招聘与引才策略
- 康复治疗护士年度工作总结
- 2024年-江苏省安全员-A证考试题库及答案
- 2024年青干班培训个人总结
- 2021~2022学年广东广州越秀区八年级上学期期末语文试卷(含答案)
- 固态电池生产(1GWH)项目可行性研究报告模板-立项拿地
- 中建一期工程履带吊安拆方案
- 广东省深圳市坪山区2024学年七年级上学期期末数学试题【含答案】
- 2024游乐新“室”界室内乐园洞察与趋势研究报告
- 2024-2025学年一年级数学上册期末乐考非纸笔测试题(二 )(苏教版2024秋)
- 2024秋期国家开放大学专科《高等数学基础》一平台在线形考(形考任务一至四)试题及答案
- 国开(内蒙古)2024年《创新创业教育基础》形考任务1-3终考任务答案
- 食品安全日管控、周排查及月调度记录表
评论
0/150
提交评论