【文档说明】嵌入式系统教学课件:35arm处理器初始化分析.ppt,共(86)页,1.113 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92650.html
以下为本文档部分文字说明:
BOOTLOADER现在计算机系统多采用“挥发性”的半导体存储器作为内存,系统加电后主存内没有内容,需要非挥发性存储存储器启动时的代码;PC系统中的启动流程:BIOS(EPROM)执行启动流程从硬
盘0扇区读取采用操作系统引导程序由操作系统引导程序完成整个操作系统的加载BOOTLOADER嵌入式系统采用EEPROM或FLASH等介质存储操作系统映像。是内存的一部分,操作系统映像也可以在EEPROM或FLASH中就地运行。但是,实际上大多数嵌入式系统还是采用了引导/装入程序,而不
让可执行映像在EEPROM或FLASH中就地执行:首先是效率方面的考虑。操作系统的多样性;有利于嵌入式系统的调试;BOOTLOADER简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立
内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个
通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。一、什么是bootloader(引导加载程序)Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代
码,相当于PC机的BIOS。Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。BootloaderBootparametersKernelRootfilesystem应用程序实时操作系统(R
TOS)输入输出接口处理器/ARM核MMU/CacheSOC/SOPCUSBGPIOIISLCDUART和IrDAADC/DACFPGA/CPLDDSP/浮点运算协处理器DMA电源管理人机交互接口LCD/触摸屏、键盘、鼠标设备驱动程序、HAL、BSP文件系统/图形用户应用程序接
口驱动层OS层应用层软件硬件以太网看门狗及复位电路Timer/RTCCANFlashEEPROMSDRAMSRAM内存典型的嵌入式系统组成Bootloader在系统中的位置BootLoader的主要功能
初始化硬件设备建立内存空间的映射图,将部分映像和操作系统装入RAM,再转入这部分映像,此后就在RAM中执行了。从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统的内核准备好正确的环境。系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。
比如,基于XScalecore的CPU在复位时通常都从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(如:PROM、EEPROM或FLASH等)被映射到这个预先安排的地址上。因此在系统加电后,CPU
将首先执行BootLoader程序。通常的硬件初始化工作:关闭处理器内部指令/数据cache等关闭中断关闭看门狗配置PLL配置内存初始化各工作模式的堆栈配置中断拷贝RW段,初始化ZI段Bootloader的地址:在嵌入式系统中,系统
加电复位后,几乎所有的CPU都从由复位地址上取指令。比如,基于ARM处理器核的CPU在复位时通常都从地址0x00000000取它的第一条指令。在这个地址处安排的就是Bootloader。backBootloader是严重地依赖于硬件而实现的。
每种不同体系结构的处理器都有不同的Bootloader。不过Bootloader的发展也趋于支持多种体系结构,如现在比较成熟的vivi、RedBoot和U-Boot等。几种发布的Bootloader表7-1开放源码的Linux引导
程序BootloaderMonitor描述X86ARMPowerPCLILO否Linux磁盘引导程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否从DOS引导Linux是否否ROLO否从ROM引导Linux而不需要BIOS是否否Etherboot否通过以太网卡启动Lin
ux系统的固件是否否LinuxBIOS否完全替代BUIS的Linux引导程序是否否BLOB否LART等硬件平台的引导程序否是否U-Boot是通用引导程序是是是RdB基于C的引导程序1、vivivivi是韩国Mizi公司开发的Bootloader,适用于
ARM9处理器。2、RedBootRedBoot即红帽(RedHat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器。3、U-BootU-Boot(UniversalBootloader)由德
国DENX小组开发,是一款目前功能较为强大的开源Bootloader程序,它支持多种处理器平台,包括ARM、PowerPC、MIPS等。backBootloader操作模式大多数Bootloader都有两种不同的
操作模式:“启动加载”模式和“下载”模式。其区别对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。loadermemorybitsflashbits1
、启动加载(Bootloading)模式启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。启动加载模式是
Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。2、下载(Downloading)模式下载方式:在这种模式下,目标机上的Bootloader将通过
串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。下载模式应用场合:
Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。用户应用接口:工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。如在RedBoot下,将出
现“RedBoot>”提示符;在viviBootloader下出现“vivi>”提示符。下载(Downloading)模式示例RedBoot的Bootloader像RedBoot或U-Boot等功能强大的Bootloader通常都可同时支持
这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,RedBoot在启动时处于正常的启动加载模式,但是它会延时3秒等待终端用户按下任意键而将RedBoot切换到下载模式。如在等待时间内没有接收到用户按键,则继续启动L
inux内核。backBootloader启动过程Bootloader的启动可以分为两个阶段1、第一阶段阶段1主要包含依赖于CPU体系结构及硬件设备的初始化等。通常都用汇编语言来实现。这个阶段的任务有5:(1)、基本的硬
件设备初始化这是Bootloader一开始就执行的操作,其目的是为阶段2的执行、以及随后kernel的执行准备好一些基本的硬件环境。它通常包括以下工作:关闭处理器内部指令/数据cache等关闭中断关闭看门狗配置PLL配置内存初始化各工作
模式的堆栈配置中断拷贝RW段,初始化ZI段S3C44B0X与FLASH的连接(HalfWord方式)测试模式1132位0116位108位00Bank0数据宽度OM0OM1ARM7引导程序示例(2)、为阶段2代码准
备RAM空间为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。准备RAM空间考虑的因素:阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。(3)、拷贝阶段2代码到RAM空间(4)、设置好堆栈堆栈指针sp设置在1MB的RAM空间的最顶端(堆栈向下生长)。(5)、跳转到阶段2
的C程序入口点在上述一切都就绪后,就可以跳转到Bootloader的stage2去执行了。stage2_start.........stage1为stage2可执行映像准备的RAM地址范围,大小:1MBramd
isk...(blank)内核映像...(blank)stage2可执行映像可能的最大大小:1MBstage1可执行映像大小:1MBRAM地址空间Flash地址空间堆栈指针sp:stage_end-40x0001,000
0(64KB)0x0000,0400(1KB)0x0000,0000...(blank)Bootloader的stage2可执行映像刚被拷贝到RAM空间时的系统内存布局2、第二阶段阶段2通常用C语言来实现,以便
实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的主要任务有5:(1)、初始化本阶段要使用到的硬件至少初始化一个串口,以便和终端用户进行I/O输出信息等。(2)、检测系统内存映射(memorymap)所谓内存映射,就是指在整个物理地
址空间中有哪些地址范围被分配用来作为系统的RAM单元。为后面使用RAM、运行程序做好准备。(3)、将kernel和根文件系统映像从flash读到RAM空间(4)、为kernel设置启动参数这是在调用内核之前应该做的准备工作。Linux2.4.x以后的内核都期望以标记列表(taggedlist
)的形式来传递启动参数。启动参数标记列表方法:以ATAG_CORE标记开始,以ATAG_NONE标记结束。在嵌入式Linux系统中,通常需要由BootLoader设置的启动参数有:ATAG_CORE、ATAG_MEM(内存映射)、ATAG_NONE等。(5
)、调用内核Bootloader调用Linuxkernel的方法是直接跳转到内核的第一条指令处。在跳转时必须满足下列条件:1)、CPU寄存器的设置:R0为0;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址。(机器类型参见linux/arch/arm/tools/mach-typ
es目录)2)、CPU模式:CPU必须设置为SVC模式,必须禁止中断(IRQs和FIQs)。3)、MMU和Cache的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。back.2U-Boot工程简介最早,DENX软件工程中心的WolfgangDenk基于
8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,SysgoGmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程为
基础,创建了U-Boot工程。现在,U-Boot已经能够支持PowerPC、ARM、X86、MIPS体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码Bootloader。目前仍然由DENX的WolfgangDenk维护。u-boot系统启动流程大多数boo
tloader都分为stage1和stage2两大部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有
更好的可读性和移植性。stage1(start.s代码结构)u-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下:(1)定义入口。由于一个可执行的IMage必须有一个入口点,并且只能有一个全局入口,通常这个入口放
在ROM(flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。(2)设置异常向量(ExceptionVector)。(3)设置CPU的速度、时钟频率及中断控制寄存器。(4)初始化内存控制器。(5)将ROM中的程序复制到RAM中。(6)初始
化堆栈。(7)转到RAM中执行,该工作可使用指令LdrPC来完成。2.2stage2C语言代码部分LibARM/board.c中的startarmboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整
个u-boot(armboot)的主函数,该函数主要完成如下操作:(1)调用一系列的初始化函数。(2)初始化Flash设备。(3)初始化系统内存分配函数。(4)如果目标系统拥有NAND设备,则初始化NAND设备。(5)如果目标系统有显示设备,则初始化该类设备。(6)初始化相关
网络设备,填写IP、MAC地址等。(7)进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。.3U-Boot编译解压U-Boot-1.3.1.tar.bz2就可以得到全部U-Boot源程序。在顶层目录下
有18个子目录,分别存放和管理不同的源程序。(1)与处理器体系结构或者开发板硬件直接相关。(2)一些通用的函数或者驱动程序。(3)U-Boot的应用程序、工具或者文件。表7-2U-Boot的源码顶层目录说明目录特性解释说明board平台依赖存放电路板相关的目录文件,如R
PXlite(mpc8xx)、smdk2410(arm920t)、sc520_cdp(x86)等目录cpu平台依赖存放CPU相关的目录文件,如mpc8xx、ppc4xx、arm720t、arm920t、xscale、i386等目录lib_ppc平台依赖存放对Powe
rPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数lib_arm平台依赖存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数lib_i386平台依赖存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数includ
e通用头文件和开发板配置文件,所有开发板的配置文件都在configs目录下common通用通用的多功能函数实现lib_generic通用通用库函数的实现Net通用存放网络的程序Fs通用存放文件系统的程序Post通用存放上电自检程序dri
vers通用通用的设备驱动程序,主要有以太网接口的驱动Disk通用硬盘接口程序Rtc通用RTC的驱动程序Dtt通用数字温度测量器或者传感器的驱动examples应用例程一些独立运行的应用程序的例子,如helloworldtools工具存放制作S-Record或者U-Boot格式的镜像
等工具,如mkimageDoc文档开发使用文档与移植相关的主要文件夹(1)CPU它的每个子文件夹里都有如下文件:makefileconfig.mkcpu.c和处理器相关的代码interrupts.c中断处理代
码serial.c串口初始化代码start.s全局开始启动代码与移植相关的主要文件夹(2)BOARD它的每个子文件夹里都有如下文件:makefileconfig.mksmdk2410.c和板子相关的代码(以smdk2410为例)flash.cf
lash操作代码memSetup.s初始化SDRAM代码u-boot.lds对应的连接文件与移植相关的主要文件夹(3)lib_ARM体系结构下的相关实现代码,比如memcpy等的汇编语言的优化实现。1.顶层目录下的Makefile2.
开发板配置头文件3.编译结果支持ARM-920T内核的代码修改由于U-Boot-2.1.1提供对ARM-920T内核的直接支持,所以本步骤不需要做任何工作,本文为了让读者了解BootLoder移植的
通用模式,在此只是稍加提示。配置自己的开发板建立自己开发板的目录和相关文件。1)在include/configs目录中以smdk2410.h为模板添加头文件S3C2410.h(cpsmdk2410.hS3C
2410.h)。这个文件是开发板的配置文件,它包括开发板的CPU、系统时钟、RAM、Flash系统及其它相关的配置信息。2)在board/目录下创建S3C2410目录。拷贝smdk2410目录下所有文件到S3C2410目录下,共有如下六个文件:flh、t、Flash
.cU-Boot读、写和删除Flash设备的源代码文件。由于不同开发板中Flash存储器的种类各不相同,所以,修改flash.c时需参考相应的Flash芯片手册。它包括如下几个函数:unsignedlongflash-in
it(void),Flash初始化;intflash-erase(flash-info-t*info,ints-first,ints-last),Flash擦除;volatilestaticintwrite-hword(flash-info-t*info,ul
ongdest,ulongdata),Flash写入;intwrite-buff(flash-info-t*info,uchar*src,ulongaddr,ulongcnt),从内存复制数据。memsetup.c初始化时钟、SMC控制器和SDRAM控制器。为了以后能用U-Boot的G
O命令执行修改过的用loadb或tftp下载的U-Boot.在标记符“0:”上加入五句:movr3,pcldrr4,=0x3FFF0000andr3,r3,r4//以上三句得到实际启动的内存地址addr0
,r0,r3//用GO命令调试uboot时,启动地址在RAMaddr2,r2,r3//把初始化内存信息的地址,加上实际起动地址S3C2410.C设置各种总线时钟,打开数据Cache和指令Cache,并设置相关内存参数。Makefile修改:OBJS:=
S3C2410.oflash.omemsetup.oU-Boot.lds.作如下修改:.text{cpu/arm920t/start.o(.text)*(.text)}config.mk用于设置程序连接的起始地址,如果想在U-Boot中
增加功能,可以留下6M的空间,修改33F80000为33A00000。修改顶层Makefile回到u-boot-2.1.1目录[root@localhostu-boot-2.1.1]#geditMakefilesmdk2410_config:
unconfig@$(MKCONFIG)$(@:_config=)armarm920tsmdk2410NULLs3c24x0在后面添加自己的配置:S3C2410_config:unconfig@$(MK
CONFIG)$(@:_config=)armarm920tS3C2410NULLs3c24x0各项的意思如下arm:CPU的架构(ARCH)arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录。S3C2410:开发板的型号(BOARD),对应于board/S3
C2410目录。NULL:开发者/或经销商(vender)。s3c24x0:片上系统(SOC)。编译U-Boot编译命令[root@localhost]#cdu-boot-2.1.1[root@localhost]#makedistcl
ean[root@localhost]#makes3C2410_config[root@localhost]#make编译结果u-boot–inELFformatu-boot.bin–arawbinaryimageu-boot.srec–inMotor
olaTMsrecformat表7-3U-Boot编译生成的镜像文件文件名称说明文件名称说明System.mapU-Boot映像的符号表U-Boot.binU-Boot映像原始的二进制格式U-BootU-Boot映像的ELF格式U-Boot.srecU-Boot映像的S-Re
cord格式.4U-Boot的移植思路U-Boot能够支持多种体系结构的处理器,支持的开发板也越来越多。因为Bootloader是完全依赖硬件平台的,所以在新电路板上需要移植U-Boot程序。开始移植U-Boot之前,要先熟悉
硬件电路板和处理器。以S3C2410处理器的开发板为例,U-Boot的高版本已经支持SMDK2410开发板。我们可以基于SMDK2410移植,那么先把SMDK2410编译通过。移植U-Boot的基本步骤如下。
(1)在顶层Makefile中为开发板添加新的配置选项,使用已有的配置项目为例。(2)创建一个新目录存放开发板相关的代码,并且添加新文件。(3)为开发板添加新的配置文件。(4)配置开发板。(5)编译U-Boot。(6)添加驱动或者功能选项。(7)调试
U-Boot源代码,直到U-Boot在开发板上能够正常启动。.5U-Boot的烧写新开发的电路板没有任何程序可以执行,也就不能启动,需要先将U-Boot烧写到Flash中。如果主板上的EPROM或者Fla
sh能够取下来,就可以通过编程器烧写。例如,计算机BIOS就存储在一块256KB的Flash上,通过插座与主板连接。但是多数嵌入式单板使用贴片的Flash,不能取下来烧写。这种情况可以通过处理器的调试接口,直接对板上的Flash编程。处理器调试接口是为处理器芯片设计
的标准调试接口,包含BDM、JTAG和EJTAG三种接口标准。JTAG(JointTestActionGroup,联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。JTAG接口需要专用的硬件工具来连接。开发板加电(或者复位)时,烧写程序探测到处理器是否
存在,并开始通信,然后把Bootloader下载并烧写到Flash中。这种方式速率很慢,平均每秒钟可以烧写100~200个字节,不过价格却非常便宜。烧写完成后,复位实验板,串口终端应该显示U-Boot的启动信息
。MemoryCommands•base−printorsetaddressoffset¨•crc32−checksumcalculation¨•cmp−memorycompare¨•cp−memorycopy¨•md−memorydisplay¨•mm−memorymodify(
auto−incrementing)¨•mtest−simpleRAMtest¨•mw−memorywrite(fill)¨•nm−memorymodify(constantaddress)¨•loop−infinitelooponaddressrange.6U-Boot
的常用命令U-Boot的常用命令FlashMemoryCommandscp−memorycopy(programflash)¨flinfo−printFLASHmemoryinformation¨erase−
eraseFLASHmemory¨protect−enableordisableFLASHwriteprotectionU-Boot的常用命令ExecutionControlCommandsbootm−bootappl
icationimagefrommemory¨bootelf−BootfromanELFimageinmemory¨go−startapplicationataddress'addr'U-Boot的常用命令Othersbootp−bootimagevianetw
orkusingbootp/tftpprotocolecho−ehcoargstoconsole¨nand−legacyNANDsub-systemiminfo−printheaderinformationforapplicati
onimageloadb−loadbinaryfileoverseriallineU-Boot的常用命令Othersloads——loadS-Recordfileoverseriallinenfs——bootima
gevianetworkusingNFSprotocolprintenv——printenvironmentvariablesrarpboot——bootimagevianetworkusingRARP/TFTPprotocolrun——runcommandsinan
environmentvariablesetenv——setenvironmentvariablessleep——delayexecutionforsometime1、bootmbootm[addr[arg...]]-b
ootapplicationimagestoredinmemorypassingarguments'arg...';whenbootingaLinuxkernel,'arg'canbetheaddressofaninitrdimagebootm命
令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给
Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。2、bootpbootp[loadAddress][bootfilename]bootp命令通过bootp请求,要求DHCP服务器分配IP
地址,然后通过TFTP协议下载指定的文件到内存。第1个参数是下载文件存放的内存地址。第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。3、cmpcmp[.b,.w,.l]addr1addr2count-comparememorycmp命令可以比较2块内存中的内容。.b以字
节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。第1个参数addr1是第一块内存的起始地址。第2个参数addr2是第二块内存的起始地址。第3个参数count是要比较的数目,单位按照字节、字或者长字。4、cpcp[.b,.w,.l]sourc
etargetcount-copymemorycp命令可以在内存中复制数据块,包括对Flash的读写操作。第1个参数source是要复制的数据块起始地址。第2个参数target是数据块要复制到的地址。这个地址如果在F
lash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。第3个参数count是要复制的数目,根据cp.bcp.wcp.l分别以字节、字、长字为单位。
5、crc32crc32addresscount[addr]-computeCRC32checksum[saveataddr]crc32命令可以计算存储数据的校验和。第1个参数address是需要校验的数据起始地址。第2个参数
count是要校验的数据字节数。第3个参数addr用来指定保存结果的地址。6、echoecho[args..]-echoargstoconsole;csuppressesnewlineecho命令回显参数。7、eraseerasestartend-eraseFLA
SHfromaddr'start'toaddr'end'eraseN:SF[-SL]-erasesectorsSF-SLinFLASHbank#NerasebankN-eraseFLASHbank#Neraseall-eraseallFLASHbankserase命
令可以擦Flash。参数必须指定Flash擦除的范围。按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000–0x3ffff区域命令为erase200003ffff。按照组和扇区,N表示Flash的组号
,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。8、flinfoflinfo-printinformationforallFLASHmemorybanksflinfoN
-printinformationforFLASHmemorybank#Nflinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。9、gogoaddr[arg...]-startapp
licationataddress'addr'passing'arg'asargumentsgo命令可以执行应用程序。第1个参数是要执行程序的入口地址。第2个可选参数是传递给程序的参数,可以不用。10、minfo
iminfoaddr[addr...]-printheaderinformationforapplicationimagestartingataddress'addr'inmemory;thisincludesverificationoftheimageco
ntents(magicnumber,headerandpayloadchecksums)iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。第1个参数指定映像的起始地址。可选的参数是指定更多的映像地
址。11、loadbloadb[off][baud]-loadbinaryfileoverseriallinewithoffset'off'andbaudrate'baud'loadb命令可以通过串口线下载二进制格式文件。12、loadsloads[
off]-loadS-Recordfileoverseriallinewithoffset'off'loads命令可以通过串口线下载S-Record格式文件。13、mwmw[.b,.w,.l]addressvalue[count]-writememor
ymw命令可以按照字节、字、长字写内存,.b.w.l的用法与cp命令相同。第1个参数address是要写的内存地址。第2个参数value是要写的值。第3个可选参数count是要写单位值的数目。14、nf
snfs[loadAddress][hostipaddr:bootfilename]nfs命令可以使用NFS网络协议通过网络启动映像。15、nmnm[.b,.w,.l]address-memorymodify,readandkeepaddressnm命令可以修改内存,
可以按照字节、字、长字操作。参数address是要读出并且修改的内存地址。16、printenvprintenv-printvaluesofallenvironmentvariablesprinten
vname...-printvalueofenvironmentvariable'name'printenv命令打印环境变量。可以打印全部环境变量,也可以只打印参数中列出的环境变量。17、protectprotectonstartend-protectFlashfromadd
r'start'toaddr'end'protectonN:SF[-SL]-protectsectorsSF-SLinFlashbank#NprotectonbankN-protectFlashbank#Nprotectonall-protectallFlashb
anksprotectoffstartend-makeFlashfromaddr'start'toaddr'end'writable17、protectprotectoffN:SF[-SL]-makesectorsSF-SLwritableinFlashban
k#NprotectoffbankN-makeFlashbank#Nwritableprotectoffall-makeallFlashbankswritableprotect命令是对Flash写保护的操作,可以使能和解除写保护。第1个参数on代表使能写保护;off代表解除写保护。第
2、3参数是指定Flash写保护操作范围,跟擦除的方式相同。18、rarpbootrarpboot[loadAddress][bootfilename]rarboot命令可以使用TFTP协议通过网络启动映像。也就是把
指定的文件下载到指定地址,然后执行。第1个参数是映像文件下载到的内存地址。第2个参数是要下载执行的映像文件。19、runrunvar[...]-runthecommandsintheenvironmentvariable(
s)'var'run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。20、setenvsetenvnamevalue...-setenvironmentvariable'name'to'value...'setenvname-deleteenvironmen
tvariable'name'setenv命令可以设置环境变量。第1个参数是环境变量的名称。第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。21、sleepsleepN-delayexecutionforNsec
onds(Nis_decimal_!!!)sleep命令可以延迟N秒钟执行,N为十进制数。22、tftpboottftpboot[loadAddress][bootfilename]tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另
外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。第1个参数loadAddress是下载到的内存地址。第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。