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天前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
4天前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
6天前
|
网络协议 算法 Linux
【Linux】深入探索:Linux网络调试、追踪与优化
【Linux】深入探索:Linux网络调试、追踪与优化
|
2天前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
14 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
|
6天前
|
NoSQL Java Linux
linux笔记
linux笔记
11 0
|
6天前
|
存储 运维 Java
Linux笔记02 —— Shell补充
Linux笔记02 —— Shell补充
35 2
|
6天前
|
安全 Linux Shell
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
20 1
|
6天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
31 3
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
6天前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
33 1
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
|
6天前
|
编解码 Linux
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
在Linux环境下,为FFmpeg添加对AAC、MP3、OGG和AMR音频格式的支持,需安装libogg、libvorbis和opencore-amr库。首先,从官方源下载各库的最新源码,如libogg-1.3.5、libvorbis-1.3.7和opencore-amr-0.1.6,然后解压并依次执行`./configure`、`make`和`make install`进行编译安装。接着,在FFmpeg源码目录中,使用`./configure`命令重新配置,并重新编译安装FFmpeg。最后,验证FFmpeg版本信息确认已启用ogg和amr支持。
24 0
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr