Linux-在uboot中更新uboot(包含SD卡和EMMC)

一、准备工作

1.在Ubuntu系统中进入u-boot的文件根目录,编译出一个新的ARM环境下的u-boot.imx文件,这里笔者使用自己编写的脚本mx6ull_fire_emmc.sh文件进行编译,脚本的内容如下图所示:

操作步骤如下图所示:

 

2.编译成功后uboot的根目录会生成一些新的文件,从中找到u-boot.imx文件并拷贝到tftp文件目录中,如下图所示:

  3.进入ftfp文件目录找到拷贝的u-boot.imx文件赋予最高权限,如下图所示:

  

 

4.使用一块Linux开发板,连接好串口(能够打印出Linux系统信息的串口)和网线(能够在uboot命令控制界面下ping通的网口,笔者使用的是开发板和网线直连的方式),重启Linux开发板后进入uboot命令控制界面。查看开发板的ip地址和服务器的ip地址(即Ubuntu系统的ip地址),如下图所示:

 

5.如果显示的ip地址不在同一个网段或者没有对应的信息显示,可以按照下图所示做相应的设置:

  首先,查看服务器也就是Ubuntu系统的ip地址(通常手动设置成指定的ip地址)

根据服务器的ip地址在uboot命令控制界面设置对应的ip地址,具体设置命令如下所示:

setenv ipaddr 192.168.1.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.110
saveenv

ipaddr是开发板设置的ip地址;

serverip是服务器(Ubuntu系统)的IP地址;

ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的ethaddr不同。

uboot的环境变量设置完成后,使用ping命令去ping一下服务器ip地址检查是否正常,正常情况如下图所示:

以上准备工作完成后即可进行下面的阶段。

二、更新SD卡中的uboot

1.这里笔者要更新的是SD卡中的uboot,首先在uboot命令控制界面输入下面命令查看mmc有效的设备:

mmc list

笔者的开发板的Flash是EMMC,同时支持SD卡,因此会显示两个有效设备,具体信息如下图所示:

显示的有效设备信息中,0是指SD卡,1是指EMMC。

接着输入下面命令切换设备到SD卡,

mmc dev 0

最后输入“version”命令查看当前SD卡中的uboot信息为以后对照。

 

2.为了确认切换设备成功可以使用下面的命令查看当前选择的设备信息:

mmc info

笔者使用的SD卡是2G的存储空间,注意SD块的大小为512个字节,具体信息如下图所示:

 

3.使用下面的命令从服务器(Ubuntu系统)下载新的uboot到指定的0x80800000为起始地址DRAM中。

tftp 80800000 u-boot.imx

如果下载成功会显示如下图信息:

4.新下载的uboot的大小为424960个字节,从前面的信息我们知道SD卡每个块的大小为512个字节,那么将会占用424960/512=830个块,用16进制表示就是0x33E。使用下面的命令从SD卡分区0第2个块开始烧写新的uboot,千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表! 

mmc dev 0 0
mmc write 80800000 2 33E

 

写入SD成功后如下图所示:

 

5.重启开发板(设置SD卡启动),使用“version”命令再次查看uboot信息,对比之前的信息SD卡中uboot的日期发生了变化,说明新的uboot写入成功,具体信息如下图所示:

 

三、更新EMMC中的uboot

1.和SD卡类似,如果要在uboot中更新EMMC对应的uboot可以使用如下命令:

mmc dev 1 0                        /* 切换到EMMC的分区0 */
tftp 80800000 u-boot.imx           /* 下载u-boot.imx到DRAM中的指定地址中 */
mmc write 80800000 2 33E          /* 烧写u-boot.imx到EMMC中 */
mmc partconf 1 1 0 0               /* 分区配置 第一个1代表设备, 第二个1代表响应发送,启动分区和访问分区均设置0*/

千万不要写  EMMC 的前两个块(扇区),里面保存着分区表! 

关于“mmc partconf”命令的说明如下图所示:

原文地址:https://www.cnblogs.com/wenhao-Web/p/13210090.html

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Rockchip RK3566是一款由Rockchip推出的高性能应用处理器,其集成了四核ARM Cortex-A55 CPU和ARM Mali-G52 GPU。在移植U-Boot 2023.04时,我们需要考虑以下几个方面的工作: 1. 了解RK3566芯片的硬件架构和技术规格,包括处理器核心、内存控制器、外设接口等。这将有助于理解U-Boot如何与硬件交互,并进行相应的配置。 2. 下载并准备U-Boot 2023.04的源代码。在Rockchip官方网站或开源社区可以找到最新的U-Boot源代码。将其下载并解压到开发机上。 3. 设置交叉编译环境。因为U-Boot是一个跨平台的项目,所以需要配置适合RK3566的交叉编译器,确保能够正确编译U-Boot源代码。 4. 配置U-Boot。根据RK3566的硬件架构和技术规格,需要进行相应的配置,包括处理器、内存、外设等设置。这些设置在U-Boot的配置文件进行,可以根据需求进行修改。 5. 编译U-Boot。在配置好U-Boot后,使用交叉编译器编译U-Boot源代码。编译完成后,将生成的U-Boot二进制文件烧录到RK3566的启动设备上,如eMMCSD卡。 6. 测试U-Boot。将准备好的启动设备插入RK3566开发板,根据开发板的启动方式,进入U-Boot命令行界面。在命令行界面可以进行各种操作和调试,如加载内核、启动操作系统等。 7. 调试和优化。在移植和测试U-Boot过程,可能会出现一些问题和不稳定的情况。需要通过调试和优化来解决这些问题,确保U-Boot的正常运行和稳定性。 总之,移植U-Boot 2023.04到Rockchip RK3566需要了解芯片的硬件架构和技术规格,配置和编译U-Boot源代码,进行测试和调试。这样可以确保U-Boot能够与RK3566正常交互,并为后续的操作系统加载和启动提供基础支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值