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 人正在系统学习中

关注博主

相关文章
|
29天前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
93 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
2天前
|
缓存 NoSQL Linux
Linux调试
本文介绍了Linux调试、性能分析和追踪的培训资料,涵盖调试、性能分析和追踪的基础知识及常用工具。
26 6
Linux调试
|
24天前
|
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开发知识可参考相关书籍。
73 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
78 2
linux笔记 diff及patch的制作与使用
|
3月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
60 10
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
3月前
|
Ubuntu Linux
内核实验(四):Qemu调试Linux内核,实现NFS挂载
本文介绍了在Qemu虚拟机中配置NFS挂载的过程,包括服务端的NFS服务器安装、配置和启动,客户端的DHCP脚本添加和开机脚本修改,以及在Qemu中挂载NFS、测试连通性和解决挂载失败的方法。
173 0
内核实验(四):Qemu调试Linux内核,实现NFS挂载
|
3月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
3月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
3月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
下一篇
无影云桌面