u-boot下通过脚本更新内核和设备树

之前的博客https://blog.csdn.net/daoshengtianxia/article/details/105775590是通过手动一步一步下载写入flash升级dtb,kernel等,  

前提uboot需要移植好网络等相关驱动,本文使用的硬件平台是野火的limx6ull  mini的emmc版本;

1、需要uboot使能 FAT_WRITE功能,野火提供的uboot默认没有使能,在ebf_6ull_uboot/include/configs/mx6ullevk.h的最后加入:

#define CONFIG_FAT_WRITE,然后重新编译,位置如下图;

2、编写uboot的 执行脚本如下,

setenv update_uboot  'if tftpboot ${loadaddr} ${file_ubot}; then '\
'mmc dev ${mmcdev} 0; mmc write ${loadaddr} 0x2 0x3fe; fi;'
setenv update_dtb   'if tftpboot ${loadaddr} ${fdt_file}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${fdt_file} ${filesize}; fi;'
setenv update_kernel  'if tftpboot ${loadaddr} ${image}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} ${filesize}; fi;'
setenv update_scr   'if tftpboot ${loadaddr} ${file_scr}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${file_scr} ${filesize}; source ${loadaddr}; saveenv; fi;'

关于update_uboot脚本慎用!使用前请确保写入地址是对的,目前尚未验证这个脚本!

3、将如上的脚本保存到my_environment_emmc文本文件里,放入u-boot的tools目录下,执行:(关于这个编译脚本的命令含义可以参考网络上的)

编译脚本:

./mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "autoscr example script" -d my_environment_emmc my_environment_emmc.scr

编译出来结果如上图,

4、启动开发板,tftp下载到内存运行,

(1)前提定义好loadaddr,file_scr,运行:

tftpboot ${loadaddr} ${file_scr}

我的 loadaddr 变量如下:

我的 file_scr 变量如下:

(2)执行刚刚下载u-boot环境变量脚本(目的是将“更新脚本”等环境变量设置好):source ${loadaddr}

(3)执行:(保存环境变量以便重启后还能使用)

saveenv

 

5、将需要更新的内核,dtb放到ftp目录里,在uboot下执行如下一些命令:

比如更新dtb:run update_dtb

更新kernel:  

最后重启开发板即可验证。

参考链接(野火论坛的自己编译uboot内核等教程):https://www.firebbs.cn/forum.php?mod=viewthread&tid=28400&highlight=%E7%BC%96%E8%AF%91

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值