首页 嵌入式系统实验报告一

嵌入式系统实验报告一

举报
开通vip

嵌入式系统实验报告一2008221104210068 陈见 08计科2班 嵌入式系统实验报告一 一.实验目的: 1.了解嵌入式开发中的硬件(e.g.EELIOD)与软件(e.g.bootloader) 2.了解嵌入式系统的开发环境,内核的下载和启动过程 3.了解Linux内核配置和编译过程 • 了解Linux内核源代码的目录结构以及各目录的相关内容 • 了解Linux内核一些基本配置选项内容和作用 • 掌握Linux内核的编译过程 4.了解嵌入式文件系统的构建过程 • 了解嵌入式操作系统种文件系统的类型和作用 • ...

嵌入式系统实验报告一
2008221104210068 陈见 08计科2班 嵌入式系统实验报告一 一.实验目的: 1.了解嵌入式开发中的硬件(e.g.EELIOD)与软件(e.g.bootloader) 2.了解嵌入式系统的开发环境,内核的下载和启动过程 3.了解Linux内核配置和编译过程 • 了解Linux内核源代码的目录结构以及各目录的相关内容 • 了解Linux内核一些基本配置选项内容和作用 • 掌握Linux内核的编译过程 4.了解嵌入式文件系统的构建过程 • 了解嵌入式操作系统种文件系统的类型和作用 • 掌握利用BusyBox 软件制作嵌入式文件系统的方法 • 掌握嵌入式Linux 文件系统的的挂载过程 二.实验内容: <1>嵌入式系统开发 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 192.168.208.34(修改主机IP) Set destupaddr 192.168.208.134(修改开发板IP) 3、tftp tftp是基于UDP 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的简单文件传输协议。目标板作为客户机,bootloader默认 采用 tftp协议。主机安装tftp-server,作为tftp服务器。Linux系统的tftp服 务由超级服务器 xinetd管理。 Tftp服务的主目录是/tftpboot,因此只有在这个目录下的文件才可以通过tftp进 行下载,配置好主机和开发板的ip地址后就可以通过tftp命令进行传送。 下载内核:tftp zImage26 kernel 下载文件系统:tftp ramdisk_img.gz ramdisk 4、nfs服务器架设 使用mount命令来挂载,将第一个目录挂载到第二个目录下,这样访问第二个文件夹就可以看到第一个文件夹里的内容。对于第一个命令来说:NFS服务器是一项用于在不同机器、不同操作系统之间通过网络共享文件的服务系统。在客户端看来,使用NFS的远端文件就像是在使用本地文件一样。 配置eth0:ifconfig eth0 192.168.208.134 该命令为配置目标机网卡的命令,即将目标板的IP地址配置为指定IP。 Mount 192.168.208.134:/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) 烧写内核、根文件系统和应用程序,发布产品。 <2>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 menuconfig?make clean?make dep?make?make zImage。 ? make menuconfig 2.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 rw console=ttyS0,115200 mem=64M。“console=ttyS0,115200” 表示使用串口和波特率。 5.Block devices?RAM disk support,内存填8192,表示支持内存的大小。 6. Network device support,网络设备驱动。EELIOD 的网卡是 “Ethernet 10M or 100Mbit”SMSC LAN91C111”。 7.File system?kernel automounter,对内核可访问文件系统的设置。 8. Sound,声音支持和声卡驱动。选中Intel PXA27x AC97。 ?make clean 清除以前构核所产生的目标文件、模块文件、核心以及一些临时文件等,不会产生任何新文件,也不会修改上面所作的配置。 ?make dep 建立依赖关系,产生两个文件“.depend”和“.hdepend”,其中“.hdepend”表示每个.h文件都包含其它哪些嵌入文件,而“.depend”文件有多个,在每个会产生目标文件.o的目录下均存在,它表示每个目标文件都依赖于哪些嵌入文件.h。 ?make 编译内核。通过个目录的Makefile文件进行,会在各个目录下产生一大堆目标文件。如核心代码没有错误,讲产生文件vmlinux,这就是所构的核心。同时产 生映像文件system.map。 ?make zImage zImage和bzImage选项是在make的基础上产生压缩的核心映像文件。生成的zImage文件在目录linux-2.4.21-51 Broad_EDR/arch/arm/boot中,将其复制到tftp服务器目录/tftpboot下供下载。 <3>嵌入式文件系统的构建 1、 Linux文件系统的基本类型 ? ext文件系统:linux-2.4内核的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 文件系统,可以实现快速符号链接,不 需要为符号链接分配数据块,并且可以将目标名称直接存储在索引节点上表 中,使得在访问速度上有所提高 ? NFS文件系统:NFS的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 是为了在不同的系统之间使用,所以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 tty5 tty5::respawn:/sbin/getty 38400 tty6 ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r /etc/rc #!/bin/sh hostname XScale270 mount –t proc proc /proc /bin/cat /etc/motd 此文件要求可执行属性,用命令“chmod +x rc”修改其属性。 /etc/motd Welcome to ===================================== ARM-LINUX WORLD ===================================== Based on : Xsbase270-EDR Ported 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.so libc-2.3.2.so libm-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建立文 )File System,该选项件系统,如果这项配置错误将导致文件系统无法建立。(3 是对Linux可访问的各个文件系统的设置,而支持文件系统是系统能正确启动所必须的。 3.1.3试比较romfs、ext2fs/ext3fs、jffs2等文件系统的优缺点。 传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以 XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。 Jffs2主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提 供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。 ext2也可以作为嵌入式Linux的文件系统,不过将它用于 FLASH闪存会有诸多弊端。 NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。 3.2学习方法总结 本次实验大部分内容是按照实验指导书进行的,但真正学到的知识并不是循规蹈矩的开发步骤,而是解决问题的方法和嵌入式系统结构的了解。我认为实验中应当注意两点: 一是在开发过程中锻炼自己解决问题的能力,要学会读系统报错提示,学习利用网络、书籍等资源。有人曾经说过,一个电子工程师价值的体现在“他能够解决其他电子工程师解决不了的问题”。在实验中我们应当留心执行每一步命令后系统返回的提示,善于发现错误并总结。比如烧录kernel和ramdisk后,系统在boot过程中报错停止,根据报错can’t open file”otc/initd.d/srC”就可以 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 到出错在文件系统中的某个文件路径不正确。在以后的实验中肯定会遇到各种难以解决的问题,要注意记录出错报告并总结。 二是弄明白每一步所做的意义。比如建立文件过程系统中,busybox所生成的两个目录/bin/和/sbin/中的文件是linux可执行的命令,/proc/目录是为了存放系统运行中伴随生成的一些系统文件,/dev/目录存放的是一些设备文件和文件关联,如果今后遇到使用一些Linux命令无法实现,首先要检查文件系统的/sbin和/bin目录下是否存在该指令文件,如果没有就需要在BusyBox中添加对这些指令的支持。又比如每次开机使用tftp加载内核和文件系统,是为了在RAM中加载Linux系统,如果没有这一步骤系统将不会正确启动,因为每次关机操作都会使RAM中的内核和文件系统丢失。只有明白所作的每一步意义,才能懂得如果出错应该从何处入手,在接下来的实验中才不会为将做的任务而迷茫。
本文档为【嵌入式系统实验报告一】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:43KB
软件:Word
页数:13
分类:企业经营
上传时间:2017-09-05
浏览量:70