实验2-BootLoader编译与

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3、BootLoader实验【实验目的】熟悉交叉工具链的配置.掌握Jflash的使用。熟悉Blob编译过程。熟悉Blob的启动流程.掌握Blob的基本调试方法。【实验步骤】BootLoader编译环境搭建第一步:在编译BootLoader之前,首先要确保已经安装了交叉编译工具链,可以利用whicharm-linux-gcc命令进行检测,如果未安装,会显示如下提示信息(如下图1所示)。检测arm-linux-gcc是否安装图1检测arm-linux-gcc视图第二步:如果未安装,请将发货过光盘放入到光驱当中,(提示:并利用mount-tiso9660/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@localhostroot]#tar–xzvfxscalev1_liod_qt_2.3.7.tar.gz–C/usr/local图2解压交叉编译工具链第三步:利用export命令将交叉编译工具的路径加入到系统PATH环境变量中。(也可以直接修改“root”目录下的“.bash_profile”文件)然后利用which命令查看交叉编译工具是否已在系统搜索路径中。图3添加arm-linux-gcc交叉编译工具视图Blob的交叉编译第四步:将光盘中的BootLoader文件夹中的Boot-XSBase270-2.6.tar.gz文件(具体文件名以光盘Blob文件夹中所提供的文件为准)复制到/root/work/Blob目录下(具体目录取决用户决定)。第五步:利用tar命令对Boot-XSBase270-2.6.tar.gz压缩文件进行解压。解压后,Blob源码解压在Boot-XSBASE270文件夹中。图4解压BootLoader视图第六步:利用make命令在Blob源码所在的目录中对源码进行编译,编译成功后在该目录中产生Blob映象文件boot。图5编译BootLoader视图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]ComanndLinemode进入命令行模式[1]Viewcurrentconfiguration查看配置参数[2]Bootp运行bootp命令用来获取HOST主机发送的BOOTP的数据包,解析[3]DownloaddefaultKernel(zImage_qt)下载内核镜像[4]FlashKernel烧写内核镜像[5]DownloaddefaultFilesystem(rootfs270qt.img)下载文件系统镜像[6]FlashFilesystem烧写文件系统镜像[7]Bootsystem在SDRAM中运行kernel[8]Rebootsystem软件复位[9]Resettofactorydefaultconfiguration重设默认配置[a]SetdefaultKernelfilenameandFilesystemfilename设置将要下载的内核和文件系统镜像[b]Setbootdelaytime设置Blob等待用户输入时的停留时间[c]Help(togetalistofcommands)打印命令的帮助信息第十一步:输入“0”后进入命令模式,Blob命令的使用方法。help用法帮助描述简短显示各命令的介绍参数无举例BbootHelpLoad用法load[kernel/ramdisk]描述把存放在FLASH中的映像文件拷贝到SDRAM中。在Autoboot过程中会自动运行,把内核映像从FLASH加载到SDRAM中。参数Kernel-把内核映像从FLASH拷贝到SDRAM中Ramdisk-从FLASH中拷贝RAMDISK到SDRAM举例Bbootloadkernelbootp用法Bootp描述运行bootp命令用来获取HOST主机发送的BOOTP的数据包,解析BOOTP的数据包,获取本机的IP地址参数无举例Bbootbootptftp用法Tftp文件名{address/loader/kernel/root/ramdisk}描述通过以太网下载主机的数据或文件到目标平台的SDRAM参数文件名-主机平台需要传输的文件名loader-把传输到目标平台的文件放置在SDRAM的loader区域kernel-把传输到目标平台的文件放置在SDRAM的kernel区域root-把传输到目标平台的文件放置在SDRAM的root区域ramdisk-把传输到目标平台的文件放置在SDRAM的ramdisk区域address-把传输到目标平台的文件放置在SDRAM的指定地址举例BboottftpzImagekernelBboottftprootfs.imgrootflash用法Flash{loader/kernel/root/ramdisk}描述把SDRAM中的数据烧录到FLASH中特定的地址参数loader-把SDRAM中的数据烧录到FLASH中的loader区域kernel–把SDRAM中的数据烧录到FALSH中的kernel区域root–把SDRAM中的数据烧录到FLASH中的root区域ramdisk–把SDRAM中的数据烧录到FLASH中的ramdisk的区域举例BbootflashkernelBbootflashrooterase用法erase{loader/kernel/ramdisk/root}描述擦除FALSH中的相应区域参数loader–擦除FALSH中loder区域kernel–擦除FLASH中的kernel区域root–擦除FLASH中的root区域ramdisk–擦除FLASH中的ramdisk区域举例bbooterasekernelboot用法Bootboot[addr]描述在SDRAM中运行kernel通过参数中指定的地址运行kernel参数addr–kernelimageaddress举例bbootbootset用法set[name][value]描述设置IP地址,MAC地址以及autoboot参数参数Name[myipaddr][destipaddr][myhaddr][autoboot]Value[ip][ip][macaddress][loadkernel;boot]举例bbootset//输出设置信息bbootsetmyipaddr192.168.100.X//改变目标平台的IP地址bbootsetdestipaddr192.168.100.XX//改变主机平台的IP地址bbootsetmyhaddr00:0E:6F:CE:59:21//设置目标平台的MAC地址bbootsetautobootloadkernel;boot//装载kernel后自动启动ping用法Ping描述检查目标平台和主机平台的网络连接参数Ping主机平台的ip地址举例Ping192.168.100.xxreboot用法Reboot描述软件复位参数None举例RebootBlob打印跟踪实验Blob第1阶段分析第一步:打开Boot-XSBase270\src\start.S,该源码文件完成系统的Blob程序的第1阶段的编程及程序调用实现过程。(主要包括:GPIO的初始化调用-bldefine_gpio;系统时钟信号使能调用-blclock_enable;SDRAM内存设置调用-blsetup_memory、Blob自拷贝、堆栈的设置-ldrsp,stack_point-4以及跳转到Blob第二阶段-ldrpc,main)第二步:打开Boot-XSBase270\src\fixgpio.S文件,找到配置GPIO的define_gpio函数,该函数主要实现对系统微处理器的GPIO的初始化过程。其中涉及GPIO的输入/输出方向设置寄存器:GPDRn、置位和清零寄存器(GPSRn、GPCRn)以及功能配置寄存器GPFRnL、GPFRnH等。第三步:打开Boot-XSBase270\src\memsetup.S文件,找到setup_memory函数,该函数主要对系统外部的DRAM、SRAM(FLASH)、PCCard接口等存储设备所需参数进行配置,其中包括:MDCNFG、MDREFR、MSCn等寄存器的配置。Blob第2阶段分析第四步:打开Boot-XSBase270\src\main.c文件,找到intmain(void)函数,该函数完成系统的Blob程序的第2阶段的硬件初始化和菜单显示等程序调用实现过程(主要包括:终端显示串口初始化-uart_init();系统定时器-time_init();存储分配映射配置-config_init();Flash内存器操作配置初始化-iflash_init();以及网络芯片初始化-eth_init();等本阶段硬件初始化过程调用;提示延时、菜单显示调用)第五步:打开Boot-XSBase270\src\serial.c文件,分别找到uart_init(void)、intuart_putc(intch)和intuart_getc(void)三个串口操作基本函数。主要完成串口初始化与从串口获取和输出字符等操作。实现对PXA270的串口相关寄存器进行配置。其他与串口相关的函数都直接或间接调用这三个函数。串口输入输出函数第六步:打开Boot-XSBase270\src\Partition.c文件,找到init_map(void)和find_map(constchar*name)函数,这两个函数主要完成对存储分配映射进行配置和查找某个指定类型的内存映射参数。其中parts结构体数组定义了整个系统的SRAM、SDRAM等内存映射的相关参数。内存分配映射结构体数组第七步:打开Boot-XSBase270\src\Flash.c文件,该文件中函数主要完成对flash的编程、擦除、加/解锁等操作。其中iflash_init(void)函数主要实现查询平台的flash存储芯片的相关信息,flash操作的命令可参考flash芯片的资料文档。第八步:打开Boot-XSBase270\src\Flash.c文件,该文件中函数主要实现lan91c111网络芯片的底层操作配置操作,其中lan91c111_init(void)函数由main.c文件中的eth_init()函数间接调用。具体寄存器操作方法参考lan91c111的资料文档。第九步:打开Boot-XSBase270\src\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、

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功