1 下载Kernel
可以 github 克隆 rockchip 内核存储库,它是从基于 kernel 4.4:
2 支持的SoCs和Devices
Rockchip kernel 4.4 支持:
RK3036, RK3066, RK312X, RK3188, RK322X,RK3288, RK3328, RK3368, RK3399, PX30
3 内核配置与构建
在 Linux OS 平台上使用 rockchip_linux_defconfig。
对于ARM v7:
对于ARM V8:
执行以上命令构建成功后,会输出 Image/zImage 与 dtb 文件,以提供启动 Linux 发行版。
Rockchip RKIMG格式镜像
RKIMG是Rockchip根据Android引导镜像定制的格式,通常只供内核开发人员使用。它由Rockchip U-Boot提供支持。
例如使用一下命令构建 rk3399-evb:
输出如下所示,boot.img 是带有 rockchip header 的 ramdisk,kernel.img 是带有 rockchip header的 zImage/Image,resource.img 是 dtb 和 带有 rockchip header的启动 logo。
4 安装Boot/kernel到Linux发行版
如果在发行版中使用 U-Boot 启动,需要为 U-boot 创建一个引导分区,其中包含 kernel 镜像和 dtb。
增加 extlinux/extlinux.conf 文件到发行版 boot 目录。
对于armv7:
需要更改debug UART的基址,即主板的 root 分区。在所有这些文件完全准备好之后,将文件写入引导分区。
对于armv8(rk3399、rk3328),文件夹树如下:
对于armv7(rk3288),rootfs是可选的,而kernel 通常使用压缩的 zImage:
4.1 生成ext2fs引导分区
genext2fs:
根据 Rockchip 的分区定义,还需要 flash 这个镜像到偏移地址是 0x8000 的引导分区。
4.2 生成fatfs引导分区
4.2.1 在fatfs中生成boot.img
使用以下命令生成 fatfs 格式的 boot.img:
然后 flash 这个镜像到偏移地址是 0x8000 的引导分区。
4.2.2 通过U-Boot升级boot.img
在 flash 和引导 U-Boot 之后,从默认分区表中写入 gpt 表:
连接目标板到 PC ,接着启动通过 ums 命令:
之后应该能够看到设备连接到 PC,然后格式化数据并将数据复制到分区(例如dev/sdb6)。
4.3 从U-Boot引导
如果使用 genext2fs 来生成boot.img,需要在 U-Boot 命令行中写入 gpt 表:
然后从 eMMC 引导或者重启:
如果正常执行,会看到类似以下 U-Boot 日志:
|