嵌入式系统技术实验报告
北京航空航天大学电子信息工程学院
《嵌入式系统技术》上机实验报告
学号: 课程名称: 嵌入式系统技术 姓名: 班级: 上机内容 :建立 Linux 实验开发平台 实验报告: 这组实验的主要目的是让学生熟悉如何在既有的硬件平台上通过对软件资源的移植和编译建立一套嵌入式开发系统。这组实验主要有以下几个实验组成: (一) ARM-Linux 开发工具链的建立 一、实验目的: 了解 ARM-Linux 开发工具链的含义,建立流程,以及初步的使用方法。 二、实验内容: 在宿主机上建立交叉编译环境。 三、实验原理: 在宿主机上进行工具链的编译,通过进行正确的设置之后能够建立交叉编译环境,为进一步的内核和程序的编译提供工具。 四、实验设备:(硬件,软件) 1.硬件: DBMX1 ADS 开发板 PC 机(操作系统为 Windows 2000 或更高版本) 直连串口线 3.3V/2A 开关电源 2.软件: 虚拟机 Vmware 虚拟机上运行的 Red Hat Linux 9.0 ARM-Linux 工具链(或者源代码) 安装脚本 文本编辑器(如 Windows 下的 notepad、ultraedit,Linux 下的 Vi、Emacs 等) 五、实验步骤: 1.打开电脑,运行虚拟机以及其上的 Linux 操作系统 2.解压缩并安装 arm-linux 交叉编译工具 3.修改配置文件 4.设置 PATH 变量,使得在任何路径下都可以使用 arm-linux-gcc 工具 5.重新启动,使设置生效 六、实验结果: 在任意一个目录下能够使用 arm-linux-xxx 的命令 能够使用 arm-linux-gcc 编译程序并使用 file 命令进行查看。 (二)Bootloader 的编译 一、实验目的: 1. 通过实验认识启动引导程序的作用、功能和实现机理; 2. 了解系统启动过程中的关键操作; 3. 学习启动引导程序的编程思想,如何根据硬件的特点来初始化并引导系统; 4. 进一步加深对 Bootstrap 模式下程序编写、 编译和测试整个流程的认识。 二、实验内容: 1. 了解系统硬件初始化的相关要求; 2. 了解加载系统的要求和方法; 3. 了解如何在 Bootstrap 模式下操作特定的硬件例如:UART 串口、Flash 存储器、USB-client 控制器; 4. 编写相应的 Bootloader 程序; 5. 编写相应的编译脚本和链接配置文件; 6. 编译程序,生成启动镜像; 7. 下载程序,选择正确选项将 Bootloader 烧写进 Flash 中; 8. 选择正确的启动模式,检验是否正确烧入 Bootloader。 三、实验原理: 嵌入式系统作为一个复杂的硬件和软件的结合体,其工作的最开始阶段需 要进行对硬件的初始化设置,并且能够引导系统从而将硬件的控制权交给操作 系统。这一系列的工作需要启动引导程序来完成。嵌入式系统中的启动引导程 序的作用与 PC 的 BIOS 程序相类似,PC 中完成启动和引导功能的程序便是固化在 BIOS 芯片中的固件程序。 四、实验设备:(硬件,软件) 1.硬件: DBMX1 ADS 开发板 PC 机(操作系统为 Windows 2000 或更高版本) 直连串口线 3.3V/2A 开关电源 A-to-B 型的 USB 线缆 2.软件: 虚拟机 Vmware 虚拟机上运行的 Red Hat Linux 9.0 交叉编译工具链 终端软件 Windows 下的 HyperTerminal 或者 Linux 下的 minicom 文本编辑器(如 Windows 下的 notepad、ultraedit,Linux 下的 Vi、Emacs) 五、实验步骤: 1.编写实现在 Bootstrap 模式下完成硬件初始化和加载系统的引导加载程序,并编写相应的编译命令脚本和和其他相关文件。 2.使用虚拟机上的交叉编译工具链将编写好程序进行编译,生成可以直接在Bootstrap 模式下运行的 b 格式程序。 3.将 DBMX1 ADS 板上的 BOOT[3:0]设置为 Bootstrap 模式。 4.在计算机串口到 DBMX1 ADS 板上串口间连上串口线。 5.在 Windows 中运行 HyperTerminal ,并进行正确的设置:波特率为 115200bps,数据位是 8,停止位是 1,无校验位,无数据流控制,并且将换行符添加到传入行的末尾。(若使用 minicom,发送模式选为 ascii,其余设置参照 2.2) 6.打开 DBMX1 ADS 板上的电源。 7.在 HyperTerminal 中输入‘a’或‘A’,应当从串口程序中看到返回的‘:’。这一步是使 ADS 处理器自动探测并设定波特率。 8.传送文本文件 boot_setup.txt,设置 SDRAM 的工作方式。 9.传送启动引导加载程序 Bootloader_b.txt。 10. 待 Bootloader_b.txt 传输完毕之后此程序将在 SDRAM 中自动运行,将在HyperTerminal 中看到程序的提示如下: 0. Program Bootloader image 1.Program kernel image 2.Program root-disk image 3.Boot kernel 4.Erase KERNEL partition, CAUTION! 5.Erase ROOTDISK partition, CAUTION! Please enter selection -> 11. 输入“0”,在 SDRAM 中运行的程序将会有提示。 12. 将电脑主机与 DBMX1 ADS 开发板用 A-to-B 型的 USB 线缆连接,稍等片刻,Windows 将找到可移动磁盘,将 boot.bin 复制到此可移动磁盘中。 13. 弹出该可移动磁盘 14. 关闭 DBMX1 ADS 板的电源,将 BOOT[3:0]设置为正常启动模式。 15. 打开电源,Bootloader 开始运行,HypterTerminal 中将会出现相关的提示信息。 六、实验结果: 运行在 SDRAM 中的程序将启动镜像正确烧入 Flash 中。 正常启动方式下 Bootloader 能够正常启动,能够在 HyperTerminal 中看到相关的提示信息。 (三)ARM-Linux 内核的编译和下载 一、实验目的: 1. 了解内核在整个系统中的作用和地位; 2. 了解启动过程中内核的运行方式; 3. 通过实验认识内核的配置方法; 4. 能够根据自己的需要灵活得配置和裁减内核; 5. 掌握将 Linux 内核烧写进嵌入式系统的方法。 二、实验内容: 1. 根据特定嵌入式系统特点编写相应配置文件; 2. 编译内核; 3. 烧写内核。 三、实验原理: Linux 内核是 Linux 操作系统运行的核心,进程管理、内存管理、硬件设备的接口都是由 Linux 内核来完成的。然而 Linux 内核本身并不是可以直接使用的,更一般的是以源代码的方式提供的。这就要求学生能够使用相应的工具根据系统的具体要求来完成对内核源代码的配置和编译,并且生成嵌入式系统能够使用的内核映像。 交叉编译环境已经配置完毕,可以通过简单的方式来进行内核的交叉编译。通过人机交互界面,可以完成对内核进行配置的工作。如果需要加入特殊的要求,可以直接修改相应的配置文件来配置内核。配置完毕之后,通过交叉编译就可以得到能够在嵌入式系统上使用的内核。 在 Bootloader 的支持下可以完成内核的下载。 四、实验设备:(硬件,软件) 1.硬件: DBMX1 ADS 开发板 PC 机(操作系统为 Windows 2000 或更高版本) 直连串口线 3.3V/2A 开关电源 A-to-B 型的 USB 线缆 2.软件: 虚拟机 Vmware 虚拟机上运行的 Red Hat Linux 9.0 交叉编译工具链 终端软件 Windows 下的 HyperTerminal 或者 Linux 下的 minicom 文本编辑器(如 Windows 下的 notepad、ultraedit,Linux 下的 Vi、Emacs) 五、实验步骤: 生成内核映像: 1. 从网站获得 Linux 源代码或者其他方式 2. 从网站或者其他方式获得针对 CPU 和开发板的补丁包 3.解压 Linux 源代码和对应的补丁包六、实验结果: 4. 根据自己对开发板进行设置修改相应的配置文件 5. 进入到 Linux 源代码目录:cd ~/linux 6. 清除多余文件:make clean 7. 进入配置菜单:make menuconfig 8. 对内核进行配置 9.生成依赖关系:make dep 10. 编 译 内 核 , 生 成 内 核 映 像 : make Image 。 内 核 映 像 一 般 被 存 放 在 linux/arch/arm/boot 目录下,文件名为 zImage 或者 bzImage 下载内核映像: 1. 将 DBMX1 ADS 设置为正常启动模式 2. 使用串口线将 ADS 板与 PC 机相连 3. 打开 Windows 下的 HyperTerminal,设置为 115200bps,8N1,无流控(若使用 minicom,发送模式选为 ascii,其余设置参照 2.2) 4. 打开 DBMX1 ADS 板电源 5. 终端程序提示进入 Boot 选项时按下任意键 6. 选择烧写 kernel,Bootloader 此时提示 USB 驱动准备就绪 7. 用 A-to-B 型的 USB 线将 PC 与 ADS 板相连 8. 待系统识别出可移动磁盘之后,将 zImage 放入该磁盘中,然后弹出 9.当终端提示按下任意键之后开始编程,编程分为擦写检查和擦写、编程、校验三步,成功之后终端提示重新启动系统。 六、实验结果: 生成内核映像 下载成功 (四)根文件系统的制作和下载 一、实验目的: 1. 了解根文件系统(root filesystem)在整个系统中的作用和地位; 2. 了解根文件系统的主要和必要组成部分; 3. 能够根据自己的需要灵活得配置根文件系统; 4. 掌握将根文件烧写进嵌入式系统的方法。 二、实验内容: 1. 生成根文件系统; 2. 烧写根文件系统。 三、实验原理: 根文件系统是 Linux 文件系统中最低层的文件系统,一般在内核被引导和启动之后是必须挂载的。根文件系统必须提供系统启动的配置文件以及完成一些设备的配置工作。另外根文件系统中应当有一些最基本的应用程序提供给控制台使用。若是进行应用程序的开发和使用,根文件系统中需要有一些库来供应用程序动态调用。因此,根文件系统提供了应用程序运行所需要的最基本的文件。在 Bootloader 的支持下可以完成根文件系统的下载。 四、实验设备:(硬件,软件) 1.硬件: DBMX1 ADS 开发板 PC 机(操作系统为 Windows 2000 或更高版本) 直连串口线 3.3V/2A 开关电源 A-to-B 型的 USB 线缆 2.软件: 虚拟机 Vmware 虚拟机上运行的 Red Hat Linux 9.0 交叉编译工具链 终端软件 Windows 下的 HyperTerminal 或者 Linux 下的 minicom 文本编辑器(如 Windows 下的 notepad、ultraedit,Linux 下的 Vi、Emacs) 五、实验步骤: 生成根文件系统 1. 准备文件 bdfs_noQT.tgz 或者 bdfs_withQT.tgz 和工具 mkfs.jffs2