[Linux][驱动][设备树] IMX6ULL配置设备树和SPIDEV驱动SPI配置教程

-1. 补充

这是后来补充的,适配之后发现IMX6ULL硬件上不支持 3Wire 9Bits方式,但是我适配这个程序的目的就是用9bits做驱动的。所以只能用软件方式了。参考下面这篇:

[Linux][驱动][设备树] IMX6ULL修改设备树+模拟3Wire 9Bits I型实现ST7701S RGB屏幕初始化

0. 硬件介绍

开发板:韦东山100ask IMX6ULL MINI

RGB屏幕:某宝ST7701S + GT911 480*480 RGB666屏幕

1. 适配spidev

1.0 配置.config

两种方式 可以使用make menuconfig,也可以直接改配置文件,这里我选择后者

image-20240807110249187

修改这个即可,修改内容为

CONFIG_SPI=y
CONFIG_SPI_GPIO=y
CONFIG_SPI_IMX=y
CONFIG_SPI_SPIDEV=y

1.1 修改设备树

进入官方提供的内核文件夹,找到设备树文件

image-20240807102303287

我们使用的是板子上的拓展口,此拓展口对应ecspi1控制器,就是韦东山板子的22Pin那个拓展口

image-20240807102614211

可以看到ecspi1的pinctrl子系统厂商已经给我们配置好了,我们只需要写client就可以了

image-20240807102802802

我们找到这部分代码

image-20240807102855935

添加我们自己的设备树

image-20240807102921314

909     spi_dev_vernon_st7701s:spi_vernon@0 {
910         compatible = "vernon, st7701s"; #要和driver匹配的compatible,非常重要
911         reg = <0>; #选择时cs-gpios的第一个还是第二个
912         spi-max-frequency = <5000000>; # 频率
913     };

1.2 修改spidev.c

取到内核的驱动目录下

image-20240807103303885

然后编辑spidev.c

image-20240807103353314

在原来的基础上加上自己刚才在设备树新建的节点,名字要对应上,就是之前说的很重要的那行compatible

696 static const struct of_device_id spidev_dt_ids[] = {
697         { .compatible = "rohm,dh2228fv" },
698         { .compatible = "lineartechnology,ltc2488" },
699         { .compatible = "vernon, st7701s" }, //这行是新加的
700         {},
701 };

1.3 编译内核

因为修改了内核文件,所以我们需要重新编译内核

首先回到内核目录,之后执行make zImage -j4

image-20240807103700907

然后我们使用adb push到开发板上去

image-20240807103815683

1.4 编译设备树

因为我们修改了设备树,因此需要重新编译设备树

在内核目录执行make dtbs

image-20240807103955068

之后adb push到开发板上去

image-20240807104151220

在开发板上,把这俩文件都放在开发板的boot目录下,之后重启(reboot)

image-20240807104258355

2. 测试spidev

spidev内核提供了其测试文件

我们先查看我们的设备号,如果有设备号,说明上面的适配成功了

执行命令ls /dev/ | grep "spi*"

image-20240807104724420

可以看到设备号,每个人都有可能不一样

之后首先找到测试文件

image-20240807104456087

修改测试程序中的设备号

image-20240807104849993

之后make

image-20240807104513386

将开发板的MISO和MOSI短接,就是图中黄色的那个线

5a752d31ac770342dcea718d313fc0f

然后我们把应用程序adb push 推到板子上

image-20240807105119756

如果你执行之后是这样的,那说明成功了, 没成功下面的数字全是00

image-20240807105148756

参考资料

嵌入式linux之iMX6ULL驱动开发 | 通用spi驱动之spidev使用总结

Linux系统自带SPI接口驱动自测

Linux驱动-spidev驱动使用方法

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值