开发板
:atk-rk3568开发板
eMMC
:64G
LPDDR4
:4G
显示屏
:5.5寸mipi
u-boot
: 2017.09
kernel
:4.19
cpu
ATK-DLRK3568开发板使用的RK3568芯片为例,瑞芯微提供了全面的Linux SDK 包,Linux SDK 包主要包含了:
? app:存放上层应用 app,包括 Qt 应用程序,以及其它的 C/C++应用程序。
? buildroot:基于 buildroot 开发的根文件系统。
? debian:基于 Debian 开发的根文件系统。
? device/rockchip:存放各芯片板级配置文件和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。
? docs:存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、Linux 开发指南等。
? external:存放所需的第三方库,包括音频、视频、网络、recovery 等。
? kernel:Linux 4.19 版本内核源码。
? prebuilts:存放交叉编译工具链。
? rkbin:存放 Rockchip 相关的 Binary 和工具。
? rockdev:存放编译输出固件,编译 SDK 后才会生成该文件夹。
? tools:存放 Linux 和 Windows 操作系统环境下常用的工具,包括镜像烧录工具、SD 卡升级启动制作工具、批量烧录工具等,譬如前面给大家介绍的 RKDevTool 工具以及Linux_Upgrade_Tool 工具在该目录下均可找到。
? u-boot:基于 v2017.09 版本进行开发的 uboot 源码。
? yocto:基于 Yocto 开发的根文件系统。
sudo apt-get update
sudo apt-get install curl git ssh make gcc libssl-dev liblz4-tool expect -y
sudo apt-get install g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison -y
sudo apt-get install flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python3-pip -y
sudo apt-get install libncurses-dev python3-pyelftools vim mtd-utils -y
#安装python2
curl -O https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
tar -xvf Python-2.7.18.tgz
#sudo apt-get install python2.7 python-pyelftools -y
#sudo rm -rf /usr/bin/python
#sudo ln -s /usr/bin/python2 /usr/bin/python
mkdir ~/bin
export PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod a+x ~/bin/repo
git config --global user.name "your name"
git config --global user.email "your email
mkdir ~/rk3568_linux_sdk
tar xvf atk-rk3568_linux_release_v1.0_20230620.tgz -C ~/rk3568_linux_sdk
tar -xzf dl.tgz -C ~/rk3568_linux_sdk/buildroot/ #第三方软件包
cd ~/rk3568_linux_sdk/
python3 .repo/repo/repo sync -l -j10
realpath .repo/manifests/rk3568_linux_release.xml #查看sdk atk版本
ls .repo/manifests/rk356x_linux/rk356x_linux_release* #在 SDK 源码根目录下,查询当前 SDK 的 RK 版本
SDK 软件框图从下至上分为 Bootloader、Linux Kernel、Libraries、Applications 四个层次,各层次内容如下:
? BootLoader 层主要提供底层系统支持包,如 BootLoader、U-Boot、ATF 相关支持。
? Kernel 层主要提供 Linux Kernel 的标准实现,Linux 也是一个开放的操作系统。Rockchip
平台的 Linux 核心为标准的 Linux4.4/4.19/5.10 内核,提供安全性、内存管理、进程管
理、网络协议栈等基础支持;主要是通过 Linux 内核管理设备硬件资源,如 CPU 调度、
缓存、内存、I/O 等。
? Libraries 层对应一般嵌入式系统,相当于中间件层次,包含了各种系统基础库,以及第
三方开源程序库支持,对应用层提供 API 接口,系统定制者和应用开发者可以基于
Libraries 层的 API 开发新的应用。
? Applications 层主要是实现具体的产品功能及交互逻辑,需要一些系统基础库及第三方
程序库支持,开发者可以开发实现自己的应用程序,提供系统各种能力给到最终用户。
./build.sh lunch #然后输入3
./build.sh all #首次编译,需要全部编译
./build.sh #全部编译+打包
./build.sh firmware #镜像打包到 SDK/rockdev 目录
./mkfirmware.sh #或者直接执行 SDK 源码根目录下的./mkfirmware.sh 脚本
./build.sh uboot # 单独编译 U-Boot
./build.sh kernel # 单独编译 Kernel
./build.sh modules # 编译 Linux 内核源码,包括内核设备树、内核模块
./build.sh buildroot #单独编译 rootfs
./build.sh recovery # 单独编译 recovery
# 指定编译 buildroot 根文件系统 可以通过 环 境 变 量 RK_ROOTFS_SYSTEM 指 定 需 要 编 译 的 rootfs
(yocto/debian/buildroot):
export RK_ROOTFS_SYSTEM=buildroot
./build.sh rootfs
./build.sh updateimg #打包成 update.img 镜像(将 uboot.img、boot.img、MiniLoaderAll.bin、parameter.txt、misc.img、rootfs.img、
oem.img、userdata.img、recovery.img 等)打包成一个 update.img 固件
./build.sh cleanall # 清理 uboot、kernel、buildroot(rootfs、recovery)。
uboot.img
uboot.img 是一种 FIT 格式镜像,它由多个镜像合并而成,其中包括
trust 镜像(ARM Trusted Firmware + OP-TEE OS)、u-boot 镜像、u-boot dtb;编译 U-Boot 时会将这些镜像打包成一个 uboot.img。uboot.img 会烧录到开发板 uboot 分区
boot.img
boot.img 也是一种 FIT 格式镜像,它也是由多个镜像合并而成,其中包括内核镜像、内核 DTB、资源镜像 resource.img。boot.img 会烧录到开发板 boot 分区
MiniLoaderAll.bin
该镜像是运行在 RK3568 平台 U-Boot 之前的一段 Loader 代码(也就是比 U-Boot 更早阶段的 Loader),MiniLoaderAll.bin 由 TPL 和 SPL两部分组成, TPL 用于初始化 DDR,运行在 SRAM;而 SPL 运行在DDR,主要负责加载、引导 uboot.img。
misc.img 包含 BCB(Bootloader Control Block)信息,该镜像会烧写到开发板misc 分区。misc 分区是一个很重要的分区,其中存放了 BCB 数据块,主要用于Android/Linux 系统、U-Boot 以及 recovery 之间的通信
oem.img
给厂家使用,用于存放厂家的 APP 或数据,该镜像会烧写至开发板oem 分区,系统启动之后会将其挂载到/oem 目录。
parameter.txt
一个 txt 文本文件,是 RK3568 平台的分区表文件(记录分区名以及每个分区它的起始地址、结束地址);烧写镜像时,并不需要将parameter.txt 文件烧写到 Flash,而是会读取它的信息去定义分区。
recovery.img
recovery 模式镜像,recovery.img 用于进入 recovery 模式,recovery.img 会烧录到开发recovery 分区。recovery 模式是一种用于对设备进行修复、升级更新的模式。recovery.img 也是 FIT 格式镜像,也是由多个镜像合并而成,其中包括ramdisk(进入 recovery 模式时挂载该根文件系统)、内核镜像(进入recovery 模式时启动该内核镜像)、内核 DTB 以及 resource.img。rootfs.img
正常启动模式下对应的根文件系统镜像,包含有大量的库文件、可执行文件等。rootfs.img 会烧录到开发板 rootfs 分区
userdata.img
给用户使用,可用于存放用户的 App 或数据;该镜像会烧写至开发板 userdata 分区,系统启动之后,会将其挂载到/userdata 目录
参考:
http://www.openedv.com/docs/boards/arm-linux/RK3568Linux.html
http://www.openedv.com/docs/boards/arm-linux/RK3568Linuxhxb.html