布罗利 发表于 2023-5-20 15:04

RK3568开发板上手编译源码

本帖最后由 布罗利 于 2023-5-20 15:06 编辑



一、准备源码




1. 创建工作目录

$mkdir -p ~/rk3568




2. 拷贝源码

将RK3568用户资料中的源码文件OK3568-linux-source.tar.bz2.a*拷贝到虚拟机~/rk3568目录。




https://picx.zhimg.com/80/v2-1aa8e492d1e6cefc808af98c581374ee_720w.png



拷贝文件的方式有很多,笔者使用的是共享文件夹方式。




【注】OK3568源码使用分段压缩,每段最大4G,这样方便拷贝,因此有些存储器单文件最大支持4G。




3. 解压源码

$cat OK3568-linux-source.tar.bz2.a* >OK3568-linux-source.tar.bz2

$tar -xvf OK3568-linux-source.tar.bz2




耐心等待完成即可,解压时间有点久。




4. 进入源码

$cd ~/rk3568/OK3568-linux-source

目录结构




https://pic1.zhimg.com/80/v2-7c7b3a5ccc489cf2e9eeb13271bfdcdf_720w.png


二、编译SDK




1. 编译前配置

在device/rockchip/ok3568/目录下,有不同板型的配置文件,选择配置文件:

$./build.shBoardConfig-ok3568.mk

相关配置介绍:




https://picx.zhimg.com/80/v2-a2f4c7481587eaee7a407037c20c548b_720w.jpg






2. 编译

编译u-boot

$./build.shuboot




https://pic1.zhimg.com/80/v2-af45510774e0ff987c8c7ba642280ccb_720w.png


……




https://pic1.zhimg.com/80/v2-98b67176abfacd6f9b885fcd583faebf_720w.png



编译kernel

$./build.shkernel




https://picx.zhimg.com/80/v2-573bc8c90cc8ffb0a8fc88104537cfbb_720w.png





……




https://pica.zhimg.com/80/v2-f84e3ed913fe062a977a8c9e69509893_720w.png




【注】编译一段时间后会弹出下图界面,需要选择,提取图中信息,VCCIO4和VCCIO6选择1800000其余选择3300000,使用上下方向按键选择选项,按回车确认选择即可。




https://picx.zhimg.com/80/v2-263ab416e2ff402fed0e0abaa7f4e1d6_720w.png
编译recovery

$./build.shrecovery




https://picx.zhimg.com/80/v2-8b40a6e6de5458345c03ead82e0fdc4b_720w.png
……




https://picx.zhimg.com/80/v2-a2221c24190b8e33eb8562b6e42dee70_720w.png




编译Buildroot根文件系统

$./build.shbuildroot




https://pica.zhimg.com/80/v2-5d126af8c05094da6c2e49f3749eea22_720w.png

制作文件系统的时间会比较久,请耐心等待编译完成。




【注1】确保作为普通用户编译Buildroot根文件系统,避免不必要的错误;

【注2】如果不想编译文件系统,也可直接从已有的镜像中解压后,将其拷贝到rockdev目录下。




3. 打包固件

更新各部分镜像链接到rockdev/目录:

$./mkfirmware.sh

打包固件,生成的完整固件会保存到rockdev/目录。

$./build.shupdateimg




https://picx.zhimg.com/80/v2-71cb4cdeaef724d4e4985c43348f222e_720w.png

全自动编译

全自动编译会执行上述编译、打包操作,生成完整固件。

$./build.sh







三、分区说明




1. parameter 分区表

parameter.txt文件中包含了固件的分区信息,以parameter-buildroot.txt为例:

路径:

device/rockchip/ok3568/parameter-buildroot-fit.txt




https://pic1.zhimg.com/80/v2-7436ce0049b388388058e81a232c8302_720w.jpg

CMDLINE属性是我们关注的地方,以uboot为例,0x00002000@0x00004000(uboot)中0x00004000为uboot分区的起始位置,0x00002000为分区的大小,以此类推。




2. package-file

package-file文件用于打包固件时确定需要的分区镜像和镜像路径,同时它需要与parameter.txt文件保持一致。




路径:

tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file

#NAME      Relative path

#

#HWDEF             HWDEF

package-filepackage-file

bootloaderImage/MiniLoaderAll.bin

parameter   Image/parameter.txt

#trust          Image/trust.img

uboot          Image/uboot.img

misc             Image/misc.img

#resource    Image/resource.img

#kernel      Image/kernel.img

boot            Image/boot.img

recovery      Image/recovery.img

rootfs          Image/rootfs.img

oem             Image/oem.img

userdata      Image/userdata.img




#要写入backup分区的文件就是自身(update.img)

#SELF 是关键字,表示升级文件(update.img)自身

#在生成升级文件时,不加入SELF文件的内容,但在头部信息中有记录

#在解包升级文件时,不解包SELF文件的内容。




backup      RESERVED

#update-script   update-script

#recover-script   recover-script




四、镜像制作




编译源码可直接得到镜像,但是编译时间太长,有些部分不需要再次编译,只需要从已有的镜像中解包,然后再和新编译的部分组合打包即可,下面是制作方法。




1. 工具安装

下载工具包:

$git clone

https://github.com/TeeFirefly/rk2918_tools.git




进入工具包目录:

$cd rk2918_tools

编译:

$make




https://pica.zhimg.com/80/v2-586e5f7e9b6aa73a59fdd24ba7d13c14_720w.png
将可执行文件拷贝到用户二进制目录:

$sudo cp afptool img_unpack img_maker mkkrnlimg/usr/local/bin




2. 解包

将update.img拷贝到Ubuntu中,然后使用命令解包:

$img_unpack update.img img




https://pic1.zhimg.com/80/v2-40d99e4bfa85926ed3a851cc0d2285db_720w.png



解包到img目录,img目录会自动生成,解析成功之后,img目录下会生成loader.img和update.img。




https://pic1.zhimg.com/80/v2-1bd5faa9571a2f41a2669a515b3d8d4b_720w.png



接下来进入到img目录,使用afptool-unpack 解压:

$afptool -unpack update.img update




https://pic1.zhimg.com/80/v2-cc242a9c1b2064d07f3748ebac4ceb25_720w.png

解压到update目录

打开update目录,里面有很多img文件。




将需要的文件复制到rockdev目录下。




3. 合成update.img

然后源码目录以下命令即可:

$./build.shupdateimg




https://pic1.zhimg.com/80/v2-d29b0b30bf153a42f5635dd7268ba0fd_720w.png

页: [1]
查看完整版本: RK3568开发板上手编译源码