
使用Blob下载烧写内核和文件系统和内核配置实验指导书.pdf
21页使用 Blob下载烧写内核和文件系统 一.实验目的 掌握使用 blob通过串口下载内核和文件系 统的方法 掌握使用 blob烧写内核和文件系统的方法 二.实验内容 使用 Blob通过串口下载内核和文件系统,并烧写到 flash 三.实验设备及工具 硬件: EFLAG-NVCDP-I嵌入式实验开发系统 , 安装 windows的 PC主机 软件: EFLAG-NVCDP-I cygwin开发环境 , 超级终端 , tftpd32, UUDeview 四.实验原理 blob 实现了 boot loader 的基本功能,上电后硬件的初始化和操作系统的引导在此基础上还提供了简单的命令行,执行用户输入的命令 Blob下经常使用的命令有: 1. download 命令 说明:从串口下载内核或文件系统 命令格式: download [kernel|ramdisk] 可选参数: kernel下载内核; ramdisk下载文件系统 2. tftp 命令 说明:通过 tftp简单文件传输协议下载内核或文件系统 命令格式: tftp [kernel|ramdisk] [文件名 ] 可选参数: kernel下载内核; ramdisk下载文件系统。
3. flash 命令 说明:将下载的内核或文件系统写入 flash 命令格式: flash [kernel|ramdisk] 可选参数: kernel 烧写内核; ramdisk烧写文件系统 4. sip命令 说明:设置 tftp服务器的 ip地址(通常 tftp服务器是一台 PC主机) 命令格式: sip [ip] 可选参数: ip 地址的格式是 : 0xxxxxxxxx(其中 xx是 16 进制值)假设 tftp服务器的 ip地址是 192.168.0.1,那么应该这样设置: 0x0100a8c0 5. cip命令 说明:设置 tftp客户端的 ip地址( tftp客户端就是 EFLAG-NVCDP-I 嵌入式实 验开发系统 ) 命令格式: cip [ip] 可选参数: ip 地址的格式是 : 0xxxxxxxxx(其中 xx是 16 进制值)假设 tftp客户端的 ip地址是 192.168.0.10,那么应该这样设置: 0x0a00a8c0 6. boot 命令 说明:引导操作系统启动 命令格式: boot 可选参数:无 五.实验步骤 1.配置超级终端 在超级终端建立新连接并按照如下设置配置超级终端: 图 1.4.1 选择与实验板连接的串口,点击 Configure按钮,并按照如下配置设置串口属性: 图 1.4.2 2.启动 EFLAG-NVCDP-I嵌入式实验开发系统 将已经用 jflash烧入过 blob的 EAX- 400系统上电启动,可以从超级终端获得如下输出: 图 1.4.3 此时等待 3 秒钟,系统会自动引导 flash 里的内核。
若敲击任意键可以获得 Blob的提示符: 图 1.4.4 这是 blob提供的基于命令行的交互界面可以输入实验原理部分介绍的各种 blob命令来控制 blob的行为输入 help命令获得更多命令的帮助信息 3.准备下载文件 下载文件可通过 2种方式:串口和 tftp ( 1)使用 UUDeview进行文 件转换 通过串口下载的文件必须是经过 UUE 编码的文件在 /home/eflag/auxillary中的 ud3212.exe是 UUDeview的安装包 UUDeview 完成二进制文件和文本文件间的格式转换当需要通过HypterTerminal 向目标板下载 kernel、 ramdisk 时,需要使用 UUDeview 进行格式转换 图 1.4.5 如上图所示:在 Encode File中选定要被转换的源文件,在 To:中设置目标文件生成目录,然后单击 Go按钮,即可在指定的目录中生 成转换后的文件 ( 2)配置 tftp服务器 在 /home/eflag/auxillary/tftpd中的 tftpd32.exe是 tftp服务器程序 EFLAG-NVCDP-I嵌入式实验开发系统中的 blob可以通过 tftp 命令和开发主机上的 tftpd32 服务器进行数据传输,通过以太网将文件系统或内核下载到EFLAG-NVCDP-I嵌入式实验开发系统上,提供了方便快捷的调试手段。
图 1.4.6 配置 tftpd32时,在 Current Direction中选定 kernel或 rootfs所在的路径,并在 Server interfaces中选定好 tftp服务器的 IP地址即可 如果 tftp设置正确, blob将进入 tftp传输模式,如图 1.4.7所示: 图 1.4.7 关于如何通过 tftp命令下载 kernel和 rootfs,参见本实验实验原理一节 然 后在 blob 的命令行中输入 download [kernel|ramdisk]命令,这时 blob 将监听串口,等待发送数据: 图 1.4.8 这个时候 blob 启动了一个 60 秒超时的定时器,需要在超时之前向 blob 发送文件选择 HypterTerminal传输一栏,再点击发送文件,最后选择刚刚用 UUDeview转换过的文件 Blob会自动从串口接收数据 4.下载内核和文件系统 ( 1) 下载和烧写内核 在 blob提示符输入 download kernel后 , blob提示等待发送文件,如图 1.4.9: 图 1.4.9 选择超级终端的 Transfer->Send Text File 菜单打开经过 uue 编码后的内核文件即可开始传送。
下载完毕后,在 blob提示符输入 flash kernel,即可烧写已经下载的内核文件 ( 2)下载和烧写文件系统 在 Blob提示符输入 download ramdisk后 , blob提示等待发送文件,选择超级终端的 Transfer->Send Text File 菜单打开经过 uue 编码后的文件系统即可开始传送 下载完毕后,在 Blob提示符输入 flash ramdisk,即可烧写已经下载的文件系统 5.启动操作系统 在 blob提示符输入 boot,启动 Linux操作系统,如图 1.4.10: 图 1.4.10 内核基本配置和编译 一.实验目的 掌握配置,编译 Linux内核的 方法 熟悉 Linux内核配置的选项及其含义 二.实验内容 分别编译生成 mtd方式作为文件系统引导的内核 三.实验设备及工具 硬件: EFLAG-NVCDP-I嵌入式实验开发系统 软件: EFLAG-NVCDP-I cygwin开发环境 四.实验原理 1. Linux内核 Kernel是操作系统的核心因素,它对电脑资源进行管理,使用户程序可以很好地利用这些资源。
这种 Kernel 在用户运行的应用程序和硬件之间起到调节作用同时为正在运行的各个应用程序(严格来讲是各个进程( process)和线程( thread))进行内存管理和电脑资源的分配 Compile 是指利用编译器将程序转变成为可执行的二进制的代码的过程 Linux 源代码基本上都是由 C语言编成,并带有一点汇编代码 2. 配置内核 Linux内核是可配置的 由于 Linux内核提供了数不胜数的功能,支持了难以计数的硬件(而且这个数量还在持续增加中),因而有许多东西需要配置 用户可以根据自己的实际需求增加或减少内核的某些功能,以达到 Linux内核运行时在速度和尺寸上的平衡可配置的各种选项通过带有 CONFIG_前缀的标识符来表示,比如CONFIG_MACH_EES255代表 Linux内核是否提供对 EFLAG-NVCDP-I嵌入式实验开发系统 的支持这些配置选项要么可以二选一,要么就是三选一二选一就是 yes或 no对于像CONFIG_MACH_EES25这样的内核特性通常只能二选一三选一可以是 yes、 no和 moduleModule意味该配置项被选定了,但编译的时候这部分功能的实现代码是以模块(一种可以同台安装的独立代码段 ) 的形式生成。
设备驱动程序一般都是三选一的配置项 3.配置内核的命令 内核提供了各种不同的工具来简化内核配置 ⑴ make config 这是最简单的一种基于字符界面的配置工具,如图 1.5.1所示: 图 1.5.1 该工具会遍历所有的配置项,要求用户选择 yes、 no或 module ⑵ make menuconfig 该工具通过 ncursc库写的图形配置界面,如图 1.5.2: 图 1.5.2 配置完毕后,选择 Exit退出,然后保存退出: 图 1.5.3 ⑶ make dep 正像前面有关 Makefile的实验所述, Linux内核文件的数量是及其庞大 的面对如此庞大的文件,人为手动的书写 Makefile的依赖关系是不可能的因此 Linux内核采用了使用自动化的执行脚本来自动生成依赖关系自动产生依赖关系的工具就是 make dep: 图 1.5.4 注意: 当给 Linux 内核编写新的代码时,如果要在原先的代码中增加对新的头文件的支持(对 C语言来说就是增加一个 #include 指令),就必须重新执行 make dep否则如果对新增加的头文件进行了修改,由于这个头文件没有建立依赖关系,所以 make 的时候不会检查这个头文件是否已经更新。
这就使 得你的代码不能及时和新的头文件同步,结果是可能产生各种奇怪的问题 ⑷ make zImage 执行 make zImage 即可在 arch/arm/boot/目录下生成一个 zImage 文件,这个文件通称“内核镜像”为了减小内核镜像文件的体积,通常在 make 的最后阶段产生的内核镜像压缩当内核启动时,再调用一段解压代码将内核解压缩操作如图1.5.5所示: 图 1.5.5 生成的内核镜像文件可以按照实验 4的要求下载到 EFLAG-NVCDP-I嵌入式实验开发系统 上进行验证 五. 实验步骤 1.利用 make menuconfig对内核进行精确的定制 进入 Cygwin开发环境,进入内核源程序目录 /home/eflag/Linux-2.4.19-pxa250/,执行 make menuconfig,将会显示如下菜单配置界面: 图 1.5.6 这些选项是 menuconfig 的最顶层选项可以通过方向键上下在各选项之间移动;使用左右键或 tab键可以在最下方的 congtrol选项间移动; select 表示按下回车键选中选项或进入子菜单; exit 表示退出子菜单,返回上一级菜单; help 表示关 于该选项的说明信息。
在有“ ”标志的地方按回车键可到达子菜单 首先进入 Code maturity level options子菜单: 图 1.5.7 每个选项最左边的“ [ ]”中的设置状态可以是“ *”(表示使能该功能,且编译进内核),“ M”(表示使能该功能,但不编译进内核,而是作为内核模块来编译),空格(表示不使用该功能)来表示 [*] Prompt for development and/or incomplete code/drivers 选择是否愿意对内核中实验性代码的进行配置 Linux内核 中有些功能由于没有经过足够多的测试,因此被规类为实验性代码实际上这些代码本身已经比较稳定了,只是在时间上还没有经过足够的考验而已 进入 Loadable 。