实验2-BootLoader编译与下载.docx_第1页
实验2-BootLoader编译与下载.docx_第2页
实验2-BootLoader编译与下载.docx_第3页
实验2-BootLoader编译与下载.docx_第4页
实验2-BootLoader编译与下载.docx_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

3、Boot Loader 实验【实验目的】 熟悉交叉工具链的配置. 掌握Jflash 的使用。 熟悉Blob 编译过程。 熟悉Blob的启动流程. 掌握Blob的基本调试方法。【实验步骤】Boot Loader 编译环境搭建第一步: 在编译Boot Loader之前,首先要确保已经安装了交叉编译工具链,可以利用which arm-linux-gcc 命令进行检测,如果未安装,会显示如下提示信息(如下图1所示)。检测arm-linux-gcc 是否安装图1 检测arm-linux-gcc 视图第二步: 如果未安装,请将发货过光盘放入到光驱当中,(提示:并利用 mount - t iso9660 /dev/cdrom /mnt/cdrom 命令,将光盘挂载到Linux 操作系统下,或者直接点击Linux 系统桌面右键,选择光盘-挂载选项,将发货光盘挂载到Linux 系统当中。)进入/mnt/cdrom/Toolchain 目录下,将xscalev1_liod_qt_2.3.7.tar.gz 工具链解压到/usr/local/ 目录下面,如下图2 所示。(将xscalev1_liod_qt_2.3.7.tar.gz文件解压到/usr/local 目录下。)root local host root# tar xzvf xscalev1_liod_qt_2.3.7.tar.gz C /usr/local 图2解压交叉编译工具链第三步: 利用export命令将交叉编译工具的路径加入到系统PATH环境变量中。(也可以直接修改“root”目录下的“.bash_profile”文件)然后利用which命令查看交叉编译工具是否已在系统搜索路径中。 图3 添加arm-linux-gcc 交叉编译工具视图Blob 的交叉编译第四步: 将光盘中的Boot Loader文件夹中的Boot-XSBase270-2.6.tar.gz文件(具体文件名以光盘Blob 文件夹中所提供的文件为准)复制到/root/work/Blob 目录下(具体目录取决用户决定)。第五步: 利用 tar 命令对Boot-XSBase270-2.6.tar.gz压缩文件进行解压。解压后,Blob 源码解压在BootXSBASE270文件夹中。 图4 解压Boot Loader视图第六步: 利用make命令在Blob 源码所在的目录中对源码进行编译,编译成功后在该目录中产生Blob 映象文件boot。图5 编译Boot Loader视图Blob 的下载第七步: 将Blob 的映象文件boot拷贝Jflash-XSBase270目录下(如果没有Jflash工具,则将光盘中Jflash目录下的Jflash-XSBase270_010003.tar.gz文件复制到计算机中,然后利用tar命令进行解压即可)。第八步: 连好开发平台的JTAG下载器,并利用Jflash-XSBase270目录中jflashmm程序将 Blob 映象文件boot烧写到开发板上。 第九步: 下载完毕后,利用RS-232平台的FFUART串口与PC串口相连,利用minicom 启动串口,设置串口参数(波特率:115200、数据位:8、停止位:1、奇偶校验:无、流控制:无)。重新启动目标平台,Blob 启动界面。 Blob 使用:第十步: Blob 各菜单项的含义。选项描述0 ComanndLine mode进入命令行模式1 View current configuration查看配置参数2 Bootp运行bootp命令用来获取HOST主机发送的BOOTP的数据包,解析3Download default Kernel (zImage_qt)下载内核镜像4 Flash Kernel烧写内核镜像5 Download default Filesystem (rootfs270qt.img)下载文件系统镜像6 Flash Filesystem烧写文件系统镜像7 Boot system在SDRAM中运行kernel8 Reboot system软件复位9 Reset to factory default configuration重设默认配置aSet default Kernel filename and Filesystem filename设置将要下载的内核和文件系统镜像b Set boot delay time设置Blob 等待用户输入时的停留时间c Help(to get a list of commands)打印命令的帮助信息第十一步: 输入“0”后进入命令模式,Blob 命令的使用方法。help用法帮助描述简短显示各命令的介绍参数无举例Bboot HelpLoad用法load kernel/ramdisk描述把存放在FLASH中的映像文件拷贝到SDRAM中。在Autoboot过程中会自动运行,把内核映像从FLASH加载到SDRAM中。参数Kernel 把内核映像从FLASH拷贝到SDRAM中Ramdisk从FLASH中拷贝RAMDISK到SDRAM举例Bboot load kernelbootp用法Bootp描述运行bootp命令用来获取HOST主机发送的BOOTP的数据包,解析BOOTP的数据包,获取本机的IP地址参数无举例Bboot bootptftp用法Tftp 文件名 address/loader/kernel/root/ramdisk描述通过以太网下载主机的数据或文件到目标平台的SDRAM参数文件名 - 主机平台需要传输的文件名loader - 把传输到目标平台的文件放置在SDRAM的loader区域kernel - 把传输到目标平台的文件放置在SDRAM的kernel区域root - 把传输到目标平台的文件放置在SDRAM的root区域ramdisk - 把传输到目标平台的文件放置在SDRAM的ramdisk区域address - 把传输到目标平台的文件放置在SDRAM的指定地址举例Bboot tftp zImage kernelBboot tftp rootfs.img rootflash用法Flash loader/kernel/root/ramdisk描述把SDRAM中的数据烧录到FLASH中特定的地址参数loader - 把SDRAM中的数据烧录到FLASH中的loader区域kernel 把SDRAM中的数据烧录到FALSH中的kernel区域root 把SDRAM中的数据烧录到FLASH中的root区域ramdisk 把SDRAM中的数据烧录到FLASH中的ramdisk的区域举例Bboot flash kernelBboot flash rooterase用法erase loader/kernel/ramdisk/root 描述擦除FALSH中的相应区域参数loader 擦除FALSH中loder区域kernel 擦除FLASH中的kernel区域root 擦除FLASH中的root区域ramdisk 擦除FLASH中的ramdisk区域举例bboot erase kernelboot用法Bootboot addr描述在SDRAM中运行kernel通过参数中指定的地址运行kernel参数addr kernel image address举例bboot bootset用法set name value描述设置IP地址,MAC地址以及autoboot参数参数Name myipaddr destipaddr myhaddr autobootValue ip ip mac address load kernel; boot举例bboot set /输出设置信息bboot set myipaddr 192.168.100.X /改变目标平台的IP地址bboot set destipaddr 192.168.100.XX /改变主机平台的IP地址bboot set myhaddr 00:0E:6F:CE:59:21 /设置目标平台的MAC地址bboot set autoboot load kernel; boot /装载kernel后自动启动ping 用法Ping描述检查目标平台和主机平台的网络连接参数Ping主机平台的ip地址举例Ping 192.168.100.xxreboot用法Reboot描述软件复位参数None举例RebootBlob打印跟踪实验Blob第1阶段分析第一步: 打开Boot-XSBase270srcstart.S,该源码文件完成系统的Blob 程序的第1阶段的编程及程序调用实现过程。(主要包括:GPIO的初始化调用-bl define_gpio;系统时钟信号使能调用-bl clock_enable;SDRAM内存设置调用-bl setup_memory、Blob 自拷贝、堆栈的设置- ldr sp, stack_point-4以及跳转到Blob 第二阶段- ldr pc, main) 第二步: 打开Boot-XSBase270srcfixgpio.S 文件,找到配置GPIO的define_gpio函数,该函数主要实现对系统微处理器的GPIO的初始化过程。其中涉及GPIO的输入/输出方向设置寄存器:GPDRn、置位和清零寄存器(GPSRn、GPCRn)以及功能配置寄存器GPFRnL、GPFRnH等。 第三步: 打开Boot-XSBase270src memsetup.S文件,找到setup_memory函数,该函数主要对系统外部的DRAM、SRAM(FLASH)、PC Card接口等存储设备所需参数进行配置,其中包括:MDCNFG、MDREFR、MSCn等寄存器的配置。 Blob 第2阶段分析第四步: 打开Boot-XSBase270srcmain.c文件,找到int main(void)函数,该函数完成系统的Blob 程序的第2阶段的硬件初始化和菜单显示等程序调用实现过程(主要包括:终端显示串口初始化-uart_init();系统定时器-time_init();存储分配映射配置-config_init();Flash内存器操作配置初始化-iflash_init();以及网络芯片初始化-eth_init();等本阶段硬件初始化过程调用;提示延时、菜单显示调用) 第五步: 打开Boot-XSBase270srcserial.c文件,分别找到uart_init(void)、int uart_putc(int ch)和int uart_getc(void)三个串口操作基本函数。主要完成串口初始化与从串口获取和输出字符等操作。实现对PXA270的串口相关寄存器进行配置。其他与串口相关的函数都直接或间接调用这三个函数。 串口输入输出函数 第六步: 打开Boot-XSBase270srcPartition.c文件,找到init_map(void)和find_map(const char* name)函数,这两个函数主要完成对存储分配映射进行配置和查找某个指定类型的内存映射参数。其中parts结构体数组定义了整个系统的SRAM、SDRAM等内存映射的相关参数。 内存分配映射结构体数组 第七步: 打开Boot-XSBase270srcFlash.c文件,该文件中函数主要完成对flash的编程、擦除、加/解锁等操作。其中iflash_init(void)函数主要实现查询平台的flash存储芯片的相关信息,flash操作的命令可参考flash芯片的资料文档。 第八步: 打开Boot-XSBase270srcFlash.c文件,该文件中函数主要实现lan91c111网络芯片的底层操作配置操作,其中lan91c111_init(void)函数由main.c文件中的eth_init()函数间接调用。具体寄存器操作方法参考lan91c111的资料文档。 第九步: 打开Boot-XSBase270src Network.c文件,该文件中的函数主要完成网络传输相关协议的封装(如:set_udp_header、set_ip_header、set_ether_header、set_arp_heade、set_icmp_header等)、网络数据包的解压(udp_recv_packet、ip_recv_packet、eth_recv_packet、arp_recv_packet、icmp_recv_packet)以及网络传输请求数据包的发送(send_arp_request_packet、send_icmp_echo_request等)等操作。 第十步: 打开Boot-XSBase270src tftp.c文件,该文件中的函数主要完成文件TFTP传输相关操作。 Blob 跟踪调试信息输出第十一步: 打开Boot-XSBase270srcmain.c文件,屏蔽config_init函数后面的printf(033H033Jn);语句,同时将该语句添加到uart_init函数后,并在uart_init函数后面添加printf(UART init overn);语句。第十二步: 打开Boot-XSBase270src Lan91c111.c文件,在lan91c111_init()函数返回前添加test_get_reg()函数,测试lan91c111网卡芯片的相关寄存器。第十三步: 打开Boot-XSBase270srcTime.c文件,分别在time_init()函数中添加如下调试输出信息。printf(time_init+n);printf(udelay : msecond_boundary : %d 0x%08lxn, msecond_boundary, msecond_boundary);printf(time_init-n); 第十四步: 打开Boot-XSBase270src Partition.c文件,在init_ma

温馨提示

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

评论

0/150

提交评论