首页 > 系统相关 >linux(RK3308)添加CH9434(SPI串口扩展)驱动

linux(RK3308)添加CH9434(SPI串口扩展)驱动

时间:2023-05-19 16:01:46浏览次数:43  
标签:CH9434 val ch943x 串口 port spi2.0 spi linux reg

linux(RK3308)添加CH9434(SPI串口扩展)驱动

1、CH9434驱动下载

https://www.wch.cn/downloads/CH9434EVT_ZIP.html

2、驱动移植

2.1、移植准备

1、查看系统是否支持DTS设备树支持,若支持DTS可以直接在DTS文件中定义SPI节点。如下所示:

&spi2 {
    status = "okay";
    max-freq = <5000000>; //spi internal clk, don't modify
    dma-names = "tx", "rx"; //enable dma
    pinctrl-names = "default"; //pinctrl according to you board
    pinctrl-0 = <&spi2_clk &spi2_csn0 &spi2_miso &spi2_mosi>;
    ch9434: ch9434@0 {
        compatible = "wch,ch943x";
        reg = <0>;
        spi-max-frequency = <5000000>;
        interrupt-parent = <&gpio0>;
        interrupts = <RK_PB6 IRQ_TYPE_LEVEL_LOW>;
    };
};

2、配置IO中断引脚,确认CH9434芯片INT中断请求所连接的CPU的IO编号。次IO需支持中断功能。此编号可以直接在CH9434源码中指定:GPIO_NUMBER;若支持DTS设备树获取,可使用设备树指定,需要打开宏定义:USE_IRQ_FROM_DTS。

此外,注意有些平台上中断申请方式可能与驱动中默认实现方式不同,此时需修改ch9434.c文件中ch943x_spi_probe的相关代码。

注:默认情况下请不要修改uart时钟,若确实需修改以支持部分非标波特率,可在ch943x_probe中修改:

freq = 32 * 1000000 * 15 / clkdiv;

2.2、静态编译驱动

1、将驱动源码拷贝到内核目录中:/kernel_src/drivers/tty/serial

2、向/kernel_src/drivers/tty/serial/Konfig中添加:

config SERIAL_CH9434
    tristate "SERIAL_CH9434 serial support"
    depends on SPI
    select SERIAL_CORE
    help
        This selects support for ch9434 serial ports.

3、向/kernel_src/drivers/tty/serial/Makefile中添加:

obj-$(CONFIG_SERIAL_CH9434) += ch9434.o
#注:是CONFIG_SERIAL_CH9434不是CONFIG_SERIAL_CH943X,如果是CONFIG_SERIAL_CH943X,驱动源码将不会被编译。

4、运行make menuconfig,选择驱动/tty/serial下的ch9434 serial support,然后保存配置。

5、最后呈现出的结果是在kernel配置文件中存在:CONFIG_SERIAL_CH9434=y的选项

3、加载驱动

3.1、驱动加载

驱动加载成功,会打印出如下效果。

[    0.131751] ch9434: SPI driver for spi to serial chip ch9434, etc.
[    0.131751] ch9434: V1.00 On 2020.06.17
[    0.131751] rockchip-spi ff140000.spi: no high_speed pinctrl state
[    0.138983] ch943x_spi spi2.0: gpio_to_irq:52, spi->irq:66
[    0.139019] ch943x_spi spi2.0: change to SPI MODE 3!
[    0.139223] ch943x_spi spi2.0: ch943x_port_write - reg:0x81, val:0x 0
[    0.139334] ch943x_spi spi2.0: ch943x_port_write - reg:0x84, val:0x 0
[    0.139443] ch943x_spi spi2.0: ch943x_port_read - reg:0x 6, val:0xff
[    0.139843] ch943x_spi spi2.0: ch943x_port_write - reg:0x91, val:0x 0
[    0.139921] ch943x_spi spi2.0: ch943x_port_write - reg:0x94, val:0x 0
[    0.139997] ch943x_spi spi2.0: ch943x_port_read - reg:0x16, val:0xff
[    0.140379] ch943x_spi spi2.0: ch943x_port_write - reg:0xa1, val:0x 0
[    0.140458] ch943x_spi spi2.0: ch943x_port_write - reg:0xa4, val:0x 0
[    0.140539] ch943x_spi spi2.0: ch943x_port_read - reg:0x26, val:0xff
[    0.140886] ch943x_spi spi2.0: ch943x_port_write - reg:0xb1, val:0x 0
[    0.140963] ch943x_spi spi2.0: ch943x_port_write - reg:0xb4, val:0x 0
[    0.141042] ch943x_spi spi2.0: ch943x_port_read - reg:0x36, val:0xff
[    0.141431] ch943x_spi spi2.0: ch943x_port_write - reg:0xc8, val:0xcd

3.2、查看串口节点

进入/dev/目录,可以看到出现ttyWCH0、ttyWCH1、ttyWCH2和ttyWCH3设备节点,表示加载成功。

