阅前必读

该平台基于Freescale的主控imx6ull,本人历时两周时间,走过无数坑,原因是无法精确的找到目前使用的文件,主要是nxp命名模式让我有点尴尬,以至于对于错误的spi文件修改了半天,例如spi-fsl-spi.c该文件就没有使用。以下是系统使用的文件,给后者一点建议免得重蹈覆辙。好了开始说重点部分,重点来了
首先驱动代码分为device和drivers,device在dts里面实现,drivers在spi-imx.c实现。之前通过compatible属性值匹配

  • drivers使用到的源码文件有spi.c、spi-imx.c、spi-bitbang.c、spidev.c,其他的spi-fsl-*统统用不上,就不用花时间在那个上面了。
    文件说明:spi-imx.c通过.compatible = "fsl,imx6ul-ecspi"得到适合当前cpu型号

    warning:虽然spi-bitbang.c是软件模拟spi功能实现函数,但是必须一起编译进内核,因为在spi-imx.c的peobe函数用到了spi-bitbang.c的master注册函数

  • make menuconfig需要打开的文件有
    -CONFIG_SPIDEV=y、CONFIG_SPI=y、CONFIG_SPI_BITBANG=y、CONFIG_SPI_IMX=y、CONFIG_SPI_MASTER=y

  • 需要修改的dts文件名为
    -arch/arm/boot/dts/myb/y6ull-14x14.dts
    增加以下内容即可编译出spidev0.0设备

 &ecspi1 {fsl,spi-num-chipselects = <1>;status = "okay";spidev:spidev@0 {compatible = "fsl,spidev";mode = <0>;status = "okay";};};
  • 到此为止,你成功的输出了spidev0.0,终于看到了希望,但是抱歉,这个设备无法正常使用,原因有如下两点(dts缺配置)
  • 一、使用硬件spi模式配置gpio

    1、编辑dts文件增加如下内容即可正常使用

     pinctrl_ecspi1_cs_1: ecspi1_cs_grp-1 {fsl,pins = <MX6UL_PAD_CSI_DATA05__GPIO4_IO26  0x10b0>;};pinctrl_ecspi1_1: ecspi1grp-1 {fsl,pins = <MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI 0x10b0MX6UL_PAD_CSI_DATA07__ECSPI1_MISO 0x10b0MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK 0x10b0>;};&ecspi1 {fsl,spi-num-chipselects = <1>;cs-gpios = <&gpio4 26 0>;pinctrl-names = "default";pinctrl-0 = <&pinctrl_ecspi1_1 &pinctrl_ecspi1_cs_1>;status = "okay";spidev1: spidev1@0 {#address-cells = <1>;#size-cells = <1>;compatible = "fsl,spidev1";spi-max-frequency = <1000000>;reg = <0>;};};
  • 二、使用Bitbang软件模拟spi模式配置gpio

    2、编辑dts增加一下内容即可

     gpio-spi1 {compatible = "spi-gpio";pinctrl-names = "default";gpio-sck = <&gpio4 25 GPIO_ACTIVE_LOW>;gpio-miso = <&gpio4 28 GPIO_ACTIVE_LOW>;gpio-mosi = <&gpio4 27 GPIO_ACTIVE_LOW>;cs-gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;num-chipselects = <1>;spidev@0 {#address-cells = <1>;#size-cells = <0>;reg = <0x02008000 0x4000>;compatible = "fsl,spidev1";mode = <0>;status = "okay";spi-max-frequency = <1000000>;};};

写在最后:
好了,现在你可以正常的使用spi了,是不是很爽。最后在分享一下我所遇到的问题,
1、开始对于spi-imx.c里面调用bitbang函数让我迟迟不解,两个里面都有probe函数,实际该怎么用呢,最后发现这是spi的两种不同模式,一个硬件另一个是软件,只需要在dts里面区分配置即可
2、对于干扰文件例如spi-fsl-spi.c第一眼我就认中了这个驱动程序,可结果让我大失所望,我说一下我是如何找到正确的驱动文件的,首先还是看内核启动日志dmesg > log命令,它里面会有提示&pdev->dev打印信息;此过程需要仔细仔细在仔细的看。
3、对于dts文件我也是纠结了好久,发现之前修改的文件也是错的。我是通过cat /proc/model 来识别出来,可能很多dts都是同一个名称,而我是直接修改成不同的名称后在对比,最后终于被我给揪出来了

好了,花了两个小时终于啰嗦完了,希望对于有帮助的小伙伴点个关注,以后我还是不定时的更新项目遇到的问题,如果该文章有错误的内容,也欢迎大家指正,感谢的你阅读!!!

spidev0.0的正确打开方式相关推荐

  1. 华为云K8S创新,Cloud 2.0的正确打开方式

    说起K8S(Kubernetes),恐怕和容器的崛起脱不了干系,这个基于容器技术的分布式架构最早源于Google开源的容器集群管理系统Borg.它可以在结合Docker技术的基础上,为容器化的应用提供 ...

  2. opengl 贴图坐标控制_材质贴图正确打开方式

    哈喽,各位观众朋友们好鸭~欢迎来到讲道理画图的地方,我是黄玮宁. 最近呀经常有小伙伴来问我那些不同通道的材质贴图该怎么用,而且频率不是一般的高,所以我觉得有必要来说说这些通道贴图的用法了. 视频版(B ...

  3. python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!

    四舍五入就用round( )?Python四舍五入的正确打开方式! 2018-09-22 21:40 阅读数 4 <>round( )函数简介 菜鸟教程中介绍到,round() 函数作用就 ...

  4. 通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

    到了庆祝的时候了!我们刚刚送走了圣诞老人.现在正等待新年的钟声敲响.所以我想到建立一个很酷的东西(至少我的七岁小公主会觉得)同时学一点机器学习.所以我们要做一个什么? 我借用的我女儿所有迪士尼公主人偶 ...

  5. pytorch单机多卡的正确打开方式 以及可能会遇到的问题和相应的解决方法

    pytorch 单机多卡的正确打开方式 pytorch 使用单机多卡,大体上有两种方式 简单方便的 torch.nn.DataParallel(很 low,但是真的很简单很友好) 使用 torch.d ...

  6. [分布式训练] 单机多卡的正确打开方式:Horovod

    [分布式训练] 单机多卡的正确打开方式:Horovod 转自:https://fyubang.com/2019/07/26/distributed-training4/ 讲完了单机多卡的分布式训练的理 ...

  7. [分布式训练] 单机多卡的正确打开方式:PyTorch

    [分布式训练] 单机多卡的正确打开方式:PyTorch 转自:https://fyubang.com/2019/07/23/distributed-training3/ PyTorch的数据并行相对于 ...

  8. [分布式训练] 单机多卡的正确打开方式:理论基础

    [分布式训练] 单机多卡的正确打开方式:理论基础 转自:https://fyubang.com/2019/07/08/distributed-training/ 瓦砾由于最近bert-large用的比 ...

  9. 奇门对接需求设计_从2020《奇门遁甲》看网络电影精品化的“正确打开方式”...

    作者 / 1982 "你知道什么是奇门遁甲吗?" 随着2020版网络电影<奇门遁甲>终极预告的神秘发问,观众跟随男主视角一下被带入了那个波云诡谲的东方奇幻世界:雾隐门四 ...

最新文章

  1. 【原创】Cookie应用(二)
  2. 线结构光平面标定计算算子
  3. (转)js实现继承的5种方式
  4. 关于go语言中的JWT(JSON WEB TONKE)ECHO
  5. [原]FreeSWITCH uuid_transfer both转移失败(三方通话),如何解决?
  6. api 接口开发理论 在php中调用接口以及编写接口
  7. 矩阵线性相关则矩阵行列式_搜索线性时间中的排序矩阵
  8. Turbo C 2.0、Borland C++库函数及用例
  9. upupoo设置HTML壁纸,win10 upupoo黑屏怎么解决-解决upupoo设置壁纸黑屏的方法 - 河东软件园...
  10. [转载] java自定义异常类以及全局log打印
  11. Java Web——基于Servlet、JSP(无框架版)电影网站项目总结(一)
  12. 一些常用的正则表达式(个人收集)
  13. Excel一点击编辑就程序卡死
  14. VS无法打开项目文件“Web.csproj” -此安装不支持该项目类型问题解决方案
  15. juniper:SRX-产品简介
  16. Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
  17. 计算机硬件静电场,静电场场强测量仪设计(毕业论文).doc
  18. 【调剂】黑龙江大学电子工程学院-王国涛副教授课题组招收2021级硕士研究生(调剂生)...
  19. 第四代反应堆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. Redis入门篇(1)-类型技能

热门文章

  1. 一篇文章从0搞定计算机网络,面试小case
  2. 「不得不看的猴子摘桃问题」
  3. 做ppt课件直播(课堂直播)使用云课堂直播软件的教程
  4. android手机最低内存,安卓想用很久不卡顿?12GB内存是最低标准,这6款硬核配置还便宜...
  5. 【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉
  6. 服务器无限刷石机推荐,【红石技巧】-世界上最快的刷石机
  7. fixedsys字体 win7_帮您win7系统记事本像Word文档一样更换字体的解决步骤
  8. 边云协同的优点_与云端握手 是时候谈谈边云协同这个边缘计算新风向了
  9. 新C++(9):谈谈,翻转那些事儿
  10. python 找出两个dataframe中不同的元素