序:

这是笔者第一次做SPI接口的驱动,由于对SPI接口的不熟悉,再加上遇到主从设备的SPI接口有一定的差异,导致被坑了很久。当然,这次驱动开发过程中不仅在技术上有所收获,更重要的收获是,懂得了在驱动开发中遇到问题后怎样有效的处理。下面将从开发流程、配置SPI控制器相关须知、用户空间SPI驱动、Linux设备模型与platform总线(虚拟“平台”总线)、Linux SPI驱动框架5方面做总结。如果不使用用户空间驱动的方式,只需了解前两方面即可。由于时间仓促加之本人水平有限,文中可能存在不妥之处,还请广大读者朋友与之交流指正。

时间地点:2017.7.7于成都

一、开发流程

1.确认从设备完好。如果有测试程序能测试从设备相应功能,是最好的确认方法,不仅能测试设备是否完好,还能得到设备工作数据,比如获取加密芯片的版本号,得到的数据对以后的开发有很重要的对比意义。

2.确认主设备提供给从设备的供电是否正常。首先测量供电电压是否是从设备所接受范围(过低工作可能不正常,过高可能会烧坏从设备)

3.确认主设备SPI接口引脚是否正常。要先把复用功能的IO引脚功能选择成SPI(可以自己配置寄存器选择复用功能,但推荐通过板级代码配置)。将主从设备进行连接,如果有现成的SPI驱动,可以直接进行测试主设备SPI引脚是否有波形输出,确认输出是否正常。如果没有现成驱动,可以选择用户空间驱动写一个测试程序(其实一般内核都提供有各种驱动的测试程序,在内核目录的Documentation目录下)。可以用测试程序随意发些数据,用示波器看看各引脚有没有相应的波形。

4.选择用户空间驱动或者内核空间

SPI驱动之南瑞NRSEC3000加密芯片驱动开发总结相关推荐

  1. Linux platform 设备驱动实验-基于正点原子IMX6ULL开发板

    我们以前的设备驱动都非常的简单,都是对IO进行最简单的读写操作.像I2C. SPI.LCD 这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的 ...

  2. Linux学习笔记(22.1)——基于SPI + Regmap + IIO的ICM20608设备驱动

    Regmap API 简介 regmap API的引入 ​ Linux 下大部分设备的驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备的本质都是一样的,通过 I2C/SPI 接口读写芯片内部寄 ...

  3. platform平台驱动模型简述(linux驱动开发篇)

    此篇是驱动分离(总线.驱动和设备模型)的应用扩展,主要简述platform虚拟总线平台 一个现实的Linux设备和驱动通常挂接在一种总线上,对于本身依附于PCI.USB.I2C.SPI等的设备而言,这 ...

  4. linux设备驱动总结,《Linux设备驱动开发详解(第3版)》海量更新总结

    本博实时更新<Linux设备驱动开发详解(第3版)>的最新进展. 2015.2.26 几乎完成初稿. [F]是修正或升级:[N]是新增知识点:[D]是删除的内容 第1章 <Linux ...

  5. s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(一 硬件驱动层)

    欢迎转载,务必注明出处:http://blog.csdn.net/wang_shuai_ww/article/details/44303069 本文章是记录Android开发中驱动层.HAL层.应用层 ...

  6. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  7. WIFI驱动配置实战(Linux驱动开发篇)

    1.对象 正点原子的imx6ull-mini开发板的USB-HOST接口 芯片RTL8188EUS/CUS USB WIFI 2.目的 单片机经过wifi芯片可以连接热点. WIFI驱动不需要我们编写 ...

  8. linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程

    目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...

  9. 驱动框架入门之LED-linux驱动开发第4部分-朱有鹏-专题视频课程

    驱动框架入门之LED-linux驱动开发第4部分-5199人已学习 课程介绍         本课程是linux驱动开发的第4个课程,主要内容是驱动框架的引入.通过led驱动框架和gpiolib的这两 ...

  10. Linux MISC 驱动实验-基于正点原子IMX6ULL开发板

    misc 的意思是混合.杂项的,因此 MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动.MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 p ...

最新文章

  1. 机房收费系统【VB版】——上下机
  2. 两个有用的minicom命令
  3. u8薪资管理_用友U8习题集
  4. 降价到心痛也无人问津!这款手机成绝唱...
  5. Hadoop热添加删除节点(含Hbase)
  6. vmware10中开启Intel VT-x
  7. 不用编程实现PLC之间通讯-西门子与三菱以太网实时通讯
  8. matlab如何泰勒公式用求近似值_Matlab 数值计算泰勒公式
  9. 很哇塞的网页特效之字符串切换
  10. python转化excel数字日期为标准日期
  11. 【GoCN酷Go推荐】ip2location 解析 IP 地址库
  12. 引导mysql执行计划_Mysql执行计划详解
  13. Access数据库偏移注入
  14. Arcmap做地图要领总结
  15. PARSEC benchmark 编译
  16. 数字人民币APP上架,跨境交易将进入新境界
  17. 如何证明凸函数的局部极小值为全局极小值
  18. java学习day38(Linux)Linux、命令
  19. CADe_SIMU软件实现传送带电气线路的仿真
  20. node.js 安装及使用

热门文章

  1. MC9S12XS128 事件处理
  2. 如何优雅的给你的APK文件打上签名
  3. Debian——roundcube报错及解决方法
  4. 汇率转换方法java,[java] 汇率换算器实现(2)
  5. 约瑟夫问题、约瑟夫环
  6. java 冒号转义_java – 使用Hibernate查询:冒号被视为参数/转义冒号
  7. wifi信号衰减与距离关系_无线传输距离计算公式
  8. 物联网技术-组网技术、应用场景
  9. 运营商5G商业模式研究
  10. 三星:大小屏QLED和OLED两手都要抓,都要硬