1、第十章第十章 内容回顾内容回顾为什么需要交叉编译交叉调试主要工具 U-Boot的编译和使用的编译和使用第11章本章目标本章目标理解什么是Bootloader,它的作用是什么;U-Boot的结构;掌握如何编译U-Boot;掌握使用U-Boot的命令、工具。本章结构本章结构嵌入式系统的引导代码嵌入式系统的引导代码U-Boot的编译和使用的编译和使用U-Boot配置与编译配置与编译U-Boot简介简介把把U-Boot烧入烧入FlashU-Boot主要功能主要功能U-Boot主要目录结构主要目录结构TFTP工具使用工具使用U-Boot的命令使用的命令使用初拾初拾Boot-LoaderBoot-Load
2、er 启动流程启动流程UBoot 命令的介绍命令的介绍常用命令使用说明常用命令使用说明命令简写说明命令简写说明把文件写入把文件写入NandFlash11.1.1 初识初识BootLoader嵌入式linux系统从软件的角度看通常可以分为4个层次:1、引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分2、Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3、文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。4、用户应用程序。大多数 Boot Loader 都包含两种不同的操作模式:“启动加载”模式下载
3、”模式这种区别仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。11.1.1 初识初识BootLoader11.1.2 BootLoader启动流程启动流程 Boot Loader 的 stage1 通常包括以下步骤(以执行的先后顺序):硬件设备初始化。为加载 Boot Loader 的 stage2 准备 RAM 空间。拷贝 Boot Loader 的 stage2 到 RAM 空间中。设置好堆栈。跳转到 stage2 的 C 入口点。11.1.2 BootLoader启动流程启动流程 Boot
4、 Loader 的 stage2 通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备。检测系统内存映射(memory map)。将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。为内核设置启动参数。调用内核。Bootloader的启动流程的启动流程11.1.2 BootLoader启动流程启动流程11.2 U-Boot简介简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统.其目前要支持的目标操作系统包括Open
5、BSD、NetBSD、FreeBSD、4.4BSD、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks、LynxOS、pSOS、QNX、RTEMS和ARTOS。支持的处理器结构:PowerPC,MIPS、x86、ARM、Nios、xScale11.3 U-Boot配置与编译配置与编译make distclean 清除与平台相关的文件make smdk2440_config 配置使用SMDK2440make CROSS_COMPILE=arm-linux-交叉编译 11.4 U-Boot烧录烧录 通过仿真器烧入uboot通过仿真器uboot烧写到f
6、lash中就可以从NAND flash启动了。通过JTAG接口,由工具烧入flash JTAG简介简介JTAG(Joint Test Action Group)是IEEE制定的用于检测PCB和IC的标准。通过这个标准,可对具有JTAG接口芯片的硬件电路进行边界扫描和故障检测。详细内容可查阅IEEE1149.1协议。目前,很多高档微处理器都带有JTAG接口,像ARM7,ARM9,DSP等。11.4 U-Boot烧录烧录简易简易JTAG介绍介绍简易JTAG是在PC上用软件来模拟JTAG时序与包含JTAG接口的ARM开发板进行通讯的工具。常用的配合简易JTAG的烧写Flash的工具软件有FlasgP
7、GM,FluteD,sjf2410/2440等。使用S3C2440开发板时可以用配套开发工具SJF2440。11.4 U-Boot烧录烧录11.5 U-Boot主要目录主要目录目录树|-board|-common|-cpu|-disk|-doc|-drivers|-dtt|-examples|-fs|-include|-lib_arm|-lib_generic|-lib_i386|-lib_m68k|-lib_microblaze|-lib_mips|-lib_nios|-lib_nios2|-lib_ppc|-net|-post|-rtc-tools11.6 U-Boot主要功能主要功能系统
8、引导支持NFS挂载、RAMDISK 系统引导(压缩或非压缩)形式的根文件系统支持从Flash中引导压缩或非压缩系统内核基本辅助 强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最为功能强劲支持目标板环境参数的多种存储方式,如Flash、NVRAM、EEPROMCRC32校验,可校验Flash中内核、RAMDISK镜像文件是否完好设备驱动串口、SDRAM、Flash、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持上电自检功能SDRAM、Flash大小自动检测;SDRAM
9、 故障检测;CPU型号特殊功能XIP内核引导11.7 U-Boot主要命令主要命令?-alias for helpautoscr-run script from memorybase-print or set address offsetbdinfo-print Board Info structureboot-boot default,i.e.,run bootcmdbootd-boot default,i.e.,run bootcmdbootelf-Boot from an ELF image in memorybootm-boot application image from memor
10、ybootp-boot image via network using BootP/TFTP protocolbootvx-Boot vxWorks from an ELF imagecmp-memory compareconinfo-print console devices and informationcp-memory copy11.7 U-Boot主要命令主要命令crc32-checksum calculationdate-get/set/reset date&timedcache-enable or disable data cacheecho-echo args to conso
11、leerase-erase FLASH memoryflinfo-print FLASH memory informationgo-start application at address addrhelp-print online helpicache-enable or disable instruction cacheiminfo-print header information for application imageimls-list all images found in flashitest-return true/false on integer comparemw-memo
12、ry write(fill)11.7 U-Boot主要命令主要命令mw-memory write(fill)nand-NAND sub-systemnboot-boot from NAND devicenfs-boot image via network using NFS protocolnm-memory modify(constant address)ping-send ICMP ECHO_REQUEST to network hostprintenv-print environment variablesprotect-enable or disable FLASH write pro
13、tectionrarpboot-boot image via network using RARP/TFTP protocolreset-Perform RESET of the CPUrun-run commands in an environment variablesaveenv-save environment variables to persistent storage11.7 U-Boot主要命令主要命令setenv-set environment variablessleep-delay execution for some timetftpboot-boot image vi
14、a network using TFTP protocolversion-print monitor version11.8 TFTP工具使用工具使用TFTP协议是简单的文件传输协议,适合目标板Bootloader的使用。TFTP文件传输基于UDP。我们通过TFTP来传输目标板启动需要的内核映象文件zImage和ramdisk。11.8 TFTP工具使用工具使用U-Boot tftp 21000000 zImageTFTP from server 192.168.1.2;our IP address is 192.168.1.100Filename zImage.Load address:0
15、x21000000Loading:#doneBytes transferred=1324260(1434e4 hex)本章本章总结总结嵌入式系统的引导代码嵌入式系统的引导代码U-Boot的编译和使用的编译和使用U-Boot配置与编译配置与编译U-Boot简介简介把把U-Boot烧入烧入FlashU-Boot主要功能主要功能U-Boot主要目录结构主要目录结构TFTP工具使用工具使用U-Boot的命令使用的命令使用初拾初拾Boot-LoaderBoot-Loader 启动流程启动流程UBoot 命令的介绍命令的介绍常用命令使用说明常用命令使用说明命令简写说明命令简写说明把文件写入把文件写入Nan
16、dFlashBoot LoaderBoot Loader不但可以支不但可以支持持Linux Linux 还支持很多其他还支持很多其他的操作系统的操作系统Boot Loader Boot Loader 有系统引有系统引导导,设备驱动设备驱动,基本辅助基本辅助,上电自检等功能上电自检等功能实验实验任务1:UBOOT的编译的编译 任务2:UBOOT.bin文件的烧录文件的烧录 任务3:TFTP工具使用工具使用 任务4:UBOOT的命令使用的命令使用 任务任务1注意事项提示1:注意平台配置文件注意make distclean命令的使用任务任务2注意事项提示1:注意JTAG正确连接注意选择烧录的FLASH的型号任务任务3注意事项提示1:注意TFTP服务启动后,他对应的服务目录。任务任务4注意事项提示1:UBOOT命令很多,掌握使用方法。