玩转RK3506SDK

1.合众恒跃RK3506SDK介绍

SDK目录介绍:

|-----------------|-----------------------------------|
| 目录 | 说明 |
| app | 存放上层应用APP,主要是一些应用Demo。 |
| buildroot | 存放 Buildroot 开发的根文件系统。 |
| device/rockchip | 包存放芯片板级配置以及一些编译和打包固件的脚本和文件。 |
| docs | 存放通用开发指导文档、Linux系统开发指南、芯片平台相关文档等。 |
| external | 存放第三方相关仓库,包括显示、音视频、摄像头、网络、安全等。 |
| kernel | 存放 Kernel 开发的代码。 |
| output | 存放每次生成的固件信息、编译信息、XML、主机环境等。 |
| prebuilts | 存放交叉编译工具链。 |
| rkbin | 存放 Rockchip 相关二进制和工具。 |
| rockdev | 存放编译输出固件,实际软链接到output/firmware。 |
| tools | 存放 Linux 和 Window 操作系统下常用工具。 |
| u-boot | 存放基于 v2017.09 版本进行开发的 U-Boot 代码。 |
| yocto | 存放Yocto开发的根文件系统。 |

1.SDK构建

1.1工具链安装

玩转SDK需要安装最基础的工具链:make,gcc,g++等

bash 复制代码
sudo apt install make
sudo apt install gcc

1.2导入开发板配置

并非所有情况下都需要导入配置文件,如果你的构建系统为多个目标硬件提供了默认配置,那么通常需要先导入一个基础的开发板配置,再运行 make menuconfig 进行定制。

解压后的SDK内置了HZ-RK3506_MiniEVM板卡的配置文件,编译SDK前需要选择对应文件并进行配置,方法如下。

1.3SDK定制化配置

运行make menuconfig之前需要安装终端图形库(ncurses)以及解析 Kconfig 配置脚本的基础编译工具。在Ubuntu下下述命令即可:

bash 复制代码
sudo apt-get update
sudo apt-get install build-essential libncurses-dev bison flex

还可能需要安装flex和bison来生成语法分析器:

bash 复制代码
sudo apt install flex bison

在SDK下和在kernel下均可以进行make menuconfig,通过在SDK下配置,可选择不同Rootfs、Loader、Kernel等配置,进行各种定制化编译,这样就可以灵活地选择和配置系统组件以满足特定的需求。

配置相关内容说明:

  • Rootfs:这里的Rootfs代表"根文件系统",在这里可选择Buildroot、Yocto、Debian等不同的根文件系统配置。
  • Loader (u-boot):这是引导加载器的配置,通常是u-boot,用于初始化硬件并加载主操作系统。
  • AMP:多核异构系统开发配置选项,适用于电力、工控等行业;
  • Kernel:这里配置内核选项,定制适合自己的硬件和应用需求的Linux内核。
  • Boot:这里配置Boot分区支持格式。
  • Recovery (based on buildroot):这是基于buildroot的recovery环境的配置,用于系统恢复和升级。
  • Security:安全功能开启,包含Secureboot开启方式、Optee存储方式、烧写Key等。
  • Extra partitions:用于配置额外的分区。
  • Firmware:在这里配置固件相关选项。
  • Update (Rockchip update image):用于配置Rockchip完整固件的选项。
  • Others configurations:其他额外的配置选项。

配置完成后,使用make savedefconfig命令保存这些配置,将临时配置改为持久化配置。

bash 复制代码
make menuconfig   //配置文件
make savedefconfig   //保存配置

1.4编译

编译可分为整体编译和Rootf,kernel,u-boot分别编译,同之前RK3568的步骤一样。

2.在Ubuntu系统下烧录镜像

在Windows下烧录镜像我们使用瑞芯微的工具:RKDevTool_v3.37_for_window,而在Ubuntu下我们使用工具 upgrade_tool,使用命令行的方式进行烧录。

2.1准备烧录工具

首先我们进入 upgrade_tool所在目录下(假设当前目录为SDK根目录):

bash 复制代码
cd tools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool

可以看到烧录工具:

然后将烧录工具拷贝到 /usr/local/bin下:

bash 复制代码
cp upgrade_tool /usr/local/bin

2.2镜像烧录

首先我们使用USB-Type线连接开发板和PC,然后进入 /usr/local/bin 目录下,可以通过命令行检测设备:

bash 复制代码
upgrade_tool ld

我们需要将开发板设为loader模式maskrom,先拔下开发板电源(Type-c),然后按住按键S3,再接上Type-c,这时应该就可以检测到设备了。

最后通过命令烧录:

bash 复制代码
sudo upgrade_tool uf /home/haohao/666/rk/SDK/rockdev/update.img

3.修改设备树并单独烧录设备树

3.1修改设备树

当我们想外界新设备并修改设备树时,我们首先要知道我们编译时用到的设备树是哪些,设备树在路径 /SDK/kernel/arch/arm/boot/dts 下:

我们要知道哪个设备树是我们编译用到的,可以查看我们的配置文件,在第一章中我们已经使用过配置文件,所有板级配置文件在目录 SDK/device/rockchip/rk3506 下:

我们找到我们需要的并查看即可:

这样就可以找到我们需要的设备树文件。

修改设备树文件一般分为板级设备树和芯片级设备树,我们修改的一般是板级设备树,芯片级设备树一般不要动。

3.2编译并烧录

编译

编译设备树要在 kernel 目录下,编译之前首先要先配置:

然后编译设备树:

bash 复制代码
make dtbs

编译设备树后也会生成很大文件,我们需要找到哪个是我们需要的,我们可以从开发板上查看,通过串口连接到开发板,然后输入:

bash 复制代码
cat /sys/firmware/devicetree/base/compatible

找到开发板加载的设备树文件名称:

这样,我们就知道了我们需要的设备树文件(设备树文件依然在 SDK/kernel/arch/arm/boot/dts)

烧录

烧录分为两种形式,我们可以查看分区表,如果存在dtb分区,我们就可以直接将dtb烧录的开发板中,如果不存在dtb分区只存在boot分区(boot.img是 ./build.sh kernel 的结果),意思是dtb文件被打包到boot.img中的。

查看分区:

bash 复制代码
sudo upgrade_tool pl

可以观察到,我们就是不存在dtb分区的,所以我们的设备树文件dtb是在编译内核是时候一起被构建的,故而不存在只烧录设备树文件,如果更改设备树文件我们是要重新编译kernel的。

重新编译kernel之后,我们就可以将 boot.img镜像烧录的开发板中:

bash 复制代码
sudo upgrade_tool di --boot /home/haohao/666/SDK/rockdev/boot.img
相关推荐
BelongPanda29 分钟前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯40 分钟前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998341 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei371 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源
三易串口屏1 小时前
三易串口屏开发教程:如何使用键盘控件输入参数并发送给单片机
单片机·嵌入式硬件·串口屏·三易串口屏·键盘控件
笑锝没心没肺2 小时前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器
AAA@峥2 小时前
CentOS Stream8 基于 Packstack 搭建 OpenStack 云平台全流程实战
linux·centos·openstack
汤永红2 小时前
gtk-x11-2.0.so.0
linux·运维·服务器
Yana.nice2 小时前
Linux logrotate 日志切割未生效
linux·运维·服务器
国科安芯2 小时前
空间机电一体化:AS32S601型抗辐射MCU在卫星推进与执行机构控制中的关键技术研究
单片机·嵌入式硬件·物联网·机器人·云计算