Linux(6)CH9434 SPI调试笔记

简介: Linux(6)CH9434 SPI调试笔记

1.资料参考

CH9434EVT.ZIP - 南京沁恒微电子股份有限公司

CH9434 嵌入式Linux与安卓系统驱动移植和使用教程

linux下的spi环回测试_spi回环测试

2.驱动移植流程

2.1 移植DTS

我们的主板是可以支持DTS的, 所以直接干DTS , 配置系统SPI设备信息,如下所示:

&spi0 {
    status = "okay";
 
       pinctrl-names = "default";      
       pinctrl-0 = <&spi0m0_cs0 &spi0m0_pins>;
       pinctrl-1 = <&spi0m0_cs0 &spi0m0_pins_hs>;
       ch943x_spi0@00 {
        status = "okay";
               compatible = "ch943x_spi0";
               reg = <0x00>;
               spi-max-frequency = <3000000>;
    };
};

2.2 移植代码

kernel/drivers/tty/serial/ch9434_spi0.c
kernel/drivers/tty/serial/Makefile
+obj-m += ch9434_spi0.o
 
然后把ch9434_spi0.c 新增2行宏定义
+#define DEBUG 1
+#define VERBOSE_DEBUG 1
 
然后把ch9434_spi0.c 里的宏,该脚是中断 ,直接改成对应系统的
+#define GPIO_NUMBER 139
+//#define USE_IRQ_FROM_DTS

然后编译kernel , 生成ko ,直接推进系统

adb root
adb remount
adb push "S:\rockchip\RK3568_11\kernel\drivers\tty\serial\ch9434.ko" /vendor/
adb shell
cd vendor
insmod ch9434.ko //加载驱动
rmmod ch9434.ko //移除驱动

然后打开调试打印

点一下 打开dbg打印 按钮 回车执行 , 这个是打开dbg打印的 看的更全

su && echo 8 4 1 7 > /proc/sys/kernel/printk

3.驱动验证流程

首先ko加载进去之后,正常情况下回出现
root@ubuntu:~# ls -ll /dev/ttyWCH0 
crw-rw---- 1 root dialout 242, 0 Apr  1 17:23 /dev/ttyWCH0
crw-rw---- 1 root dialout 242, 1 Apr  1 17:23 /dev/ttyWCH1
crw-rw---- 1 root dialout 242, 2 Apr  1 17:23 /dev/ttyWCH2
crw-rw---- 1 root dialout 242, 3 Apr  1 17:23 /dev/ttyWCH3
其次,驱动的probe函数是一定要执行的,不执行就是dts的compatible或者dts没写对
我遇到过不同版本内核spi这块写法也不一样 请注意!
 
其次,需要确认中断脚,是否配置,收发数据的时候中断是否有反应。
cat /proc/interrupts //查看中断状态
cat /sys/kernel/debug/gpio //查看gpio状态
 
最基本的spi是需要通的 , 搞个spidev程序短接可以直接验证问题点
 
 
这些流程都简化了, 实际自己搞遇到了很多坑和需要学习的地方。

收发测试命令

dts配置差异

验证spi通讯,

验证中断脚是否配置正确

文章知识点与官方知识档案匹配,可进一步学习相关知识

CS入门技能树Linux入门初识Linux39881 人正在系统学习中

关注博主

相关文章
|
4月前
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
11月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
581 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
6月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
10月前
|
缓存 NoSQL Linux
Linux调试
本文介绍了Linux调试、性能分析和追踪的培训资料,涵盖调试、性能分析和追踪的基础知识及常用工具。
647 63
Linux调试
|
9月前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
4081 6
|
9月前
|
运维 监控 Linux
BPF及Linux性能调试探索初探
BPF技术从最初的网络数据包过滤发展为强大的系统性能优化工具,无需修改内核代码即可实现实时监控、动态调整和精确分析。本文深入探讨BPF在Linux性能调试中的应用,介绍bpftune和BPF-tools等工具,并通过具体案例展示其优化效果。
411 14
|
11月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
372 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
405 2
linux笔记 diff及patch的制作与使用
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
152 10
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
675 3