如何通过串口烧写uboot
- 格式:pdf
- 大小:334.63 KB
- 文档页数:11
OMAP-L138的u-boot烧写所需软件:(这里使用合众达公司提供的开发套件)1)CCS3.3Version3.3.82.132)DSP仿真器SEDD-XDS560V23)SecureCRT6.5所需文件:1)nand-writer_ccs33.out2)OMAPL138_ARM.gel3)ubl-nand.bin4)u-boot.bin首先在光盘资料下找到相应的软件,安装好CCS3.3和SEED-XDS560V2仿真器驱动。
连接好硬件,包括电源,串口,网口(网线要使用交叉网线),JTAG口。
第一步打开开发板的电源,然后打开CCS3.3setup开发环境。
如下图所示:选择对应的仿真器驱动,在Family下找到OMAP系列,在Platform 下找到SEEDXDS560V2系列下的OMAP-L138板子,如下图所示:点击Add按钮,再点击Save&Quit按钮保存退出。
如下图所示:第二步启动CCS Studio,仿真器连接正确将进入到以下界面,此时双击ARM9_0选项,进入开发环境界面。
第三步进入CCS开发界面后,如下图所示:此时仿真器并未连接上,需要点击Debug菜单下的connect选项,当仿真器连接上后,左下角将会提示target已经连接上。
第四步加载OMAP-L138_ARM.gel文件。
在选项上点击右键,选择Load GEL选项,选择所在路径(资料光盘中可以找到)的OMAP-L138_ARM.gel文件。
如下图所示:第五步烧写UBL(user Boot Loader)。
在CCS的菜单File栏下找到Load Program选项,弹出如下界面:在对应的路径下找到nand-writer_ccs33.out文件,加载完成之后,点击Debug菜单下的Run(快捷键F5)选项。
在弹出的对话框中输入:armais,然后点击OK按钮,如下图所示:紧接着继续回弹出如下对话框,输入ubl-nand.bin的路径,然后点击OK按钮,如下图所示:等待ubl-nand.bin烧写完成,出现如下图所示则表示烧写成功。
如何烧写Uboot
预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制
基于ARM 的系统开发的初期,烧写FLASH 是必不可少的步骤。
特别是bootloader的烧写,非常重要,有了bootloader其他的程序就可以通过串口或者网口进行烧写了。
我们提供的bootloader是u-boot 1.1.1版本
用并口延长线连接 JTAG到开发板 JTAG接口和电脑并口(接上并口线而不连接开发板JTAG板子上面的电源指示灯亮,接上开发板JTAG灯熄灭,开发板上电后指示灯又亮)
安装好 flashpgm软件后,进行如下配置
点击菜单File-Open选择TXMCU(fk).ocd文件。
Ocd文件是一个硬件系统的配置文件,设置了CPU,FLASH类型,FLASH接口的位宽等具体的参数,可通过FlashPgm生成。
光盘上已经带有一个已经配置好的TXMCU(fk).ocd文件。
在光盘,如图所示
配置好.Ocd文件后,点击FlashPgm软件左下角“Flash ID”按钮检测一下Flash ID,
以测试JTAG 连接是否正常。
如果能够正常读取出来,表明JTAG 连接没有问题,如下图:
点击Program按钮,在出现的对话框中选择编译好的u-boot文件(ELF格式的)『在光盘里』,然后选择在编程前先擦除选项,其他的3 个地址不需要修改。
点击Program。
首先将会擦除相应的Flash 区域,然后编程和校验。
进度条将显示当前编程进度。
如下图所示:。
uboot中烧录方法
在嵌入式系统开发中,U-Boot是一个常用的引导加载程序,用
于引导嵌入式设备的操作系统。
烧录U-Boot到嵌入式设备通常涉及
以下几种方法:
1. 串口烧录,通过串口连接嵌入式设备和主机,使用串口通信
工具(如minicom、putty等)将U-Boot固件通过串口传输到设备
的存储器中。
这种方法需要设备具备串口接口,并且需要主机具备
串口通信工具和相应的串口线缆。
2. TFTP烧录,使用TFTP(Trivial File Transfer Protocol)通过网络将U-Boot固件传输到嵌入式设备的存储器中。
在设备启动时,U-Boot会尝试从网络上的TFTP服务器下载固件。
这种方法需
要设备处于能够访问网络的环境中,并且需要在网络中设置好TFTP
服务器。
3. SD卡烧录,将U-Boot固件写入SD卡,然后将SD卡插入嵌
入式设备,设备在启动时会读取SD卡中的U-Boot固件。
这种方法
需要主机具备SD卡写入工具,如dd命令或Win32 Disk Imager等。
4. JTAG烧录,使用JTAG(Joint Test Action Group)接口连接嵌入式设备和主机,通过专用的JTAG调试器将U-Boot固件烧录到设备的存储器中。
这种方法通常需要专门的硬件设备和相应的调试软件。
在选择烧录方法时,需要根据具体的嵌入式设备和开发环境来决定,确保选择的方法能够有效、安全地将U-Boot固件烧录到设备中,并且需要注意备份设备中原有的U-Boot固件以防止意外情况发生。
希望这些信息能够帮助你更好地理解在U-Boot中的烧录方法。
1\拨动S2切换到NAND,同时连接串口线到PC且假设已经准备好。
2、开发板加电,然后在串口控制台上,按任意键进入uboot命令模式#############对A9烧写uboot############1、对emmc(A9的flash)进行分区fdisk -c 0 320 1540 5202、格式化分区fatformat mmc 0:1ext3format mmc 0:2ext3format mmc 0:3ext3format mmc 0:43、烧写uboot需要的文件1)打开dnw软件并配置,配置Download Address为0xc00000002)在u-boot中运行命令emmc open 0(打开emmc开始烧写)3)开始下载用usb线将A9的macroUSB接口和PC机连接,电脑端打开dnw软件通过pc的dnw软件依次烧写E4412_N.bl1.bin bl2.bin u-boot.bin E4412_tzsw.bina) 在uboot命令行输入命令:dnw (进入dnw下载模式)b) PC端的dnw软件执行:USB Port-->Transmit-->Transmit 选择在uboot目录下的E4412_N.bl1.binc)下载完后,在uboot命令输入:mmc write 0 0xc0000000 0 0x10依次执行a b c三步烧写bl2.bin u-boot.bin E4412_tzsw.bin步骤c有改动,依次为:mmc write 0 0xc0000000 0x10 0x1Cmmc write 0 0xc0000000 0x30 0x21Dmmc write 0 0xc0000000 0x2c0 0xB84个文件烧写完成后,关闭emmc输入命令:emmc close 0到此UBOOT烧写完毕#########烧写系统################重启进入u-boot命令行并输入:fastboot分区对应烧写的文件kernel Android内核Ramdisk Android ramdiskLinux_kernel Linux 内核Linux_ramdisk Linux ramdiskSystem Android system.imgFat Linux 文件系统rootfs_qtopia_qt4.img 打开doc,进入fastboot.exe目录,fastboot在tools目录下输入命令烧写:fastboot flash kernel ..\Android\zImagefastboot flash ramdisk ..\Android\ramdisk-u.imgFastboot flash system ..\Android\system.imgFastboot -w一下启动参数根据实际触摸屏选择########################设置电容屏启动参数################################# setenv bootargs console=ttySAC0,115200n8 androidboot.console=ttySAC0 ctp=2 skipcali=y vmalloc=512m lcd=S70setenv bootcmd movi read kernel 0 40008000\;movi read rootfs 0 41000000 100000\;bootm 40008000 41000000saveenv########################设置电阻屏启动参数################################# setenv bootargs console=ttySAC0,115200n8 androidboot.console=ttySAC0 ctp=0 skipcali=n vmalloc=512m lcd=S70setenv bootcmd movi read kernel 0 40008000\;movi read rootfs 0 41000000 100000\;bootm 40008000 41000000saveenv。
使用SerialFlashUtility烧写ubl和uboot需要文件(以SPI flash启动为例):(1)ubl-spi_ais.bin(通过AISgen for D800K008工具进行格式转换)(2)u-boot.bin在windows下运行command prompt进入sfh_OMAP-L138.exe所在的文件目录设置S7管脚如下1、Erase the target flash type - This will erase the entire contentsof the flash.o sfh_OMAP-L138.exe -erase在按下板子reset键后2、Flash the memory with a single application image - This will placean application image at address 0x0 of the flash. This must be an AIS format binary, which can be created with the AISgen utilities bundled with the Bootloader User Guide.o sfh_OMAP-L138.exe -flash_noubl在按下板子reset键后3、Flash the memory with a UBL and application image - This will placea UBL at address 0x0 of the flash and an application image, suchas u-boot, at address 0x10000. In general, a UBL is not required, and this mode is only used when restoring the defaultflash contents, as explained in the following section.o..\sfh_OMAP-L138.exe -flash按下板子reset后Ubl和uboot烧写完后,需要将S7开关设置为如下然后重新reset,则打开Hyper terminal,可见表示下载成功,uboot可以成功启动注:/index.php/Serial_Boot_and_Fla sh_Loading_Utility_for_OMAP-L13 8Help:sfh_OMAP-L138.exe 的命令格式编译UBL:生产ubl-spi.bin和ubl-spi.out只有ubl启动(或uboot不能正确启动),串口显示如下:Booting with TI UBLDevice OPP (300MHz, 1.2V)。
烧写U-BOOT该部分内容在Windows 7上测试通过。
1-1-1固化启动代码到SD卡中插SD卡到PC机中,打开SD_Writer,如下图,依次点Scan、Format,Select Boot选mmc。
再点击Program。
成功后把由Uboot源码生成的u-boot.bin文件拷到SD卡中。
1-1-2设置开发板从SD卡启动1.将SD卡插入到TE6410开发板的SD插座中;2.设置开发板的拨码开关SW2,让开发板从SD 卡启动:SW2引脚号Pin 8 Pin 7 Pin 6 Pin 5 Pin 4 Pin 3 Pin 2 Pin 1 引脚定义SELNAND OM4 OM3 OM2 OM1 GPN15 GPN14 GPN13 Nandflash启动 1 0 0 1 1 X X X Norflash启动X 0 1 0 1 X X XSD卡启动 1 1 1 1 1 0 0 0 拨码开关拨到“OFF”位置上表示“0”,另一侧表示“1”。
3.连接好开发板的串口线,USB线,电源线,打开dnw软件(位于用户基础资料光盘的“实用工具”文件夹中,将其拷贝到硬盘上运行)。
点击菜单“Serial Port Connect”,显示连上串口。
连接成功后,标题栏会显示[COM1,115200bps]图表错误!未找到引用源。
.14.打开开发板电源开关,可在DNW窗体上看到SDboot启动信息:图表错误!未找到引用源。
.21-1-3通过设置SW2引脚号Pin 8 Pin 7 Pin 6 Pin 5 Pin 4 Pin 3 Pin 2 Pin 1 引脚定义SELNAND OM4 OM3 OM2 OM1 GPN15 GPN14 GPN13 Nandflash启动 1 0 0 1 1 X X XNorflash启动X 0 1 0 1 X X XSD卡启动 1 1 1 1 1 0 0 0恢复nand启动,在提示时,按下空格键(其他键也可),即可看到所期待的页面:。
uboot烧写命令--yaffs、jiffs和ubifs如果要烧写的镜像的格式是yaffs2或者yaffs格式的,那么在往Nand Flash中烧写该镜像是必须采⽤nand write.yaffs,⽽不能采⽤nand write: nand write.yaffs 0x82000000 0 13cb00将内存地址0x82000000处的内容写到Nand Flash起始地址为0的地⽅,烧写⼤⼩为13cb00 注意:烧写的⼤⼩应该为镜像的实际⼤⼩其中内存的地址(在本例中是0x82000000)必须要4字节对齐,否则会出现如下错误:nand write.yaffs 0x825363b20x00x1a29740NAND write: device 0 offset 0x0, size 0x1a29740data abortpc : [<8081c2a0>] lr : [<8081c288>]sp : 8079e448 ip : 00000008 fp : 8083edd0r10: 01a29740 r9 : 80844340 r8 : 8079ffe0r7 : 00000000 r6 : 00000001 r5 : 825363b2 r4 : 00000800r3 : 8083fd78 r2 : 00000000 r1 : 8083b5b4 r0 : 00000000Flags: nZCv IRQs off FIQs off Mode SVC_32Resetting CPU ...resetting ...如果是4字节对齐:hisilicon # setenv ethaddr 40:61:86:06:33:66;setenv serverip 192.168.253.129;setenv ipaddr 192.168.253.130;hisilicon # mw.b 0x82000000 ff 2200000; tftp 0x82000000 rootfs.img;nand write.yaffs 0x820000000x00x1a29740No such device: 0:2No such device: 0:2MAC: 40-61-86-06-33-66TFTP from server 192.168.253.129; our IP address is192.168.253.130Download Filename 'rootfs.img'.Download to address: 0x82000000Downloading: #################################################doneBytes transferred = 27432768 (1a29740 hex)NAND write: device 0 offset 0x0, size 0x1a29740pure data length is26601472, len_incl_bad is2660761627432768 bytes written: OK但是对于SPI flash并⽆此要求,即下⾯的命令可以正确执⾏:sf write 0x8276BE52 0x0 0x200000如果要烧写的镜像格式是jiffs或者ubifs,可以⽤nand write。
[要领]万利达平板弊病板从新烧写uboot2故障板重新烧写uboot1.1 烧写Uboot1) 确认串口调试版、电源、USB_OTG等部分连接良好,接通电源;2) 用镊子短接R19两脚,同时按下主板上的nReset复位键,重启系统。
同时终端界面打印出:Nand Check Sum ErrorUart negotiation Error等待DNW标题栏出现USB:OK时,说明USB连接成功,再进行下一步。
3) 打开DNW,点击“Configuration”->“option”。
Baud Rate为115200COM Port根据新建超级终端时使用的COM口,本例选择新建超级终端的COM1 USB Port Download Address:0xD0020010。
点击“USB Port” -> “Transmit”,选择下载V210_USB_BL2_10.bin,文件位置即为v210uboot对应版本所在目录4) 再次点击“Configuration”->“option”。
修改USB Port Download Address:0x33E00000。
然后再点击“USB Port” -> “Transmit”,在按下主板上Power键的同时,选择下载u-boot.bin。
注意,请确认点击“打开”时,Power键处于被按下的状态下载成功后串口通讯终端会打印出串口信息,按任意键进入U-boot命令行中。
如下图:5然后超级终端输入命令如下:SMDKV210 # dnw 40000000同(4)再Transmit一次u-boot.bin,注意,此处无需同时按下Power键,看到如下成功信息:6)输入命令,先擦除nandflash。
SMDKV210 # nand erase7) 输入命令,将uboot写入nandflashSMDKV210 # nand write 40000000 0 1000008)故障板重新写uboot烧写完毕。
实验二u-boot的烧写及使用【实验目的】了解u-boot的常用命令和linux内核的引导。
【实验环境】1、ubuntu 12.04发行版2、u-boot-2010.033、FS210平台4、交叉编译器arm-cortex_a8-linux-gnueabi-gcc【实验步骤】1、SD启动盘制作a)将第一天/SD卡启动制作工具/sd_fusing拷贝到Linux下b)将SD卡插入电脑并识别c)进入sd_fusing执行如下操作$ make//这步要仔细看。
省略就会出错。
$ chmod 777 sd_fusing.sh$ sudo ./sd_fusing.sh/dev/sdb注意:1. 将sd_fusing目录拷到linux下。
2. 将SD卡在电脑上先格式,(不要使用快速格式化)3. SD卡要让vmware linux 识别,并能在linux系统下使用fdisk -l 显示出/dev/sdb 目录。
2、u-boot的烧写a)运行串口通信程序(putty)//putty是win系统下的工具b)关闭开发板电源,将拨码开关SW2调至0110(SD启动模式)后打开电源c)将刚才做好的SD启动盘插入SD卡插槽d)重新打开开发板能够看到如下界面注意:开发板有三种启动模式:1. SD启动模式:01102. Nand flash启动模式:1000 (从硬盘启动)3. Usb启动模式:00013. 网络加载模式:a)设置板子环境变量# setenv serverip 192.168.1.200 //和ubuntu ip 一直(主机上的ubuntu IP)# setenv ipaddr 192.168.1.100 //板子的ip 不要和windows 和Ubuntu冲突b)将第一天/镜像文件/u-boot.bin拷贝到ubuntu的/tftpboot目录下c)烧写# tftp 20008000 u-boot.bin# nand erase 0 100000# nand write 20008000 0 100000//将内存中以20008000开始地址的内容写到以0x0开始,共写0X100000个字节。
利用串口和USB线下载步骤及截图接上串口线和USB线,打开终端连接,板子从NOR Flash中启动板子。
一、USB驱动安装过程:1 首先打开超级终端,然后接上开发板上串口线和电源线:接好之后,打开电源会出现如下所示的界面。
选择从列表或指定位置安装。
2.单击下一步查找驱动的位置。
3. 若出现下图所示的界面点仍然继续。
4 USB驱动完成二.利用串口与硬件连接。
连接方式有两种(利用SecureCRT软件或pc的串口终端)1.利用天嵌光碟中的,下图为利用SecureCRT连接硬件的设置图。
其中端口不一定为COM1是具体pc而定,有的为COM2。
图一连接设置图2.将硬件从NOR Flash启动,截图如下:图二从NOR Flash中启动界面其中命令1:烧写uboot到板子中。
命令3:烧写zImage 即系统内核到板子。
命令6:烧写ysffs即系统文件到板子。
三. 下载(以烧写uboot到NAND Flash为例介绍烧写过程)(1)在软件SecureCRT出现图二所示的界面后输入数字“1”,出现如下所示界面:图三烧写uboot(2)出现图三所示的界面后,打开光碟中的DNW软件。
选择USB Port-------Transmit----- Transmit(如图四)查找要下载的uboot(如图五)图四查找要下载的文件图五找到uboot(3)图五中选择打开,开始下载,下载完成后的截图如图六。
图中会出现100%complete 和written:ok,表示下载成功。
图六下载完成附:利用pc终端连接硬件1. 打开pc终端(附件-------通讯-------超级终端)将终端设置为如下参数图七终端设置参数3.从NOR Flash中启动开发板,界面如图八图八从NOR Flash中启动。
1.ISP下载工具
FlyMcu v0.101以上版本。
2.BOOT设置
BOOT0 BOOT1 模式
0 x FLASH
1 0 ISP
1 1 RAM
要使用串口下载,BOOT设置为ISP模式,如下图所示,分别将跳帽接上BOOT0和BOOT1。
3. ISP 下载
给核心板供电,运行FlyMcu ,按下图进行设置,进行下一步操作前,按复位按键进行复位。
这里不使用RTS 和DTR 。
在编程前点击读取器件信息,如通信成功,则在右边窗口显示相关信息。
在编程前点击擦除芯片,如通信成功,则在右边窗口显示相关信息。
点击开始编程,如通信成功,则在右边窗口显示打印信息,并显示下载成功。
将BOOT 引导设置为用户FLASH 模式,重新上电或按复位键即可运行程序。
为不让BOOT1占用GPIO ,核心板设计接一下拉电阻,不管烧写或运行均不需将BOOT1
的跳帽取下。
当该脚被用作GPIO 时,最好作为输出管脚。
作为输入脚时,不应影响ISP 模式。
烧写u-boot1、打开adtide,选择debug->flash programer2、烧写设置,如下图:如果无法擦除,使用JP1跳线跳到片选1(左边),然后将start地址改为0x08000000,擦除完成后,跳线跳回片选0(右边)。
3、连接并口线(或USB仿真器)以及电源线。
点击erase,然后点program(如果使用USB仿真器,device选择Arm9USB)Uboot正常时,还原操作系统程序1、修改PC机IP地址为192.168.1.*。
(最好使用192.168.1.180)2、运行光盘中tools\tftpd32.exe程序建立TFTP服务器,确认服务器IP为第一步设置的IP。
3、指定TFTP文件路径(及待烧写文件的路径)4、连接网线及电源线5、打开dnw,设置com口,波特率设为115200(或者使用windows自带的超级终端,设置波特率为115200,com口,数据流控制设置为无)6、试验箱上电,等待实验箱上出现jx2410#(如果没有运行到这里,请将并口跳线跳开,仍不行,重新烧写Uboot),dnw上也会有同样的显示(如果没有,请从新执行上一步)。
7、设置serverip,通过指令setenv serverip 192.168.1.*设置serverip和第一步设置的IP保持一致。
(如果IP设置的192.168.1.180则可以略过此步骤)8、此步可省略,通过指令saveenv将刚才修改的ip设置保存到flash中,(不保存断电后再使用需重新设置)9、Run burnall,从新烧写所有的操作系统。
或者通过指令printenv指令查看定义的批处理,来执行单一系统烧写。
U_boot烧写步骤:
(针对友善之臂的2440开发板,注意使用的是wiggle小板。
)
1.连接好Jtag线;
2.打开H_JTAG软件;
3.点击setting,选择USB/LPT Selection;
4.选择LPT选项,点击OK;
5.点击setting,选择LPT Jtag Setting;
6.再按如下配置各项数据;再点击OK;
7.此时将会检测到开发板的cpu内核和地址;
8.
9.打开H-Flasher Lite软件;
10.按如下图选择1 Flash Selection进行配置;
9.按如下图选择2 Configuration进行配置;
10.按如下图选择4 Programming;
说明:1.Src file:选择已经编译好的u_boot的二进制文件;
2.点击Reset,再点击Check,点击再点Erase,点击
Program;
(如果出现Error,此时检查各项配置是否正确,再看开发
板上开关是否选择Nor Flash,并重启开发板即可,如果
还是有错误,此时还可以将H-Flasher_SST39VF1601.hfc
直接导入软件。
点击Load,导入即可。
)
3.等待文件烧写完毕;
出现此界面则成功烧写。
11.其余的选项使用默认即可,至此烧写u_boot就完成了。
制作人:尚贤博学
于2013年3月2号西安石油大学制作完成
(希望能帮助到广大热爱嵌入式的朋友们)。
petalinux-build -c u-boot的编译流程-回复Petalinux 是一款用于嵌入式Linux 系统的工具集,它基于Yocto项目,并提供了许多工具和脚本来简化平台软件的构建过程。
在使用Petalinux进行构建时,其中一个必要组件就是uboot引导程序。
uboot 是一个开源的引导程序,用于在嵌入式设备上初始化硬件和启动操作系统。
在本文中,我将逐步介绍Petalinux编译uboot的流程。
第一步:环境准备在开始编译uboot之前,我们需要先准备好相关的环境。
首先确保计算机上已经安装好Petalinux,可以通过官方网站下载和安装最新版本。
另外,还需要确保已经安装了交叉编译工具链,Petalinux默认使用arm-linux-gnueabihf工具链,可以通过下载对应的工具链并配置环境变量来实现。
第二步:创建Petalinux项目在开始编译uboot之前,需要先创建一个Petalinux项目。
在终端中运行以下命令创建一个新的项目:petalinux-create type project template <template-name> name <project-name>这里可以使用不同的模板,根据实际需求选择。
例如,使用Avnet UltraZed-EG IOCC板卡可以选择"ultrazed"模板。
当项目创建完成后,进入项目目录。
第三步:配置uboot在项目目录中,可以使用以下命令配置uboot:petalinux-config -c uboot该命令将打开一个菜单式的配置界面,允许用户选择不同的uboot配置选项。
在菜单中,用户可以配置uboot的编译选项、环境变量和启动参数等。
根据自己的需求进行相应的配置。
第四步:编译uboot配置完uboot后,可以使用以下命令编译uboot:petalinux-build -c uboot该命令将根据之前的配置选项,开始编译uboot。
通过串口连接升级操作步骤通过串口连接进行系统软件升级,即通过串口连接的方式登录设备,通过TFTP协议传输,进行的系统软件升级操作。
特别注意:1. 执行步骤6过程中如果升级u-boot不成功请保证设备持续运行,在此过程中不断电并且不重启,并请继续重新升级u-boot直到升级成功。
如果传输过程无法继续,可以使用Ctrl + c 退出升级,检查网络后请继续升级。
u-boot损坏会造成系统无法启动,需要回厂处理;2. 执行步骤6过程中,如果u-boot的版本是1.02(包括1.02)之前的版本,升级过程中会提示“Override Env parameters? (y/n)”,此时按N键,会保留环境变量和Mac地址,如果不慎按了Y键,环境变量和Mac地址会被恢复成初始值,需要重新设置设备的环境变量和Mac地址才能正常使用。
升级过程中失败的几种处理方式常见远程升级问题●上传文件时网络传输中断在上传升级文件到DC1001-FF的过程中,中断升级文件的传输,并在重传时间内无法恢复,则将导致此次升级失败并恢复到升级操作前状态。
常见通过串口连接升级问题●升级u-boot失败并已擦除原镜像如果FLASH已被擦除,则必须保持设备不断电不重启并立即重新升级u-boot,如果此时设备断电或重启将造成设备无法引导,需要回厂处理,使用JTAG重新升级u-boot 。
●升级uImage失败并已擦除原镜像升级uImage过程中失败则需要重新通过串口连接进行升级,否则无法启动设备。
●升级program失败并已擦除原镜像升级program过程中失败仍可启动系统,但需要重新通过串口连接进行升级或远程升级修复系统后才能恢复正常业务。
●升级config失败并已擦除原镜像升级config过程中失败仍可启动系统,但需要重新通过串口连接进行升级或远程升级修复系统后才能恢复正常业务。
DC1001-FF升级步骤升级u-boot 前请确保先断电重启,如果无法确保升级之前断电重启,请启动后在串口下进行如下设置:mw.b 0x04000008 0x01 此命令输入之后请确保1分钟之内系统没有自动重启再进行升级操作步骤如下:1、连接好串口和电口,给设备上电,通过串口连接进行如下操作。
广州致远电子股份有限公司
如何通过串口烧写
uboot
基于M3352_EV_BOARD 评估板
修订历史
目录
1. 适用范围 (1)
2. 原理概述 (2)
3. 开发环境 (3)
4. 技术实现 (4)
4.1 连接调试串口 (4)
4.2 更新uboot (4)
4.2.1 下载SPL (4)
4.2.2 下载uboot (5)
4.2.3 下载MLO (6)
5. 免责声明 (8)
1. 适用范围
本文基于M3352_EV_BOARD评估板,主要介绍如何从串口启动AM3352处理器并实现uboot的更新,其原理和方法同样适用于EPC-9100I-L、EPC-9200I-L、EPC-9600I-L 工控主板以及所有基于M3352-N128LI工控核心板拓展的硬件平台。
2. 原理概述
AM3352处理器支持存储器启动以及外设启动。
上电后,处理器根据启动引脚的设置执行相应的一级引导代码(即固化在芯片内部的ROM Code)。
当选择从外设启动的时候,可以通过UART接口下载二级引导代码SPL(用来初始化内存、时钟和电源等)。
SPL执行完毕,处理器可继续通过UART接口下载uboot镜像文件,然后将控制权移交到uboot。
此后,还需要通过uboot来接收用于NAND Flash启动的二级引导代码MLO以及uboot镜像,并将它们烧写到NAND Flash中,从而实现处理器再次上电时从NAND Flash启动。
3. 开发环境
1)硬件清单:
M3352_EV_BOARD评估板。
2)软件资源:
产品光盘资料:M3352-N128LI CD V1.03;
附件:
●二级引导代码镜像文件(串口启动用):u-boot-spl.bin;
●uboot镜像文件:u-boot.img;
●二级引导代码镜像文件(NAND Flash启动用):MLO。
4. 技术实现
4.1 连接调试串口
注意:本文要求终端软件支持“Xmodem 1K”、“Ymodem”以及“Kermit”文件传输协议,如Tera Term v4.67。
对于Windows XP系统用户,推荐使用系统自带的“超级终端”软件。
此外,文中提到的JP6跳线只适用于M3350_EV_BOARD评估板,其它产品请以实际情况为准。
将M3350_EV_BOARD评估板的调试串口连接到计算机上,打开计算机的“超级终端”,按图4.1所示设置好串口参数。
图4.1 串口参数设置
用跳线帽短接M3350_EV_BOARD的JP6到SD引脚(如果板上插有SD卡,请先将其移除),然后连接电源并上电。
此时,处理器将首先运行ROM Code,并试图寻找可用于启动的外部设备,并且终端会不断地打印出“CCCCCC”。
此时M3350_EV_BOARD可以从串口接收文件并启动。
4.2 更新uboot
4.2.1 下载SPL
在“超级终端”软件的菜单栏中选择“传送”→“发送文件”,在弹出的对话框中点击“浏览”,选中文件“u-boot-spl.bin”后点击“打开”,然后在“协议”下拉列表中选择“1K Xmodem”,如图4.2所示。
图4.2 选择”1K Xmodem“
之后点击“发送”,此时“超级终端”将会弹出如图4.3所示的界面。
图4.3 Xmodem传送
“u-boot-spl.bin”文件传输完成后,M3350_EV_BOARD从SPL启动,终端显示启动信息后会再次打印“CCCC”:
CCCCCCCCCCCCCCCCCCCCCCC
U-Boot SPL 2011.09 (Sep 11 2015 - 16:35:56)
Texas Instruments Revision detection unimplemented
CCCC
4.2.2 下载uboot
再次在“超级终端”点击“传送”→“发送文件”,以“Ymodem”协议发送“u-boot.img”文件。
这个操作需要在60秒内完成,否则M3350_EV_BOARD将会提示错误:
spl: ymodem err - Timed out
### ERROR ### Please RESET the board ###
此外,用Ymodem传输“u-boot.img”会比较缓慢并且容易失败,请耐心等候,如果发生传输失败,请重启M3350_EV_BOARD并再次下载SPL和uboot。
如果“u-boot.img”正确传送,M3350_EV_BOARD从uboot启动,终端将会打印启动
信息,迅速在键盘上按下“zlg”,M3350_EV_BOARD停止启动并滞留在uboot选择菜单,依照提示输入“e”擦除NAND Flash:
Autobooting in 1 seconds. Enter "zlg" to interrupt Autoboot.
[e] Erase NAND Flash
[a] Burn all images
[b] Burn bootloader
[k] Burn kernel
[l] Burn logo
[r] Reboot
[q] exit to cmdline
e (输入“e”)
NAND erase.chip: device 0 whole chip
Skipping bad block at 0x04b60000
Skipping bad block at 0x04b80000
Skipping bad block at 0x0ff80000
Skipping bad block at 0x0ffa0000
Erasing at 0xffe0000 -- 100% complete.
OK
然后输入“q”回到uboot的命令行界面。
4.2.3 下载MLO
此时的uboot是在存储在内存中的,为了使M3350_EV_BOARD在掉电后重启时能从NAND Flash启动,需要将用于NAND Flash启动的二级引导代码MLO以及uboot固化在NAND Flash。
首先执行loadb指令下载MLO到0x82000000地址处:
U-Boot# loadb 0x82000000
## Ready for binary (kermit) download to 0x82000000 at 115200 bps...
在“超级终端”中点击“传送”→“发送文件”,以“Kermit”协议发送“MLO”文件。
发送完毕后,终端打印如下信息:
## Total Size = 0x000138ee = 80110 Bytes
## Start Addr = 0x82000000
此时M3350_EV_BOARD已经接收“MLO”文件并存放于0x82000000地址处,执行下列指令将其烧写到相应的分区地址处:
U-Boot# nandecc hw 0 (启用汉明码硬件校验)
HW ECC Hamming Code selected
U-Boot# nand erase 0x0 0x20000 (擦除待烧写的地址块)
NAND erase: device 0 offset 0x0, size 0x20000
Erasing at 0x0 -- 100% complete.
OK
U-Boot# nand write.i 0x82000000 0x0 0x20000 (将MLO写入0x0地址)
NAND write: device 0 offset 0x0, size 0x20000
131072 bytes written: OK
MLO烧写完毕后,再次执行loadb指令,同样在“超级终端”上以“Kermit”协议发送“u-boot.img”文件。
传送完毕后使用下列指令将“u-boot.img”文件烧写到相应地址:
U-Boot# nand erase 0x80000 0x80000
NAND erase: device 0 offset 0x80000, size 0x80000
Erasing at 0xe0000 -- 100% complete.
OK
U-Boot# nand write.i 0x82000000 0x80000 0x80000
NAND write: device 0 offset 0x80000, size 0x80000
524288 bytes written: OK
待uboot烧写完毕后,将JP6短接到NAND引脚并重新启动M3350_EV_BOARD,可以看到uboot正常启动并打印出相关信息,说明MLO以及uboot都已通过串口固化在NAND Flash。
产品应用笔记 ©2015 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
8 如何通过串口烧写uboot 5. 免责声明
广州致远电子股份有限公司所提供的所有服务内容旨在协助客户加速产品的研发进度,在服务过程中所提供的任何程序、文档、测试结果、方案、支持等资料和信息,都仅供参考,客户有权不使用或自行参考修改,本公司不提供任何的完整性、可靠性等保证,若在客户使用过程中因任何原因造成的特别的、偶然的或间接的损失,本公司不承担任何责任。