1. Linux SDK 介绍 Linux SDK 是由 Firefly 官方提供的 Linux 软件开发工具包,旨在方便用户基于其进行模块开发与系统定制。
1.1. 获取与编译 SDK 选择设备后,点击 Linux 开发 标题下的 编译 Ubuntu 固件 页面。 例如 ROC-RK3568-PC
1.2. SDK 目录树 各个芯片平台的 Linux SDK 目录树可能略有差异,但一般如下: . ├── app # 存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序。 ├── buildroot # 基于 buildroot (2018.02-rc3) 开发的根文件系统。 ├── build.sh -> device/rockchip/common/build.sh # Linux SDK 编译脚本。 ├── device # 存放各芯片板级配置和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。 ├── debian # 基于debian 开发的根文件系统。 ├── docs # 存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、Linux开发指南等。 ├── envsetup.sh -> buildroot/build/envsetup.sh # 配置 Buildroot 编译环境脚本。 ├── external # 存放第三方相关仓库,包括音频、视频、网络、recovery 等。 ├── kernel # 存放 kernel 开发的代码。 ├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh # rockdev 目录链接更新脚本。 ├── prebuilts # 存放交叉编译工具链。 ├── rkbin # 存放 Rockchip 相关的 Binary 和工具。 ├── rkflash.sh -> device/rockchip/common/rkflash.sh # 固件烧写脚本。 ├── tools # 存放 Linux 和 Windows 操作系统环境下常用工具。 ├── u-boot # 存放基于 v2017.09 版本进行开发的 uboot 代码。 └── yocto # 基于 yocto 开发的根文件系统。
1.3. 板级配置文件 编译 SDK 之前,用户需要选择板级配置文件,这些文件位于/device/rockchip目录下,例如rk356x: . ├── aio-3566-jd4-2cam-buildroot.mk ├── aio-3566-jd4-2cam-ubuntu.mk ├── aio-3566-jd4-buildroot.mk ├── aio-3566-jd4-mipi-2cam-buildroot.mk ├── aio-3566-jd4-mipi-2cam-ubuntu.mk ├── aio-3566-jd4-mipi-buildroot.mk ├── aio-3566-jd4-mipi-ubuntu.mk ├── aio-3566-jd4-ubuntu.mk ├── aio-3568j-2cam-buildroot.mk ├── aio-3568j-2cam-ubuntu.mk ├── aio-3568j-buildroot.mk ├── aio-3568j-lede.mk ├── aio-3568j-mipi-2cam-buildroot.mk ├── aio-3568j-mipi-2cam-ubuntu.mk ├── aio-3568j-mipi-buildroot.mk ├── aio-3568j-mipi-ubuntu.mk ├── aio-3568j-nvr.mk ├── aio-3568j-openwrt.mk ├── aio-3568j-ubuntu.mk ├── ipc-m10r800-a3568j-ubuntu.mk ├── itx-3568jq-2cam-ubuntu.mk ├── itx-3568jq-lvds-2cam-ubuntu.mk ├── itx-3568jq-lvds-ubuntu.mk ├── itx-3568jq-mipi-ubuntu.mk ├── itx-3568jq-ubuntu.mk ├── roc-rk3566-pc-2cam-buildroot.mk ├── roc-rk3566-pc-2cam-ubuntu.mk ├── roc-rk3566-pc-buildroot.mk ├── roc-rk3566-pc-lede.mk ├── roc-rk3566-pc-mipi-2cam-buildroot.mk ├── roc-rk3566-pc-mipi-2cam-ubuntu.mk ├── roc-rk3566-pc-mipi-buildroot.mk ├── roc-rk3566-pc-mipi-ubuntu.mk ├── roc-rk3566-pc-openwrt.mk ├── roc-rk3566-pc-ubuntu.mk ├── roc-rk3568-pc-2cam-buildroot.mk ├── roc-rk3568-pc-2cam-ubuntu.mk ├── roc-rk3568-pc-buildroot.mk ├── roc-rk3568-pc-lede.mk ├── roc-rk3568-pc-mipi-2cam-buildroot.mk ├── roc-rk3568-pc-mipi-2cam-ubuntu.mk ├── roc-rk3568-pc-mipi-buildroot.mk ├── roc-rk3568-pc-mipi-ubuntu.mk ├── roc-rk3568-pc-openwrt.mk ├── roc-rk3568-pc-ubuntu.mk ├── station-m2-ubuntu.mk └── station-p2-ubuntu.mk 注意:由于 SDK 版本的不同,这些文件略有差异,请以 SDK 为准!
以roc-rk3568-pc-mipi-2cam-buildroot.mk为例,板级配置文件的命名组合如下: 设备名:roc-rk3568-pc 配件:mipi-2cam 文件系统:buildroot
各个配件命名的含义如下: xxxx-buildroot.mk # 使用 HDMI + 单目摄像头 xxxx-2cam-buildroot.mk # 使用 HDMI + 双目摄像头 xxxx-mipi-buildroot.mk # 使用 mipi + 单目摄像头 xxxx-mipi-2cam-buildroot.mk # 使用 mipi + 双目摄像头
确认好在板级配置文件后,在 SDK 根目录下使用build.sh脚本指定: ./build.sh roc-rk3568-pc-mipi-2cam-buildroot.mk 指定文件后会更新到/device/rockchip/.BoardConfig.mk文件,检查该文件可以验证是否配置成功。
相关配置介绍: # Target arch export RK_ARCH=arm64 # 64位 ARM 架构 # Uboot defconfig export RK_UBOOT_DEFCONFIG=firefly_rk3568 # u-boot 配置文件 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly_linux_defconfig # kernel 配置文件 # Kernel dts export RK_KERNEL_DTS=rk3568-firefly-roc-pc # dts 文件 # parameter for GPT table export RK_PARAMETER=parameter-ubuntu-fit.txt # 分区表 # rootfs image path export RK_ROOTFS_IMG=ubuntu_rootfs/rk356x_ubuntu_rootfs.img # 根文件系统路径
1.4. 固件分区说明 1.4.1. parameter 分区表 parameter.txt文件中包含了固件的分区信息,以parameter-ubuntu-fit.txt为例: 路径:/device/rockchip/rk356x/parameter-ubuntu-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),0x00020000@0x00008000(boot:bootable),0x00020000@0x00028000(recovery),0x00010000@0x00048000(backup),0x00c00000@0x00058000(rootfs),-@0x00c58000(userdata:grow) uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9 CMDLINE 属性是我们关注的地方,以 uboot 为例,0x00002000@0x00004000(uboot) 中 0x00004000 为 uboot 分区的起始位置,0x00002000 为分区的大小,以此类推。
1.4.2. package-file package-file 文件用于打包固件时确定需要的分区镜像和镜像路径,同时它需要与 parameter.txt 文件保持一致。 分区镜像,是分区的镜像数据,用于存储设备对应分区的烧写。例如,编译 SDK 会构建出 u-boot.img、boot.img、和 recovery.img 等分区镜像文件,boot.img 会被写到 eMMC 或 SD 卡的 “boot” 分区, 注意 boot.img 实际上是 kernel 镜像文件。 路径:/tools/linux/Linux_Pack_Firmware/rockdev/rk356x-ubuntu-package-file # NAME Relative path # #HWDEF HWDEF package-file package-file bootloader Image/MiniLoaderAll.bin parameter Image/parameter.txt uboot Image/uboot.img misc Image/misc.img boot Image/boot.img recovery Image/recovery.img rootfs Image/rootfs.img userdata RESERVED backup RESERVED
1.5. 固件打包格式 SDK 可打包两种格式固件: RK 格式固件:./build.sh updateimg(默认打包此格式) RAW 格式固件:./build.sh rawimg RAW 格式固件,是一种能以逐位复制的方式烧写到存储设备的固件,是存储设备的原始镜像。RAW 格式固件一般烧写到 SD 卡中。烧写 RAW 格式固件的工具可以选用: balenaEtcher (Linux/Windows/Mac) dd (Linux) RK 格式固件,是以 Rockchip 专有格式打包的固件,使用 Rockchip 提供的工具可以烧写到 eMMC 或者 SD 卡中。 烧写 RK 格式固件的工具可以选用: 烧写 eMMC: AndroidTool(RKDevTool) (Windows) Linux_Upgrade_Tool(upgrade_tool) (Linux) 烧写 SD 卡: SD_Firmware_Tool (Windows) 若您想要把固件烧写到 SD 卡,要注意 SD 卡的选购,这是因为作为启动盘,一张优质可靠、高速读写的 SD 卡,对于系统的稳定性来说是非常关键。
原作者:Firefly Wiki
|