EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
文章来源:飞凌嵌入式官网 搜索【Forlinx】进入飞凌官网了解更多产品详情和行业资讯
9 o' s' d7 t. y. A主机:Ubuntu18.04 开发板:OK3568-C开发板 本文将为大家介绍在飞凌嵌入式OK3568-C开发板上进行源码编译的过程,希望能够对各位工程师小伙伴有所帮助。话不多说,我们马上进入正题。
) k8 U: v2 b h1 J/ m+ D) G1、准备源码1. 创建工作目录 $mkdir -p ~/rk3568
, [5 l3 ]- w: x% ^2. 拷贝源码 将用户资料中的源码文件OK3568-linux-source.tar.bz2.a*拷贝到虚拟机~/rk3568目录。 拷贝文件的方式有很多,笔者使用的是共享文件夹方式。 【注】OK3568源码使用分段压缩,每段最大4G,这样方便拷贝,因此有些存储器单文件最大支持4G。
! V# U% X8 [2 P1 J# P' j% s3. 解压源码 $cat OK3568-linux-source.tar.bz2.a* >OK3568-linux-source.tar.bz2 $tar -xvf OK3568-linux-source.tar.bz2 耐心等待完成即可,解压时间有点久。
' D# J) ^! T) j7 B$ e; B K4. 进入源码 $cd ~/rk3568/OK3568-linux-source 目录结构
% L- C2 A! J9 O$ `9 o2、编译SDK1. 编译前配置 在device/rockchip/ok3568/目录下,有不同板型的配置文件,选择配置文件: $./build.shBoardConfig-ok3568.mk 相关配置介绍: ' w/ s1 _4 D* u
2. 编译 编译u-boot $./build.shuboot …… 编译kernel $./build.shkernel …… 【注】编译一段时间后会弹出下图界面,需要选择,提取图中信息,VCCIO4和VCCIO6选择1800000其余选择3300000,使用上下方向按键选择选项,按回车确认选择即可。 编译recovery $./build.shrecovery …… 编译Buildroot根文件系统 $./build.shbuildroot 制作文件系统的时间会比较久,请耐心等待编译完成。 【注1】确保作为普通用户编译Buildroot根文件系统,避免不必要的错误; 【注2】如果不想编译文件系统,也可直接从已有的镜像中解压后,将其拷贝到rockdev目录下。
2 ]) o4 |. L/ H" `3. 打包固件 更新各部分镜像链接到rockdev/目录: $./mkfirmware.sh 打包固件,生成的完整固件会保存到rockdev/目录。 $./build.shupdateimg [PS]全自动编译 全自动编译会执行上述编译、打包操作,生成完整固件。 $./build.sh
1 B: O. M' M$ F& q# M6 D- C9 G1 N3、分区说明1. parameter 分区表 parameter.txt文件中包含了固件的分区信息,以parameter-buildroot.txt为例: 路径: device/rockchip/ok3568/parameter-buildroot-fit.txt CMDLINE属性是我们关注的地方,以uboot为例,0x00002000@0x00004000(uboot)中0x00004000为uboot分区的起始位置,0x00002000为分区的大小,以此类推。
$ }0 j8 D1 v2 y. n2. package-file package-file文件用于打包固件时确定需要的分区镜像和镜像路径,同时它需要与parameter.txt文件保持一致。 路径: tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file #NAME Relative path # #HWDEF HWDEF package-filepackage-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 / i }. a2 j r4 G1 x% M
4、镜像制作编译源码可直接得到镜像,但是编译时间太长,有些部分不需要再次编译,只需要从已有的镜像中解包,然后再和新编译的部分组合打包即可,下面是制作方法。
! m2 c3 n Q7 l! _3 ^ R0 ]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 & R q+ U6 f- h8 D/ g* M0 u; @
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目录下。
7 ]$ n) s1 z, N# q' c+ m- v3. 合成update.img 然后源码目录以下命令即可: $./build.shupdateimg % q# W, c; c: q8 e# H
7 I0 J6 p1 P# j) k5 N( u5 j感谢发烧友[ouxiaolong]提供本篇OK3568-C开发板试用体验文章!
g% ]$ |7 q( q |