4. 内核编译与烧录:获取源码、配置、编译、生成boot.img、烧录
说实话,内核编译这块,是很多刚入行朋友的第一道坎。
我记得自己第一次编译RV1126内核时,光配置就折腾了大半天。不是缺工具链,就是少依赖库。后来摸清了套路,发现其实就那么几步。今天我把这些经验掰开揉碎了讲给你听。
4.1 获取内核源码
瑞芯微官方提供了完整的内核源码。我习惯用Git来管理,方便后续版本切换。
git clone https://github.com/rockchip-linux/kernel.git
cd kernel
git checkout rv1126-linux
嗯,这里要注意:分支一定要选对。RV1126有专门的分支,别下错了。
4.2 配置内核(menuconfig)
内核配置说白了就是告诉编译器:哪些功能要,哪些不要。
RV1126官方提供了默认配置,在 arch/arm64/configs/ 目录下。我一般这样操作:
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make rv1126_defconfig
make menuconfig
menuconfig界面是图形化的,用方向键导航,空格键选择。我个人建议新手先别乱改,用默认配置编译一次,跑通了再说。
为什么会这样?因为默认配置是官方验证过的,硬件外设基本都能工作。你改了某个驱动选项,可能系统就起不来了。到时候排查问题,你都不知道是配置问题还是硬件问题。
4.3 编译内核
配置搞定后,就是编译了。命令很简单:
make -j4
-j4 表示用4个线程并行编译。我建议根据你电脑的CPU核心数来设,比如8核就 -j8。
编译时间取决于你的机器性能。我自己的笔记本大概要5-8分钟。如果改了驱动模块,可能更快一些。
编译完成后,你会看到 arch/arm64/boot/Image 这个文件。这就是内核本体。
4.4 生成boot.img
光有内核Image还不够。RV1126启动时需要boot.img,它包含了内核、设备树、ramdisk等。
瑞芯微提供了打包工具 mkbootimg。我一般这样用:
mkbootimg \
--kernel arch/arm64/boot/Image \
--dtb arch/arm64/boot/dts/rockchip/rv1126-evb.dtb \
--ramdisk ramdisk.img \
--base 0x00200000 \
--pagesize 2048 \
-o boot.img
参数说明:
| 参数 | 说明 |
|---|---|
| --kernel | 编译好的内核镜像 |
| --dtb | 设备树文件,对应你的板子型号 |
| --ramdisk | 根文件系统镜像 |
| --base | 内存基地址,RV1126固定为0x00200000 |
| --pagesize | 页大小,RV1126用2048 |
4.5 烧录到开发板
烧录这一步,说白了就是把boot.img写到开发板的存储里。RV1126支持多种烧录方式,我常用的是USB烧录。
首先,让开发板进入烧录模式:
- 按住板子上的 RECOVERY 键
- 按住 RESET 键
- 松开 RESET 键
- 等待2秒后松开 RECOVERY 键
然后,用瑞芯微的烧录工具 rkdeveloptool:
sudo rkdeveloptool db rv1126_loader.bin
sudo rkdeveloptool wl 0x00004000 boot.img
sudo rkdeveloptool rd
这三条命令的意思:
db:下载引导程序到内存wl:写入boot.img到指定分区地址rd:重启开发板
烧录完成后,开发板会自动重启。如果一切正常,你会看到串口输出内核启动日志。
4.6 整体流程回顾
我把整个流程画了张图,方便你理解:
这张图把整个流程串起来了。你想想看,从获取源码到最终跑起来,其实就这六步。每一步都有对应的命令和工具,按顺序来就行。
嗯,内核编译这块内容就这些。说白了就是:拿源码、配配置、点编译、打包、烧录。每一步都有坑,但踩过一次就记住了。
可可精品资料库