NanoPi M4 Linux开启SPI

本文介绍如何为NanoPi M4/V2启用SPI接口,包括修改内核配置禁用UART4并启用SPI1的方法,以及编译和更新内核的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NanoPi M4 Linux开启SPI

我使用的是NanoPi M4V2版本的硬件,从硬件和内核配置上看,对NanoPi M4同样适用。

NanoPi M4/M4V2硬件上支持SPI接口,其通过40PIN GPIO接口引出的是SPI1接口,从PIN脚定义上看,SPI1和UART4复用了收发PIN,而官方提供的Linux系统设备树使能的是UART4(对应设备/dev/ttyS4)而不是SPI1,要使用SPI接口,需要修改设备树配置,禁用UART4,启用SPI1。

在这里插入图片描述

搭建编译环境

参考官方文档:http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4V2/zh#.E6.90.AD.E5.BB.BA.E7.BC.96.E8.AF.91.E7.8E.AF.E5.A2.83

获取内核代码

参考官方文档:http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4V2/zh#.E7.BC.96.E8.AF.91_FriendlyCore.2FFriendlyDesktop.2FLubuntu.2FEFlasher.E7.9A.84.E5.86.85.E6.A0.B8.E6.BA.90.E4.BB.A3.E7.A0.81

修改内核配置

我的系统环境:

  • 硬件:NanoPi M4V2,32G SD
  • 系统:rk3399-sd-friendlydesktop-bionic-4.4-arm64-20211029.img
  • 内核:分支:4.4.y(实际版本:4.4.179),commit:595acbae9d1e03e39d0ebbb22226b061f5682be7

UART4和SPI1的使能配置都在内核代码的arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi文件中,修改两处:

$ git diff
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi
index 72cf2d15..234058cd 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi
@@ -485,7 +485,7 @@
 };
 
 &spi1 {
-       status = "disabled";
+       status = "okay";
        pinctrl-names = "default", "sleep";
        pinctrl-1 = <&spi1_gpio>;
 
@@ -508,7 +508,7 @@
 };
 
 &uart4 {
-       status = "okay";
+       status = "disabled";
 };
 
 &vopb {

编译内核

参考官方文档:http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4V2/zh#.E7.BC.96.E8.AF.91_FriendlyCore.2FFriendlyDesktop.2FLubuntu.2FEFlasher.E7.9A.84.E5.86.85.E6.A0.B8.E6.BA.90.E4.BB.A3.E7.A0.81

更新SD卡

参考官方文档:https://github.com/friendlyarm/sd-fuse_rk3399
下载cd sd-fuse_rk3399,使用master分支,commit:3005b25b030b6c1ecd766183732f3874295bc2d9

从网盘下载制作SD卡镜像的各分区镜像文件friendlydesktop-arm64-images.tgz,
解压到sd-fuse_rk3399目录下;
将新编译的内核镜像(kernel.img和resource.img)复制到friendlydesktop-arm64目录下覆盖原文件;
执行命令制作sd卡镜像

sudo ./mk-sd-image.sh friendlydesktop-arm64

生成的镜像文件在out目录下,文件名rk3399-sd-friendlydesktop-bionic-4.4-arm64-yyyymmdd.img

如果想临时更新一下之前烧写过的SD卡进行测试而不重新烧写整个SD卡,可以删除friendlydesktop-arm64目录下除了编译kernel生成的两个镜像(kernel.img和resource.img)外的其他镜像文件,然后执行以下命令:

sudo ./fusing.sh /dev/sdX friendlydesktop-arm64

脚本运行时会跳过缺失的镜像文件,仅更新friendlydesktop-arm64目录下存在镜像的分区到SD卡,这样可以保留SD卡文件系统里的内容。

sd-fuse_rk3399里提供了一些脚本,用来编译各个分区的镜像,里面也包含了编译内核的脚本,如果除了需要更新内核镜像文件,还需要更新内核模块到文件系统或者更新内核相关的头文件,用这个脚本会更方便。

参考

  • https://blog.csdn.net/u014096133/article/details/88642669
  • http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4V2/zh
  • https://github.com/friendlyarm/sd-fuse_rk3399
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞花丝雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值