完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
编译根文件系统
准备工作 开发环境搭建 除了系统要求外,还有其他软硬方面的要求。 64 位系统 硬盘空间大于 40G,如果您进行多个构建,将需要更大的硬盘空间。 推荐使用Ubuntu 16.04 的系统进行编译。其他版本没有具体测试,可能需要对软件包做相应调整。 软件包安装 操作系统安装好后,且用户已自行配置好网络环境,则可继续如下步骤完成相关软件包的安装。 apt-get update $ sudo apt-get update 安装 Kernel 及 U-Boot 编译需要依赖的软件包 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip device-tree-compiler 安装 Buildroot 编译需要依赖的软件包 $ sudo apt-get install libfile-which-perl sed make binutils gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc libmpc3 git repo texinfo pkg-config cmake tree 若编译遇到报错,可以视报错信息,安装对应的软件包。 交叉编译工具链介绍 鉴于 Rockchip Buildroot SDK 目前只在 Linux 下编译,我们也仅提供了 Linux 下的交叉编译工具链。其中 U-Boot 及 Kernel 使用的编译工具链预置目录在 prebuilt/gcc下,buildroot 使用该开源软件中编译出来的工具链。 U-Boot 及 Kernel 编译工具链 prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- 对应版本 gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) Buildroot 编译工具链 buildroot/output/rockchip_rk3308_release/host/bin/aarch64-rockchip-linux-gnu- 对应版本 gcc version 6.4.0 (Buildroot 2018.02-rc3-00017-g9c68ede) 如果需要其他平台或版本的工具链,需自行编译。 下载 SDK 由于 SDK 比较大,我们提供了一个打包好的.git以供下载: Firefly-RK3308_Linux_SDK 下载完成后先验证一下 MD5 码: $ md5sum Firefly-RK3308_Linux_SDK_git_20181008.7z 3800278cc016d117eec8c0381ba66769 Firefly-RK3308_Linux_SDK_git_20181008.7z 确认无误后,就可以解压: $ mkdir -p ~/prj/Firefly-RK3308 $ cd ~/prj/Firefly-RK3308 $ 7zr x Firefly-RK3308_Linux_SDK_git_20181008.7z $ git reset --hard 解压出来的SDK,已经默认添加远程仓库 $ git remote -v 以后就可以直接从 gitlab 处更新: $ git pull gitlab firefly:firefly SDK 目录结构 . ├── buildroot ├── build.sh -> device/rockchip/common/build.sh ├── device ├── envsetup.sh -> buildroot/build/envsetup.sh ├── external ├── kernel ├── Makefile -> buildroot/build/Makefile ├── mkfirmware.sh -> device/rockchip/rk3308/mkfirmware.sh ├── prebuilts ├── rkbin ├── rockdev ├── tools ├── u-boot └── yocto 其中: Buildroot 目录存放 buildroot 开源项目代码,可定制根文件系统 build.sh 为系统编译脚本,执行可进行 SDK 的完整编译 device 目录存放板级配置及一些预置文件,开机脚本等 external 目录存放 SDK 相关库及工具源码 kernel 为内核部分源码 mkfirmware.sh 脚本可对镜像文件进行打包,并统一拷贝至 rockdev/ 目录 prebuilts 目录存放 U-Boot、Kernel 编译使用的交叉编译工具链 rkbin 目录存放 Rockchip 平台一些关键性二进制文件,包括ddr.bin,miniloader.bin,bl31.bin,在 U-Boot 编译过程中会用到 rockdev 执行 mkfirmware.sh 会把系统编译的生成的镜像,统一拷贝至 rockdev/ tools 目录存放着 Windows 及 Linux 环境下的开发工具、调试工具、量产工具 u-boot 目录存放着 U-Boot 部分的源码 编译 Uboot 编译 Uboot: $ cd u-boot/ $ ./make.sh roc-rk3308-cc 编译完,会生成 trust.img、rk3308_loader_xxx.bin、uboot.img 三个镜像文件。 编译 Kernel 编译 Kernel: $ cd kernel/ $ make arch=arm64 firefly-rk3308_linux_defconfig $ make arch=arm64 rk3308-roc-cc-dmic-pdm_emmc.img 编译 kenrel 的时候可以直接 make dts-name.img(如 rk3308-roc-cc-dmic-pdm_emmc.img),即可生成对应的 resource.img(包含 dtb 数据)。 最终生成的kernel.img和resource.img将会被打包进boot.img,更换内核的时候,只需烧写boot.img即可 编译 Buildroot 编译 Buildroot,envsetup.sh 是终端环境变量设置脚本: $ source buildroot/build/envsetup.sh You're building on Linux Lunch menu...pick a combo: 1. firefly_rk3308_release 2. firefly_rk3308_recovery 3. firefly_rk3308_pcba Which would you like? [1] 1 =========================================== 如选择 firefly_rk3308_release,输入对应序号 1 执行编译: $ make 完成编译后执行 SDK 根目录下的 mkfirmware.sh 脚本生成固件。 $ ./mkfirmware.sh 所有烧写所需的镜像都将会拷贝于 rockdev 目录。 rockdev/ ├── boot.img ├── MiniLoaderAll.bin ├── misc.img ├── oem.img ├── parameter.txt ├── recovery.img ├── rootfs.img ├── trust.img ├── uboot.img └── userdata.img 得到了所有镜像文件后,为了方便烧写及量产,通常可手动将这些单独的镜像通过脚本打包成为一个统一固件:update.img。打包方法见下文。 全自动编译脚本 为了提高编译的效率,降低人工编译可能出现的误操作,该 SDK 中集成了全自动化编译脚本,方便固件编译、备份。 该全自动化编译脚本原始文件存放于: device/rockchip/common/build.sh 在SDK根目录创建了相应软链接build.sh。 可通过修改 device/rockchip/rk3308/BoardConfig.mk 脚本中的特定变量,以编出对应产品固件 #========================= # Compile Config #========================= # Target arch ARCH=arm64 # Uboot defconfig UBOOT_DEFCONFIG=roc-rk3308-cc # Kernel defconfig KERNEL_DEFCONFIG=firefly-rk3308_linux_defconfig # Kernel dts KERNEL_DTS=rk3308-roc-cc-dmic-pdm_emmc # Buildroot config CFG_BUILDROOT=firefly_rk3308_release # Recovery config CFG_RECOVERY=firefly_rk3308_recovery # Pcba config CFG_PCBA=firefly_rk3308_pcba # Build jobs JOBS=12 执行自动编译脚本: $ ./build.sh 该脚本会自动配置环境变量,并自动编译 U-Boot,编译 Kernel,编译Buildroot,编译 Recovery 继而生成固件。 模块编译 为了方便开发调试,上文说到的“全自动化编译脚本”,也支持单独模块进行编译,方便模块调试,可指定并编译部分模块。 部分编译可参见使用说明: $ ./build.sh -h ====USAGE: build.sh modules==== uboot -build uboot kernel -build kernel rootfs -build default rootfs, currently build buildroot as default buildroot -build buildroot rootfs yocto -build yocto rootfs, currently build ros as default ros -build ros rootfs debian -build debian rootfs pcba -build pcba recovery -build recovery all -build uboot, kernel, rootfs, recovery image cleanall -clean uboot, kernel, rootfs, recovery firmware -pack all the image we need to boot up system updateimg -pack update image save -save images, patches, commands used to debug default -build all modules 如单独编译 kernel,只需要执行以下命令: $ ./build.sh kernel 统一固件打包工具 固件打包工具可将各零散镜像文件,打包成一个完整的 update.img 形式,方便量产烧写及升级。 Windows 下打包 Windows 系统下,打包工具存放在 toolswindowsAndroidToolrockdev,打包步骤如下: 打开 rockdev 目录,编辑 package-file。按照 package-file 进行配置,package-file 里面配置 img 镜像放在 Image 目录底下的,将需要放到 Image 目录的镜像拷贝进去即可。且注意配置时,镜像名字的准确。其中注意bootloader选项,应该根据自己生成的 loader 名称进行修改。 编辑 mkupdate.bat。 需要修改 loader 名称为实际存放的loader 名称即可。 点击 mkupdate.bat 运行即可,运行完会在当前目录生成一个 update.img。 Linux 下打包 打包工具存放在 SDK/tools/linux/Linux_Pack_Firmware/rockdev/,打包步骤如下: 打开 rockdev 目录,编辑 package-file。 按照 package-file 进行配置,package-file 里面配置 img 镜像放在 Image 目录底下的,将需要放到 Image 目录的镜像拷贝进去即可。且注意配置时,镜像名字的准确。其中注意bootloader选项,应该根据自己生成的 loader 名称进行修改。 编辑 mkupdate.sh。 需要修改 loader 名称为实际存放的loader 名称即可。 在 rockdev 目录下,执行以下命令,运行完会在当前目录生成一个 update.img。 $ ./mkupdate.sh 另外,Linux下,SDK有提供一键打包工具,自动生成统一固件 rockdev/update.img $ ./build.sh updateimg 烧写镜像文件 请参照《升级固件》来烧写分区映像文件。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
343 浏览 0 评论
696 浏览 1 评论
602 浏览 1 评论
1833 浏览 1 评论
3083 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 11:45 , Processed in 0.835848 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号