当前位置: 首页 > news >正文

编译linux SDK

参考正点原子

编译环境是 ubuntu20.04。Linux 源码包是rk356x_linux_XXXXXXX.tar.gz。使用命令“ tar -vxf rk356x_linux_XXXXXXX.tar.gz解压,解压后会生成一个 rk356x_linux 文件夹。

1、编译 uboot
./build.sh uboot

编译成功生成

<SDK>/uboot/uboot.img
<SDK>/uboot/rk356x_spl_loader_v1.13.112.bin
 

2、编译 kernel
./build.sh kernel
编译成功生成<SDK>/kernel/boot.img

3、编译 Recovery

./build.sh recovery
编译成功生成rootfs.img,在目录下buildroot/output/rockchip_rk356x_recovery/images/

4、编译 rootfs

选择buildroot根文件系统

./build.sh buildroot

编译成功生成rootfs.img,在目录下
buildroot/output/rockchip_rk3568/images/
 

5、打包镜像

./build.sh firmware
将前面编译的镜像移动到 rockdev 目录下

./build.sh updateimg
将 rockdev 目录下的镜像打包 update.img 镜像

6、SDK 板级配置文件

板级配置文件位于目录<SDK>/device/rockchip/rk356x/。xxx.mk文件就是板级配置文件,.mk 文件其实是一个 sh 脚本文件,通过 export 导出一些环境变量。

7、uboot

U-Boot 源码在<SDK>/u-boot 目录
RK3568 的设备树文件是<U-Boot>/arch/arm/dts/rk3568-evb.dts,该设备树文件包
含了 rk3568.dtsi 和 rk3568-u-boot.dtsi。原生的 U-Boot 只支持 U-Boot 自己的 DTB, RK 平台在原生 U-Boot 基础上增加了 kernel DTB 机制的支持,即 U-Boot 会使用 kernel DTB 去初始化外设。U-Boot 设备树负责初始化存储、调试串口等基础外设;而 kernel 设备树初始化存储、调试
串口之外的外设,譬如 LCD 显示、 千兆网等。执行 U-Boot 代码时先用 U-Boot 的设备树完成存
储、调试串口的初始化操作,然后从存储上加载 kernel 的设备树并转而使用这份设备树继续初
始化其余外设。
MiniLoaderAll.bin由 rk356x_spl_loader_v1.13.112.bin 重命名而来。MiniLoaderAll.bin 由两部分构成: TPL(Tiny Program Loader) + SPL(Secondary Program Loader)构成。TPL 运行在 SRAM 中(片内内存), 由 rk3568 芯片内部所固化的 Maskrom(BootROM)代码引导启动;其作用是负责完成 DRAM 的初始化工作、并启动 SPL; SPL 运行在 DDR, SPL的作用是负责完成系统的 lowlevel 初始化、 完成 uboot.img 的加载和引导工作。

Linux 系统的镜像启动顺序为:
Maskrom → MiniLoaderAll.bin → uboot.img → boot.img → rootfs.img
还可以进行细分:
Maskrom → TPL(ddr bin) → SPL(miniloader) → Trust(ATF + OP-TEE) → u-boot → kernel → rootfs

U-Boot中, RK3568平台使用的defconfig配置文件为: <U-Boot>/configs/rk3568_defconfig
 

http://www.dtcms.com/a/26139.html

相关文章:

  • html网络安全工具源码 网络安全前端
  • 网络安全 逆向 apk 网络安全逆向分析
  • DeepSeek-学习与实践
  • 电容的温度系数分析
  • Qt中的MOC元对象系统内部原理介绍与开发应用
  • 【Git】初识Git 基础操作
  • DL/CV领域常见指标术语(FLOPS/mIoU/混淆矩阵/F1-measure)------一篇入门
  • C/C++流星雨
  • vue3 ref和reactive的区别
  • MOS管炸了,PWM“死区”时间得了解一下
  • 九联UNT403AS_晶晨S905L3S芯片_2+8G_安卓9.0_卡刷固件包
  • Python控制台信息记录全解析:从基础到生产级实践指南
  • 网络流量如何从公共互联网抵达Kubernetes容器 Pod?
  • 无法保存IP设置问题过程 - 心酸
  • PTA:使用指针方式求一个给定的m×n矩阵各行元素之和
  • VS2019+Mitk+cmake编译运行MitkWorkbench
  • Qt开发④Qt常用控件_上_QWdget属性+按钮类控件
  • el-button按钮的loading状态设置
  • android 定制mtp连接外设的设备名称
  • HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(三)
  • 【模板】图论 最短路 (Floyd+SPFA+Dijkstra)
  • QT C++ new QTableWidgetItem 不需要删除指针
  • IDEA CodeGPT 使用教程
  • Qt QToolBox 组件总结
  • MySQL 事务:确保数据一致性的核心机制
  • 基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
  • 【JavaEE进阶】Spring MVC(3)
  • C# 实现完善 Excel 不规则合并单元格数据导入
  • Cherry-Studio下载安装教程,AI面向开发者的工具或平台(付安装包)
  • R软件用潜在类别混合模型LCM分析老年人抑郁数据轨迹多变量建模研究