uboot的使用

编译UBOOT
1、配置编译环境
make distclean清除旧配置
make ARCH=arm CROSS_COMPILE=arm-xxx-linux- xxx_config
2、编译UBOOT
make ARCH=arm CROSS_COMPILE=arm-xxx-linux- -j 20
编译成功后,将在UBOOT目录下生成u-boot.bin。
烧写UBOOT
若芯片是第一次烧写,则参考上一篇写的文档。
下面的情况是DRAM中已经运行了UBOOT。
1、烧写到SPI-Norflash

//对内存初始化,大小1MB
mw.b <ddr_addr> 0xff 0x100000

//检测并初始化SPI-Norflash
sf probe 0

//擦除1M大小
sf erase 0x0 0x100000

//将UBOOT下载到内存
tftp <ddr_addr> u-boot.bin

//将内存中固件写入SPI-Norflash
sf write <ddr_addr> 0x0 0x100000

上述步骤完成后,重启系统即可。
2、烧写到SPI-Nandflash

//内存初始化,大小1MB
mw.b <ddr_addr> 0xff 0x100000

//擦除1MB大小
nand erase 0 0x100000

//将UBOOT下载到DDR
tftp <ddr_addr> uboot.bin

//将DDR内存写入NAND Flash
nand write <ddr_addr> 0x0 0x100000

3、烧写到EMMC

//对内存初始化,大小1MB
mw.b <ddr_addr> 0x0 0x100000

//UBOOT下载到DDR
tptf <ddr_addr> u-boot.bin

//将DDR内容写入EMMC
mmc write 0 <ddr_addr> 0 0x100000

UBoot配置文件常见修改地方:
配置文件所在地方:include/configs/xxx.h

1、CONFIG_BOOTARGS
内核启动参数,常见修改是内核启动以后内存配置,分区大小配置。
2、CONFIG_BOOTCOMMAND
OS启动命令,说明从哪里启动内核。
下面是从spi norflash中加载并启动内核
sf probe;sf read 0x80600000 0x40000 0x280000;bootm 0x8060000
命令bootm引导在DDR中的程序映像。
格式:
bootm addr1 addr2
addr1——是程序image地址
addr2——一般是ramdisk地址,可以忽略;
3、CONFIG_BOOTDELAY
配置uboot等待时间。单位s
4、uboot中添加密码功能:
在配置文件中添加如下内容:

#define CONFIG_AUTOBOOT_KEYED
#define CONFIG_AUTOBOOT_STOP_STR "123456"
#define CONFIG_AUTOBOOT_PROMPT "Press xxx in %d second"
#define CONFIG_AUTOBOOT_DELAY_STR "linux"

5、SD卡升级
就是实现sdupdate命令,在UBOOT命令下,从SD卡中加载UBOOT,KERNERL,ROOTFS以及demo.bin。
在isvp_t40.h中添加#define CONFIG_AUTO_UPDATE定义
具体代码在common/cmd_sdupdate.c中。
需要注意,LOAD_ADDR表示把SD卡上的相应程序,加载到的内存位置。
程序中默认设置为0x82000000,由于这个地址处在uboot堆上,常见uboot的堆大小在isvp_t40.h中CONFIG_SYS_MALLOC_LEN的宏配置。这个地址能被使用的大小将受到堆大小的限缺电,还有uboot代码中malloc空间的限制。(需要读取轶闻大文件的时候,可以适当增大 CONFIG_SYS_MALLOC_LEN

posted @ 2021-04-19 21:05  海林的菜园子  阅读(775)  评论(0编辑  收藏  举报