嵌入式系统实验报告一.doc_第1页
嵌入式系统实验报告一.doc_第2页
嵌入式系统实验报告一.doc_第3页
嵌入式系统实验报告一.doc_第4页
嵌入式系统实验报告一.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2008221104210068 陈见 08计科2班嵌入式系统实验报告一 一.实验目的:1.了解嵌入式开发中的硬件(e.g.EELIOD)与软件(e.g.bootloader)2.了解嵌入式系统的开发环境,内核的下载和启动过程3.了解Linux内核配置和编译过程 了解Linux内核源代码的目录结构以及各目录的相关内容 了解Linux内核一些基本配置选项内容和作用 掌握Linux内核的编译过程4.了解嵌入式文件系统的构建过程 了解嵌入式操作系统种文件系统的类型和作用 掌握利用BusyBox 软件制作嵌入式文件系统的方法 掌握嵌入式Linux 文件系统的的挂载过程二.实验内容:嵌入式系统开发1、bootloader嵌入式系统中通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务完全由bootloader来完成。其主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。2、串口设置(minicom)多数嵌入式系统都通过异步串行接口 (UART)进行初级引导。这种通信方式是将字符一位一位地传送,一般是先低位、后高位。 因此,采用串行方式,双方最少可以只用一对连线便可实现全双工通信。字符与字符之间的同步靠每个字框的起始位协调,而不需要双方的时钟频率严格一致,因此实现比较容易。启动minicom 主机运行minicom,该程序通过串口(RS232)和目标机连接。 minicom-s表示对串口进行设置,普通用户不需要这一步。 串口设置/dev/ttys0 bps=115200,8位数据,无检验,无流控制。 bootloader提示符下面可设定本机IP,宿主机IP,将要下载的内核文件名,文件系统名及其它参数。Boot必要设置 配置IP,配置目标机IP,tftp服务机IP 主机和目标机相互ping tftp服务上机实验打开终端,输入minicom。接通开发板电源,进入界面,在delay(一般设为2s)时间内按任意键进入bootloader界面的信息和命令提示符及菜单:功能“0”是命令行方式,出现提示符“51Board”,进入命令设置子菜单。“set”命令可以帮助你修改和观察当前bootloader的默认设置。(开发板IP最好设为主机IP+100)Set myipaddr 4(修改主机IP)Set destupaddr 34(修改开发板IP)3、tftptftp是基于UDP协议的简单文件传输协议。目标板作为客户机,bootloader默认采用 tftp协议。主机安装tftp-server,作为tftp服务器。Linux系统的tftp服务由超级服务器 xinetd管理。Tftp服务的主目录是/tftpboot,因此只有在这个目录下的文件才可以通过tftp进行下载,配置好主机和开发板的ip地址后就可以通过tftp命令进行传送。下载内核:tftp zImage26 kernel下载文件系统:tftp ramdisk_img.gz ramdisk4、nfs服务器架设使用mount命令来挂载,将第一个目录挂载到第二个目录下,这样访问第二个文件夹就可以看到第一个文件夹里的内容。对于第一个命令来说:NFS服务器是一项用于在不同机器、不同操作系统之间通过网络共享文件的服务系统。在客户端看来,使用NFS的远端文件就像是在使用本地文件一样。配置eth0:ifconfig eth0 34 该命令为配置目标机网卡的命令,即将目标板的IP地址配置为指定IP。Mount 34:/exp /mnt 该命令将指定IP下的NSF共享目录挂载到/mnt目录,当访问开发板的/mnt目录时,访问的就是服务器上的/exp目录的内容。归纳总结嵌入式系统下软件开发的一般流程(1) 建立开发环境,操作系统一般使用Redhat Linux,通过网络下载相应的GCC 交叉编译器进行安装(比如,arm-1inux-gcc、arnl-uclibc-gcc)。(2) 配置开发主机,配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8 位,停止位为1,9,无奇偶校验,软件硬件流控设为无。MINICOM 软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS 网络文件系统。(3) 建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,根据具体芯片进行移植修改。(4) 下载已经移植好的Linux 操作系统,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU 的CPU 可以使用模块方式调试驱动,而对于MCLiunx 这样的系统只能编译内核进行调试。(5) 建立根文件系统,由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc 目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs 等工具产生烧写映像文件。(6) 建立应用程序的FLASH 磁盘分区,一般使用JFFS2 或YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动。(7) 开发应用程序,可以放入根文件系统中,也可以放入YAFFS、JFFS2 文件系统中。(8) 烧写内核、根文件系统和应用程序,发布产品。Linux内核配置和编译1、内核配置的基本结构Linux内核的配置系统由四个部分组成,分别是:1、 Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则。顶层Makefile是整个内核配置、编译的总体控制文件;2、 配置文件(config.in):给用户提供配置选择的功能;3、 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。4、 Rules.make:规则文件,被所有makefile所使用。2、编译规则Makefile利用makemenuconfig对Linux内核进行配置后,系统将产生配置文件“.config”。编译时,顶层Makefile完成产生核心文件vmlinux和内核模块module两个任务,为了达到此目的,顶层 Makefile将读取.config中的配置选项,递归进入到内核的各个子目录中,分别调用位于这些子目录中的 Makefile进行编译。3、编译内核实验选用的是2.4版本内核进行编译。将内核源代码复制至自己的文件夹,在该文件夹下打开终端,对其进行配置。简单的内核配置和编译过程通常是:make menuconfigmake cleanmake depmakemake zImage。 make menuconfig2.4版本内核配置主目录有下面这些分支需要改动:1.Code mayurity level option,选择kernel代码的成熟度的部分,决定是否将一些不成熟的功能提供给用户选择。2.Loadable module support。利用模块化功能可将常用的设驱动或功能作为模块放在内外,这样就可以要时动态地加载。作结束后还可以从内存中删除。这样可以有效地使用内存,同时也可减小了内核的大小。3.System Type,系统选型。根据开发对象选择。本实验系统选择PXA270/210-based,并在Board Type中选择XSBase270-EDR。4.General setup,Default kernel command string改为:root=dev/ram0 rwconsole=ttyS0,115200 mem=64M。“console=ttyS0,115200” 表示使用串口和波特率。5.Block devicesRAM disk support,内存填8192,表示支持内存的大小。6. Network device support,网络设备驱动。EELIOD 的网卡是 “Ethernet 10M or 100Mbit”SMSC LAN91C111”。7.File systemkernel automounter,对内核可访问文件系统的设置。8. Sound,声音支持和声卡驱动。选中Intel PXA27x AC97。make clean清除以前构核所产生的目标文件、模块文件、核心以及一些临时文件等,不会产生任何新文件,也不会修改上面所作的配置。 make dep建立依赖关系,产生两个文件“.depend”和“.hdepend”,其中“.hdepend”表示每个.h文件都包含其它哪些嵌入文件,而“.depend”文件有多个,在每个会产生目标文件.o的目录下均存在,它表示每个目标文件都依赖于哪些嵌入文件.h。make编译内核。通过个目录的Makefile文件进行,会在各个目录下产生一大堆目标文件。如核心代码没有错误,讲产生文件vmlinux,这就是所构的核心。同时产生映像文件system.map。make zImagezImage和bzImage选项是在make的基础上产生压缩的核心映像文件。生成的zImage文件在目录linux-2.4.21-51 Broad_EDR/arch/arm/boot中,将其复制到tftp服务器目录/tftpboot下供下载。嵌入式文件系统的构建1、 Linux文件系统的基本类型 ext文件系统:linux-2.4内核的标准文件系统,可以实现快速符号链接,不需要为符号链接分配数据块,并且可以将目标名称直接存储在索引节点上表中,使得在访问速度上有所提高 NFS文件系统:NFS的设计是为了在不同的系统之间使用,所以NFS文件系统的通信协议设计与作业系统无关。当使用者想使用远端文件时,只要用“mount”命令就可以把远端文件系统挂载在自己的文件系统上,使远端的文件在使用上和本地机器的文件没有区别。 JFFS2文件系统:日志闪存文件系统版本2 (Journalling Flash FileSystem v2)主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。 Ramdisk文件系统:使用内存的一部份空间来模拟一个硬盘分区,这样构成的文件系统就是ramdisk。将ramdisk 用作根 文件系统在嵌入式Linux 中是一种常用的方法。因为在ram 上运行,读写速度快;用gzip 算法进行压缩, 可节省存储空间。但它也有缺点:由于将内存的一部分用作ramdisk,这部分内存不能再作其它用途;此 外系统运行是更新的内容无法保存,系统关机后内容将丢失。2、 文件系统的制作(1) Busybox的编译:将busubox的软件包复制至自己的文件夹下并解压缩。在该目录下打开终端,执行make menuconfig,仿照内核配置编译过程。配置主目录下有以下分支需要改动: 在Build Option菜单下,选择静态库编译方式,设定交叉编译器为/usr/local/arm-linux/bin/arm-linux- Installation Option配置中,定义安装路径为./_install。(2) 配置文件系统 创建etc目录,在etc 下建立inittab、rc、motd三个文件。 /etc/inittab:sysinit:/etc/init.d/rcS:askfirst:/bin/sh tty4:respawn:/sbin/getty 38400 tty5tty5:respawn:/sbin/getty 38400 tty6:restart:/sbin/init:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -r /etc/rc#!/bin/shhostname XScale270mount t proc proc /proc/bin/cat /etc/motd此文件要求可执行属性,用命令“chmod +x rc”修改其属性。/etc/motdWelcome to= ARM-LINUX WORLD=Based on : Xsbase270-EDRPorted by ZYW此文件内容随意,由/etc/rc 调用打印在终端上。在etc目录下再创建init.d目录,并将并将 /etc/rc 向 /etc/init.d/rcS 做符号链接。此文件为 inittab 指定的启动脚本$ mkdir init.d$ cd init.d$ ln s ./rc rcS 创建dev目录,并在该目录下建立必要的设备。(建立设备指令略) 创建设备是,需额外添加以下设备 mknod tty4 c 4 4 mknod tty5 c 4 5 mknod tty6 c 4 6 建立proc空目录,供proc文件系统使用。 建立lib目录,将交叉编译器链接库路径下的几个库复制到lib目录中: ld-2.3.2.solibc-2.3.2.solibm-2.3.2.so 再做如下软链接: ln s ld-2.3.2.so ld-linux.so.2 ln s libc-2.3.2.so libc.so.6 ln s libm-2.3.2.so libm.so.6 ln s libm-2.3.2.so libm.so至此文件系统目录构造完毕,它们是下面制作文件系统的基础。3、 制作ramdisk文件映像在自己文件夹中创建一个空文件夹,然后格式化成ext2fs文件系统映像。格式化后的文件就可以像普通文件系统一样在主机上进行载卸载。载后可以进行正常的文件目录作,卸载后,如原映像文件仍然存在,则更新到卸载之前的作内容。dd if=/dev/zero of=ramdisk_img bs=1k count=8192 此命令为创建一个8M大小的ramdisk/sbin mke2fs ramdisk_img mount ramdisk_img将此文件系统挂载到/mnt下,之后将原来生成的usr,sbin,bin文件夹从_install中拷贝过来。umount /mnt/ramdisk解除挂载,此时/mnt/ramdisk目录下的内容均“剪切”到开始创建的ramdisk里面。gzip ramdisk_img 压缩,此时即可将此制作好的ramdisk文件映像复制到tftpboot中以备下载到开发板中应用。三、实验总结3.1理论总结3.1.1嵌入式系统的开发的主要步骤:(1) 根据功能制作内核映像和文件系统压缩映像。(2) 使用minicom中tftp指令将内核和文件系统加载到RAM中,启动系统。(3) 配置板上IP,建立NFS网络文件系统(4)在PC上通过交叉编译生成所要执行的文件,通过NFS服务转移到板上系统进行调试。以上步骤中并没有包含对bootloader进行烧写,是因为本次实验开发中bootloader的内容一般需要修改;如果将内核和文件系统映像写入FALSH中,可以实现系统开机后自己载入内核和文件系统并启动,由于开发试验中Linux内核和文件系统很可能需要经常修改,所以并未在以上步骤中添加写入FLASH的内容。3.1.2内核配置中,哪些选项对操作系统的正常启动是必须的?答:我使用的是厂家提供的Linux-2.4版本内核,该内核中默认设置已按照PXA270的硬件进行设置,但我们仍需要了解内核配置的具体内容。我认为正常启动必备设置有(1)System Type系统选型,需要根据处理器型号选中正确选项。(2)Memory Technology Devices,我们使用的嵌入式系统是通过RAM建立文件系统,如果这项配置错误将导致文件系统无法建立。(3)File System,该选项是对Linux可访问的各个文件系统的设置,而支持文件系统是系统能正确启动所必须的。3.1.3试比较romfs、ext2fs/ext3fs、jffs2等文件系统的优缺点。传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以 XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。Jffs2主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。ext2也可以作为嵌入式Linux的文件系统,不过将它用于 FLAS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论