uboot的烧写
- 格式:pdf
- 大小:762.04 KB
- 文档页数:9
如何用jlink烧写uboot到nandflash1.通过Nor Flash下载a. speed 12000 //设置TCK为12M,下载程序时会很快b. loadbin d:\u-boot.bin 0x30000000注意:0x30000000是你想要下载u-boot.bin到开发板的内存地址,内存地址根据不同的开发板设定不同,因为本文中使用的是FL2440,片上系统是S3C2440,内存挂载的地址区域是0x30000000~0x33ffffff,我们只需要把u-boot.bin下载到这片区域即可然后我们在U-boot命令行模式输入NAND Flash擦除和写入命令即可:c.nand erase 0 40000// 擦除从0地址开始的大小为0x40000的Nnad Flash扇区,0x40000是待写入的U-boot.bin的大致长度,长度必须为NAND Flash页大小的整数倍,通常会需要比u-boot.bin实际长度长。
d.nand write 30000000 0 40000 // 把前面下载到0x30000000的u-boot.bin烧写到Nand去二、方法二,直接通过JLink假如你的开发板没有NOR Flash或者是你使用的NOR Flash还未被J-FLASH ARM所支持,这时上面的方法你就无法使用了,这时候你需要一个初始化内存SDRAM的程序,这个程序完成的功能也就是配置好SDRAM的寄存器,使它能正常工作,fl2440的内存初始化程序下载地址:“2440init.bin”。
你还需要准备一个特殊的u-boot_SDRAM.bin,它与你要烧写到NAND Flash的u-boot.bin有区别,u-boot_SDRAM.bin编译时需要在include/configs/开发板配置文件.h 文件中添加:#define CONFIG_SKIP_LOWLEVEL_INIT 1 //用来支持uboot在内存中直接运行添加这个宏定义之后,U-boot就跳过了内存初始化的部分,因为此时我们的内存已经先由“2440init.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 在WINDOWS下制作u-boot启动卡在Windows下要先通过这个软件WinPM.exe来对SD卡进行分区,然后再使用moviNAND_Fusing_Tool_v2.0.exe来将我们编译好的bootloader固化到SD卡里面,然后再选择从SD卡启动我们的开发板。
想要在windows 操作系统下制作烧写用的SD卡,则需要先把SD卡分区,预留前10M给uboot。
1)打开WinPM.ex,这个软件位于光盘文件的Tools目录下面。
2)选择SD卡,注意:选择你正确的SD卡盘符,在制作SD卡启动卡的时候会破坏SD里面的数据,请预先保存好你的数据。
预留10M的空间给uboot。
选择是FAT32的格式选择确定再选择装载系统会给我们新建的这个盘分一个盘符,点击确定即可息。
分区完成之后,点击关闭即可。
3)对SD卡分好区之后,双击。
选择正确的盘符。
先点击Brows浏览到已经编译好的uboot,然后点击START。
完成之后退出该程序。
4) 制作好SD卡之后烧写镜像将SD卡从电脑上拨下来,然后插到开发板的SD卡卡槽里面,将启动模式开关拨到SD-BOOT 位置,上电,然后就可以看到uboot已经启动。
2 在ubuntu下制作u-boot启动卡1、u-boot中带有的烧写工具2、更改sd_fusing.sh文件1)将./mkbl1 ../u-boot.bin SD-bl1-8k.bin 8192改为sudo ./mkbl1 u-boot.bin SD-bl1-8k.bin 81922)将dd iflag=dsync oflag=dsync if=../u-boot.bin of=$1 seek=$uboot_position改为dd iflag=dsync oflag=dsync if=u-boot.bin of=$1 seek=$uboot_position3、操作方法1、编译sd_fusing路径下的makefile,更新两个小工具$ make2、查看SD卡在ubuntu上的挂在路径$ cat /proc/partitionsmajor minor #blocks name8 0 20971520 sda8 1 19921920 sda18 2 1 sda28 5 1046528 sda58 16 3870720 sdb8 17 3716096 sdb13、执行sd_fusing.sh$ sudo bash ./sd_fusing.sh /dev/sdb/dev/sdb/dev/sdb reader is identified.make sd card partition./sd_fdisk /dev/sdb1+0 records in1+0 records out512 bytes (512 B) copied, 0.281018 s, 1.8 kB/smkfs.vfat -F 32mkfs.vfat 3.0.9 (31 Jan 2010)No device specified!Usage: mkdosfs [-a][-A][-c][-C][-v][-I][-l bad-block-file][-b backup-boot-sector] [-m boot-msg-file][-n volume-name][-i volume-id][-s sectors-per-cluster][-S logical-sector-size][-f number-of-FATs][-h hidden-sectors][-F fat-size][-r root-dir-entries][-R reserved-sectors]/dev/name [blocks]BL1 fusing16+0 records in16+0 records out8192 bytes (8.2 kB) copied, 2.01173 s, 4.1 kB/su-boot fusing864+0 records in864+0 records out442368 bytes (442 kB) copied, 6.53632 s, 67.7 kB/sU-boot image is fused successfully.4、将GEC210平台选择从SD卡启动5、sd_fusing.sh文件分析## Copyright (C) 2010 Samsung Electronics Co., Ltd.# /## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License version 2 as# published by the Free Software Foundation.#####################################reader_type1="/dev/sdb"reader_type2="/dev/mmcblk0"if [ -z $1 ] # //-z 字符串为"null",判断执行./sd_fusing.sh时,是否未带参数thenecho "usage: ./sd_fusing.sh <SD Reader's device file>" #未带输入参数exit 0 #退出fiif [ $1 = $reader_type1 ] #判断./sd_fusing.sh输入的参数是否为"/dev/sdb" thenpartition1="$11" #分区1,/dev/sdb1partition2="$12"partition3="$13"partition4="$14"elif [ $1 = $reader_type2 ]thenpartition1="$1p1"partition2="$1p2"partition3="$1p3"partition4="$1p4"elseecho "Unsupported SD reader" # 输入参数错误exit 0fiif [ -b $1 ] # [-b 文件] 如果$1是一个块设备thenecho "$1 reader is identified." #可识别该SD卡elseecho "$1 is NOT identified."exit 0fi##################################### make partitionecho "make sd card partition"echo "./sd_fdisk $1"sudo ./sd_fdisk $1 #调用sd_fdisk工具对SD卡进行分区,并生成sd_mbr.datdd iflag=dsync oflag=dsync if=sd_mbr.dat of=$1 #将MBR(sd_mbr.dat)写入到SD卡的第0个sector rm sd_mbr.dat##################################### formatumount $partition1 2> /dev/nullumount $partition2 2> /dev/nullumount $partition3 2> /dev/nullumount $partition4 2> /dev/nullecho "mkfs.vfat -F 32 $partition1"mkfs.vfat -F 32 $partition1 #格式化一个fat32分区#echo "mkfs.ext2 $partition2"#mkfs.ext2 $partition2#echo "mkfs.ext2 $partition3"#mkfs.ext2 $partition3#echo "mkfs.ext2 $partition4"#mkfs.ext2 $partition4##################################### mount#umount /media/sd 2> /dev/null#mkdir -p /media/sd#echo "mount -t vfat $partition1 /media/sd"#mount -t vfat $partition1 /media/sd#####################################<BL1 fusing>bl1_position=1 #BL1的烧写位置为第1个sector,第0个sector烧写的是MBRuboot_position=49 #u-boot.bin的烧写位置为第49个sector。
TF卡烧写UBOOT
把光盘BOOT目录下的boot.bz2文件拷贝到PC机linux的目录下,例如/home/armzone/
然后解压boot.bz2
tar jxvf boot.bz
进入解压后的boot目录
把TF卡插入读卡器,把读卡器插到PC机的USB端口。
如果使用虚拟机的话,请将U盘接入到虚拟机。
在虚拟机右下角找到TF读卡器设备,点击右键,选择Connect
然后在linux的终端执行UBOOT写入命令
sudo ./armzone.sh /dev/sdb
要求输入root用户密码,输完密码后回车,输入密码过程不会显示***,注意操作。
这样烧写就完成了。
常见错误
TF卡硬件没有识别到,或者TF卡设备名称不是sdb
使用df命令查看挂载设备
如上图,有sdbx设备存在才行。
如果TF卡被识别为sdc或者sdd等,都不能正常烧写。
烧写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烧写完毕。
android系统移植emmc记录(2)--u-boot烧写emmc方式U-boot 支持2种方式烧写 emmc设备:Fastboot命令:通过usb接口烧写。
步骤:1.编写u-boot支持从sd卡启动,里面涉及到文件的修改,下面讲解。
2.按照上述方法,把u-boot烧录到sd上,使开发板从sd卡启动。
3.进入开发板命令终端 # :4.首先格式emmc,目的是分配4个分区。
分别为vfat分区, system 分区, userdata分区, Cache分区.# : fdisk -c 0-c :表示格式当前设备0:表示初始化的emmc设备节点,mmc/sd设备加载顺序,分配的节点从0开始到3结束。
不管你从哪个通道指定起始设备,多从0开始分配。
如:emmc占用通道0口,分配的节点是 0,sd卡占用通道2口,分配的节点是 1.如果不初始化emmc,只使用sd卡模式,在sd卡占用通道2口时,分配的节点是 0.这点请了解源代码,后续会修改。
所以,如果想给板子上SD分区的话,使用如下命令(在emmc也初始化成功的情况下)#: fdisk -c 1查看设备分区情况:#:fdisk -p 05.格式化分区,vfat分区为fat32格式。
其它都为 ext3文件系统格式.格式vfat分区: #:fatformat mmc 0:10:同上意思,表示的已经加载的emmc设备节点。
1:表示第1个分区,注意。
程序默认第一个分区必须为fat分区,只能指定为 1,程序会比较是否为分区1,不是就不会格式化。
格式ext3分区:#:ext3format mmc 0:2 //system#:ext3format mmc 0:3 //userdata#:ext3format mmc 0:4 //cache6:烧写文件:#:fastboot给开发板通过usb线跟pc连接。
下载工具:fastboot到windows下,把要烧录的文件 zImage system userdata放到fastboot 文件里面。
OMAP-L138的u-boot烧写
所需软件:(这里使用合众达公司提供的开发套件)
1)CCS3.3Version3.3.82.13
2)DSP仿真器SEDD-XDS560V2
3)SecureCRT6.5
所需文件:
1)nand-writer_ccs33.out
2)OMAPL138_ARM.gel
3)ubl-nand.bin
4)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烧写完成,出现如下图所示则表示烧写成功。
第六步烧写U-Boot。
类似UBL文件的烧写,在File菜单下选择Load Program选项,在相应的路径下找到nand-writer_ccs33.out文件,加载完成后,在菜单Debug下选择Run选项。
在弹出的对话框中输入uboot,然后点击OK按钮,如下图所示:
紧接着在出现的对话框中输入u-boot.bin的路径,然后点击OK按钮,如下图所示:
等待U-Boot的烧写完成,出现如下图所示则表示烧写成功。
第七步运行烧写的U-Boot,在串口终端(这里使用的是SecureCRT 6.5)中查看运行的结果。
根据自己电脑上的COM口选择COM号,可以按如下图所示:
这里COM1口,波尔率为115200,8位数据位,没有校验位,1位停止位,Flow Control中不选。
连接成功后如下图所示:
重启开发板,可以在串口终端上看到开发板的相关信息,如下图所示:
(注意:在启动内核之前,按下Enter键,停止autoboot)
需要说明的是,只要不做裸机程序的开发的话,仿真器也就只用来烧写U-Boot用,一般开发板出厂前都会讲U-Boot烧写到flash里,主要是因为仿真器的价格相对较高。
后续我们只需要在PC机上编写程序,使用nfs文件系统来进行开发,好处后面这里先不细说,以后会慢慢讲到。
在U-Boot下可以通过使用help命令来查看当前的U-Boot支持哪些命令,便于以后使用。