完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发环境: 主机:Ubuntu 18.04 开发板:OK3568-C开发板 1.创建工作目录 $ mkdir -p ~/rk3568 2.拷贝源码 将用户资料中的源码文件OK3568-linux-source.tar.bz2.a*拷贝到虚拟机~/rk3568 目录。 拷贝文件的方式有很多,笔者使用的是共享文件夹方式。 【注】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 目录结构 $ tree -L 1 bruceou@ubuntu:~/rk3568/OK3568-linux-source$ tree -L 1 . ├── app ├── buildroot # Buildroot 根文件系统编译目录 ├── build.sh ->device/rockchip/common/build.sh # 编译脚本 ├── debian # Debian 根文件系统编译目录 ├── device # 编译相关配置文件 ├── docs ├── envsetup.sh ->buildroot/build/envsetup.sh ├── external ├── kernel ├── Makefile ->buildroot/build/Makefile ├── mkfirmware.sh ->device/rockchip/common/mkfirmware.sh # 链接脚本 ├── prebuilts ├── rkbin ├── rkflash.sh ->device/rockchip/common/rkflash.sh # 烧写脚本 ├── tools #工具目录 ├── u-boot # u-boot目录 └── yocto 12 directories, 5 files 1.编译前配置 在 device/rockchip/ok3568/目录下,有不同板型的配置文件,选择配置文件: $./build.sh BoardConfig-ok3568.mk 相关配置介绍: #!/bin/bash # Target arch export RK_ARCH=ARM64 # 64位 ARM 架构 # Uboot defconfig exportRK_UBOOT_DEFCONFIG=OK3568-C # u-boot 配置文件 # Uboot image format type:fit(flattened image tree) export RK_UBOOT_FORMAT_TYPE=fit # Kernel defconfig export RK_KERNEL_DEFCONFIG=OK3568-C-linux_defconfig#kernel 配置文件 # Kernel defconfig fragment exportRK_KERNEL_DEFCONFIG_FRAGMENT= # Kernel dts exportRK_KERNEL_DTS=OK3568-C-linux# dts 文件 # boot image type export RK_BOOT_IMG=boot.img # kernel image path export RK_KERNEL_IMG=kernel/arch/arm64/boot/Image # kernel image format type:fit(flattened image tree) exportRK_KERNEL_FIT_ITS=boot.its # parameter for GPT table exportRK_PARAMETER=parameter-buildroot-fit.txt# 分区表 # Buildroot config export RK_CFG_BUILDROOT=OK3568#Buildroot 配置 # Recovery config exportRK_CFG_RECOVERY=OK3568-recovery # recovery 配置 # Recovery image format type:fit(flattened image tree) exportRK_RECOVERY_FIT_ITS=boot4recovery.its # ramboot config export RK_CFG_RAMBOOT= # PCBa config export RK_CFG_PCBA= # Build jobs export RK_JOBS=40 # target chip export RK_TARGET_PRODUCT=ok3568 # Set rootfs type, includingext2 ext4 squashfs export RK_ROOTFS_TYPE=ext4 # yocto machine exportRK_YOCTO_MACHINE=rockchip-rk3568-evb # rootfs image path export RK_ROOTFS_IMG=rockdev/rootfs.${RK_ROOTFS_TYPE} # Set ramboot image type export RK_RAMBOOT_TYPE= # Set oem partition type,including ext2 squashfs export RK_OEM_FS_TYPE=ext2 # Set userdata partition type,including ext2, fat export RK_USERDATA_FS_TYPE=ext2 #OEM config export RK_OEM_DIR=oem_normal # OEM build on buildroot #exportRK_OEM_BUILDIN_BUILDROOT=YES #userdata config exportRK_USERDATA_DIR=userdata_normal #misc image export RK_MISC=wipe_all-misc.img #choose enable distro module export RK_DISTRO_MODULE= # Define pre-build script forthis board exportRK_BOARD_PRE_BUILD_SCRIPT=app-build.sh 2.编译 编译 u-boot $./build.sh uboot …… 编译 kernel $./build.sh kernel …… 【注】编译一段时间后会弹出下图界面,需要选择,提取图中信息, VCCIO4 和 VCCIO6 选择 1800000 其余选择 3300000,使用上下方向按键选择选项,按回车确认选择即可。 编译 recovery $./build.sh recovery …… 编译 Buildroot 根文件系统 $./build.sh buildroot 制作文件系统的时间会比较久,请耐心等待编译完成。 注1:确保作为普通用户编译 Buildroot 根文件系统,避免不必要的错误。 注2:如果不想编译文件系统,也可直接从已有的镜像中解压后,将其拷贝到rockdev目录下。 3.打包固件 更新各部分镜像链接到 rockdev/目录: $./mkfirmware.sh 打包固件,生成的完整固件会保存到 rockdev/目录。 $./build.sh updateimg [PS]全自动编译 全自动编译会执行上述编译、打包操作,生成完整固件。 $./build.sh 1.parameter 分区表 parameter.txt 文件中包含了固件的分区信息,以parameter-buildroot.txt 为例: 路径:device/rockchip/ok3568/parameter-buildroot-fit.txt FIRMWARE_VER: 1.0 MACHINE_MODEL: RK3568 MACHINE_ID: 007 MANUFACTURER: RK3568 MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: 0xffffffff CHECK_MASK: 0x80 PWR_HLD: 0,0,A,0,1 TYPE: GPT CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00c00000@0x00038000(rootfs),0x00040000@0x00c38000(oem),-@0x00c78000(userdata:grow) uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9 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-file package-file bootloader Image/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 将可执行文件拷贝到用户二进制目录: $ sudo cp afptool img_unpack img_maker mkkrnlimg/usr/local/bin 2.解包 将update.img拷贝到Ubuntu中,然后使用命令解包: $ img_unpack update.img img 解包到img目录,img目录会自动生成,解析成功之后,img 目录下会生成 loader.img 和update.img。 接下来进入到img 目录,使用 afptool -unpack 解压: $ afptool -unpack update.img update 解压到update目录 打开update目录,里面有很多img文件。 将需要的文件复制到rockdev目录下。 3.合成update.img 然后源码目录以下命令即可: $./build.sh updateimg
|
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【飞凌嵌入式OK3588J-C开发板体验】OK3588J-C开发板开箱评测
3511 浏览 1 评论
[威廉希尔官方网站 ] 【飞凌嵌入式OK3576-C开发板体验】llama2.c部署
7398 浏览 0 评论
7861 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】ssh连接与文件传输
7791 浏览 0 评论
9241 浏览 0 评论
6829浏览 2评论
11244浏览 1评论
5324浏览 1评论
85718浏览 1评论
687浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 12:57 , Processed in 0.566058 second(s), Total 37, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号