为nanopi r2s plus适配armbian

前言

去年为了折腾一下旁路由,精挑细选,考虑到性能以及体积,最后选择了nanopi r2s plus。

可是买回来才发现arm板子的兼容性实在是太差了,为了安装上dae,调整内核参数后自己尝试编译官方固件的内核,结果根本无法启动,当然官方是没有管这些事情的,后面也就不了了之。

后来发现了armbian项目,这个项目对各种板子都做了适配,u-boot以及dts等都做了“微调”,对内核兼容性非常高,至少我编译的各种内核都可以正常启动。

也幸好他们为r2s做了适配,并且plus版本和原版本没有太大区别,只是多了一个emmc,一个wifi,一个usb2,以及wan和lan的led定义有变,就算直接刷入r2s的包也可以直接使用。

确认dts文件

基本原理就是根据官方的dts文件修改armbian/build项目中的dts文件即可。

以下操作均在armbian/build项目中进行。

找到r2s的配置文件config/boards/nanopi-r2s.csc,确认dts文件为rk3328-nanopi-r2-rev00.dts。(当然这里只是确认,实际上dts文件是由内核配置选项确定的)

并且比如目前情况下,当选择current时,编译的是6.12的内核,那么就找到patch/kernel/archive/rockchip64-6.12/dt/文件夹。打开rk3328-nanopi-r2-rev00.dts文件进行修改。

添加emmc支持

添加emmc支持很简单,找到以下内容

&emmc {
	status = "disabled";
};

修改为以下内容

&emmc {
	status = "okey";
};

即可

添加sdio wifi支持

找到以下内容

&sdmmc_ext {
	status = "disabled";
};

&sdio_pwrseq {
	status = "disabled";
};

这里需要定义sdmmc_ext节点,以及把sdio供电给打开。修改为以下内容

&sdmmc_ext {
        vmmc-supply = <&vcc_io>;
        vqmmc-supply = <&vcc_18>;
        max-frequency = <150000000>;
        sd-uhs-sdr104;
        status = "okay";

        /delete-node/ bcrmf@1;
        rtl8822cs@1 {
                reg = <1>;
                compatible = "realtek,rtl8822cs";
        };
};

&sdmmc0ext_clk {
        rockchip,pins = <3 RK_PA2 3 &pcfg_pull_none_8ma>;
};

&sdmmc0ext_cmd {
        rockchip,pins = <3 RK_PA0 3 &pcfg_pull_up_8ma>;
};

&sdmmc0ext_bus4 {
        rockchip,pins =
                <3 RK_PA4 3 &pcfg_pull_up_8ma>,
                <3 RK_PA5 3 &pcfg_pull_up_8ma>,
                <3 RK_PA6 3 &pcfg_pull_up_8ma>,
                <3 RK_PA7 3 &pcfg_pull_up_8ma>;
};

&sdio_pwrseq {
        status = "okay";
};

即可

尾声

由于r2s和r2s plus非常相似,armbian为r2s的patch也可以用在这上面,非常舒适,不用再作其他修改就行。由于我不用多余的usb2接口,我也就懒得再继续修改了。

保存文件重新编译刷机一气呵成。

编译镜像时,选择r2s即可。同时在编译内核时,wifi网卡驱动不用特别留意,默认是启用编译的,无需担心。

最后把我编译的镜像放在网盘(由于我需要使用dae,因此启用了btf相关的选项),供有需要的人使用。

咕咕咕~