热门标签 | 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

推荐阅读
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 一篇关于五个编程问题的 Reddit 帖子引发了广泛讨论,特别是关于这些题目是否适合所有软件工程师。 ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 当PHP中的tempnam()函数被禁用后的应对策略与解决方案
    当 PHP 中的 `tempnam()` 函数被禁用时,开发者需要采取相应的替代方案以确保应用程序的正常运行。本文探讨了多种应对策略,包括使用 `sys_get_temp_dir()` 结合自定义文件命名方法,以及利用第三方库来生成临时文件。此外,还详细介绍了如何在不同操作系统和服务器环境中配置临时文件路径,以提高代码的兼容性和安全性。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
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社区 版权所有