# ls /dev/
block               mmcblk1p3           stdout
char                mmcblk1p4           tty
console             mmcblk1p5           ttyFIQ0
cpu_dma_latency     mmcblk1p6           ttyS0
disk                mmcblk1p7           ttyS1
fd                  mmcblk1p8           ttyS2
full                mmcblk1p9           ttyS3
hwrng               mmcblk1rpmb         ttyS4
iio:device0         network_latency     ttyWCH0
input               network_throughput  ttyWCH1
kmsg                null                ttyWCH2
log                 ptmx                ttyWCH3
mem                 pts                 urandom
memory_bandwidth    random              usb-ffs
mmcblk1             rfkill              vendor_storage
mmcblk1boot0        shm                 zero
mmcblk1boot1        snd                 zram0
mmcblk1p1           stderr
mmcblk1p2           stdin
# 

4、日志打印

1、需要给内核传输loglevel等级,如下:

chosen {
		bootargs = "earlycon=uart8250,mmio32,0xff0e0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext2 rootwait snd_aloop.index=7 snd_aloop.use_raw_jiffies=1 loglevel=8";
	};
	
注:loglevel:内核打印等级

2、开启ch943驱动源码的打印,如下:

转载说明:

1、https://blog.csdn.net/WCH_TechGroup/article/details/128288016?ops_request_misc=&request_id=&biz_id=102&utm_term=ch9434驱动没有被加载&utm_medium=distribute.pc_search_result.none-task-blog-2

标签:CH9434,val,ch943x,串口,port,spi2.0,spi,linux,reg
From: https://www.cnblogs.com/Rxin/p/17415394.html

相关文章

  • linux开机自启动设置
    https://blog.csdn.net/WUFUSHANLI/article/details/124419411?ops_request_misc=&request_id=&biz_id=102&utm_term=linux%E8%AE%BE%E7%BD%AEredis%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~......
  • 迅为基于RK3568开发板的嵌入式学习之Linux驱动视频
      迅为基于iTOP-RK3568开发板进行讲解,本次更新内容为第九期,主要讲解设备模型,共计29讲。思路更科学,入门更简单     0.课程规划1.抛砖引玉-设备模型的框架:kobject和kset2.实践:创建kobject实验3.实践:创建kset实验4.什么是设备模型,为什么要引入设备模型?5.对设备......
  • linux 上设置mysql开机自启
    1我们设置开机启动需要将mysql.server文件复制到/etc/rc.d/init.d/目录下mysql文件我们的mysql.server文件一般都在安装的根目录下的support-files目录下cp/usr/local/mysql/mysql/support-files/mysql.server/etc/rc.d/init.d/mysql2复制成功后我们需要给赋予权......
  • linux的软硬链接
    linux的软硬链接1.软连接,快捷方式的创建,可以快捷的指向另一个文件的特殊文件创建语法ln命令-s参数,创建符号连接,软链接,快捷方式ln -s目标文件·绝对路径  快捷方式绝对路径ln-s /data/happy.txt    /tmp/happy 此时可以查看快捷方式,找到源文件的内容了快......
  • 关于ArchLinux 在 Wayland 环境下的问题
    Wayland配置起来确实相对麻烦很多,需要注意很多细节,如果不注意就会出现问题,在这里说一下可能的现象与解决方法。根据观察,这些现象在GNOME与KDE桌面环境钟均会出现。现象App打开慢现象为当首次打开一个图形化的App时,需要等待2-3秒钟才会打开,但是如果已经有一个打开的此......
  • linux 查看文件数量
    1查看当前目录下的文件数量(不包含子目录中的文件)这里是查看当前目录下的文件数量,也可以指定某一个目录1、ls-l|grep"^-"|wc-l;2、find./-maxdepth1-typef|wc-l;其中-maxdepth1相当于目录深度为1只有目录下的一层不会包含目录下的目录下的文件或文件夹......
  • “Linux 基础入门(新版)”实验报告 Linux 目录结构及文件基本操作
    Linux目录结构及文件基本操作来Linux目录结构UNIX是以目录为主的,Linux也继承了这一优良特性。Linux是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说Linux......
  • Linux 基础入门(新版)”实验报告 基本概念及操作
    实验2基本概念及操作1.Linux桌面环境介绍UNIX/Linux本身是没有图形界面的,UNIX/Linux发行版上看到的图形界面实际都只是运行在Linux系统之上的一套软件。现在这套软件为xorg(X.Org),而这套软件又是通过X窗口系统(XWindowSystem,也常被称为X11或X)实现的,X本身只是工具包及......
  • “Linux 基础入门(新版)”实验报告 用户及文件权限管理
    用户及文件权限管理1.查看用户$whoami或者$whomomlikes输出的第一列表示打开当前伪终端的用户的用户名,第二列的pts/0中pts表示伪终端,pts/0后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入whoami,看第二列是不是就变成pts/1了,第......
  • 如何部署ASP.NET Core到Linux服务器
    #如何部署ASP.NETCore到Linux服务器我们开发的最终目的,是将开发后的东西发布网络上,以便自己及其他人使用。本篇博客介绍如果在linux上部署ASP.NETCore应用,使用nginx+systemd来管理我们的应用。##准备-Ubuntu20.04-Nginx-DOTNETSDK或Runtime##安装-......