【技术分享】迅为RK3568开发板使用TFTP加载内核设备树

需求分析

在嵌入式项目开发中,为了适配新外设、调整硬件资源分配或修复驱动问题,需要频繁修改设备树和内核。修改完成后,通常需要重新编译生成镜像,并将其烧录到开发板上进行测试。然而,传统的烧录方式不仅需要连接物理接口,还可能因为镜像体积较大而耗费较长时间,这在开发周期紧张的情况下显得尤为低效。

为了解决这一问题,可以采用基于TFTP(Trivial File Transfer Protocol)的内核和设备树加载方法。这种方式无需将镜像完整烧录到开发板的存储介质,而是通过网络直接加载和运行新内核与设备树。相比传统烧录方式,TFTP 加载显著减少了镜像更新的等待时间,同时允许更灵活地对不同版本的内核或设备树进行快速切换和验证。

TFTP加载内核设备树

实验平台:iTOP-RK3568开发板

01-安装TFTP服务端

首先进行TFTP 服务端的搭建,首先在ubuntu终端中执行以下命令安装TFTP服务:

sudo apt-get install tftp-hpa tftpd-hpa

 

安装完成以后创建 TFTP 服务器工作目录,并对TFTP的服务配置文件进行修改,具体步骤如下:

输入以下命令在家目录创建tftpboot文件夹,如下图所示&#

### RK3568 进入 U-Boot 模式教程 对于基于 RK3568 芯片的开发板,进入 U-Boot 模式的操作通常涉及以下几个方面: #### 准备工作 确保已经准备好必要的工具和文件。这包括但不限于 `u-boot.bin` 文件以及用于打包镜像的工具链。 #### 打包 U-Boot 镜像 使用特定命令将原始的 U-Boot 二进制文件转换为适合加载到目标设备上的格式。具体来说,可以通过如下命令完成此过程[^2]: ```bash ./tools/loaderimage --pack --uboot ./u-boot.bin uboot.img 0x60000000 --size 1024 ``` #### 设置启动参数并保存至 Flash 中 一旦进入了 U-Boot 命令行界面,则可以设置相应的环境变量以便后续能够正确引导操作系统。例如,通过 TFTP 协议获取 boot.img 和 dtb (Device Tree Blob),并通过指定 NFS 导致路径来配置根文件系统的挂载选项[^3]: ```bash setenv bootcmd "tftpboot 0x0027f800 boot.img ; tftpboot 0x08300000 rk3568-evb1-ddr4-v10-linux.dtb;bootm 0x0027f800 - 0x08300000" setenv bootargs "root=/dev/nfs root=/dev/nfs nfsroot=${serverip}:/home/topeet/ubuntu20desktop,v3 rw ip=${ipaddr}:${serverip}:${gateway}:255.255.255.0::eth1:off" saveenv ``` #### 启动流程概述 整个启动过程中涉及到多个阶段,从最底层的 BOOTROM 开始直到最终加载 Linux 内核及其初始化进程。具体的顺序为:BOOTROM => idbloader.img => uboot.itb => BOOT => rootfs[^1]。 #### 编译与构建 如果需要重新编译 U-Boot 或者其他组件,可以根据官方文档指导来进行。一般情况下会先安装依赖库如 libncurses5 ,接着执行一系列脚本来准备交叉编译环境,并选择合适的配置项进行编译[^5]: ```bash sudo apt-get install libncurses5 -y source build/envsetup.sh lunch #选择rk3568_s-userdebug ./build.sh -UKA -J16 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值