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

关注博主

相关文章
|
30天前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
22 2
linux笔记 diff及patch的制作与使用
|
23天前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
44 10
|
25天前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
23天前
|
Ubuntu Linux
内核实验(四):Qemu调试Linux内核,实现NFS挂载
本文介绍了在Qemu虚拟机中配置NFS挂载的过程,包括服务端的NFS服务器安装、配置和启动,客户端的DHCP脚本添加和开机脚本修改,以及在Qemu中挂载NFS、测试连通性和解决挂载失败的方法。
29 0
内核实验(四):Qemu调试Linux内核,实现NFS挂载
|
1月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
1月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
1月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
1月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
1月前
|
Linux
Linux源码阅读笔记17-资源分配及总线系统
Linux源码阅读笔记17-资源分配及总线系统
|
1月前
|
存储 Linux 数据库
Linux源码阅读笔记16-文件系统关联及字符设备操作
Linux源码阅读笔记16-文件系统关联及字符设备操作