无需编译整个buildroot,瑞芯微RK3399内核编译快速上手

无需编译整个buildroot,瑞芯微RK3399内核编译快速上手

解决方案goocz2025-01-16 10:17:5416A+A-

RK3399 的 Linux SDK采用是buildroot 结构,也就是所有可能需要软件包,文件系统,内核核都放这个目录,有点Androdi framework那意思,但是完整编译一次要麻烦,如果你只是简单调整一下内核,来试一下我说的流程.

 下面以打开firefly 3399中spi2 驱动为例来演示内核编译流程.这是linux SDK的buildroot 结构,可以看到内核目录kernel,整个目录大部分操作由buildroot.sh来控制


在这个硬件上拉出了spi2的接口,但是在驱动上把其它当串口4,如果想用它做spi通讯需要把driver加载上。


导入对应开发板的内核配置


不同开发板有不同硬件定义,通常开发板生产商已经定义好,如果已经配置好跳过这一步,

以aio-rk3399j为例

./build.sh aio-3399j-lvds-buildroot.mk

这个如果报错,直接按如下链接用ln -s 即可

这个操作将会把 device/rockchip/.BoardConfig.mk 指向对应开发板配置,可以用ll验证一下

这里注意有两个关键的定义,这是内核配置文件 

export RK_KERNEL_DEFCONFIG=firefly_linux_defconfig

另外是一个设备树文件,用生成内核数据 

    export RK_KERNEL_DTS=rk3399-firefly-aio-lvds


在查看内核配置

在内核目录运行,如果在上一步导入,一般不需要修改的。

make menuconfig

按/进行搜索 CONFIG_SPI_ROCKCHIP,如果=y表示已经集成了,通常只要板型对一定有的



关键一步 关修改设备树文件DTS

dts是Linux 2.6引入,你可以理解为是Linux 内核中各个驱动统一配置文件 这里增删驱动的关键文件。 rockship的板子这一些文件都放在

arch/arm64/boot/dts/rockchip

rk3399-firefly-aioc-ai-lvds.dts中第一句引用公用的

#include "rk3399-firefly-aioc.dtsi"

其中spi2定义就在这文件里,这里要把uart4关掉,把spi2打开,并加上spidev驱动

&spi2 {
status = "okay";
max-freq = <48000000>;
spidev@00 {
compatible = "linux,spidev";
reg = <0x00>;
spi-max-frequency = <48000000>;
};
};

&uart4 {
    status = "disabled";
};


编译内核

或者到kernel 目录下,直接make


这里未压缩的boot.img即是所需的烧录内核文件,我这里编译出来32.1M


烧录内核

aio 3399 烧录线采用usb type-c ,烧录是插板止唯一的 usb type-c 接口上,烧录的开关是recovery 键,在电源键边上一个小按键

操作后

先断开电源适配器连接:

USB 一端连接主机,Type-C 一端连接开发板 Type-C 母口

按住设备上的 RECOVERY (恢复)键并保持/home/hxy/project

接上电源

大约两秒钟后,松开 RECOVERY 键

正常情况下,电源led是亮的,但recovery 模式下不会亮,是否进入烧录状态运行升级工具即可,

因此这里只烧录内核,所以执行如下命令烧录内核分区即可

sudo ./upgrade_tool di -boot boot.img

重启后在系统中会看到

/dev/spidev.xxxx 这个文件,整个过程完成

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5