热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NanoPiM4Linux开启SPI

NanoPiM4Linux开启SPI我使用的是NanoPiM4V2版本的硬件,从硬件和内核配置上看,对NanoPiM4同样适用。NanoPiM4M4
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";
&#43; status &#61; "okay";pinctrl-names &#61; "default", "sleep";pinctrl-1 &#61; <&spi1_gpio>;&#64;&#64; -508,7 &#43;508,7 &#64;&#64;};&uart4 {
- status &#61; "okay";
&#43; status &#61; "disabled";};&vopb {

编译内核

参考官方文档&#xff1a;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卡

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

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

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

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

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

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

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

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

参考
  • 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

推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有