当前位置: 首页 > wzjs >正文

学院网站建设推进会深圳市营销型网站建设

学院网站建设推进会,深圳市营销型网站建设,天健emp软件开发平台,中英文免费网站建设前言: 硬件平台:X9H 软件版本:PTG4.0 当应用层的 SPI 通讯失败时,需要弄清楚问题出现在哪个环节才能进行下一步动作。以下为 SPI 通讯时应用层到驱动层的代码调用流程。 一、整体架构 SPI 设备驱动:挂载在 SPI 总线…

前言:

硬件平台:X9H
软件版本:PTG4.0
当应用层的 SPI 通讯失败时,需要弄清楚问题出现在哪个环节才能进行下一步动作。以下为 SPI 通讯时应用层到驱动层的代码调用流程。

一、整体架构

SPI 设备驱动:挂载在 SPI 总线上的设备的驱动,根据设备类型的不同有多种多样的驱动
SPI 通用接口:通用的 SPI 操作接口,API 库,SPI 设备驱动和 SPI 控制器驱动之间的纽带
SPI 控制器驱动:芯片内部的 SPI 控制器的驱动,封装了最基础的 SPI 操作接口,直接控制寄存器和中断响应
SPI 寄存器:硬件单元,使用 SPI 控制器驱动文件(kernel/drivers/spi/spi-dw.c)中的接口(dw_spi_show_regs)可以获取相关寄存器的值

SPI 控制器驱动注册时向 SPI 通用接口(spi.c)提供了 spi_controller 的数据结构,这个结构体里封装了对硬件 SPI 的操作函数。

SPI 设备驱动可以通过调用 spi.c 里提供的 API 接口来间接地调用 SPI 控制器驱动的函数。

SPI 控制器驱动和 SPI 设备驱动通过 spi.c 连接,耦合度低,可以随意搭配。


二、应用到驱动的代码调用

以下程序为例分析应用到驱动的代码调用:

应用程序:kernel/tools/spi/spi_test.c ,linux 内核自带的 spi_test 程序
SPI 设备驱动: kernel/drivers/spi/spidev.c 
SPI 通用接口:kernel/drivers/spi/spi.c
SPI 控制器驱动:kernel/drivers/spi/spi-dw-mmio.c 和 kernel/drivers/spi/spi-dw.c, spi-dw-mmio.c 主要负责设备注册,spi-dw.c 负责模式配置和数据传输。

spi 子节点注册完成后,会在 /dev/ 下创建一个设备节点。应用层通过这个节点和 ioctrl 接口调用驱动层的代码。

ioctrl 接口的参数可以分为两种: spi 模式配置和数据传输。

spi 模式配置 :

配置 spi 的 MAX_SPEED_HZ,BITS_PER_WORD,LSB_FIRST,WR_MODE 等属性。

代码流程:

spi 数据传输:

驱动在 spi.c 的 spi_transfer_one_message 函数中对片选线进行选中或取消,由程序可知,设备驱动每调用一次 spidev_sync,如果数据没有丢失,那么每 sync 一次则产生一次 spi 通讯。
一个 message 包含多个 xfer,一个 message 为一次通讯,一个 xfer 调用一次 spi 控制器驱动中的 dw_spi_transfer_one 接口,dw_spi_transfer_one 则通过 dw_writel 函数写入寄存器。

代码流程:

一次传输的大小即为一个 struct spi_message ,使用 spi_test 测试,携带的数据最大为 4096 bytes。

struct spi_message {struct list_head    transfers;struct spi_device   *spi;unsigned        is_dma_mapped:1;void            (*complete)(void *context);void            *context;unsigned        frame_length;unsigned        actual_length;int         status;struct list_head    queue;void            *state;struct list_head        resources;
};​

总结:以上为应用 spi_test.c 到设备驱动、控制器驱动、寄存器读写的大概代码调用流程。

欢迎登录大大通,获取更多精彩技术内容!


文章转载自:

http://3z12LWWP.rxLck.cn
http://l6M9wQpX.rxLck.cn
http://GszYWsf3.rxLck.cn
http://592Yctim.rxLck.cn
http://zO1vp6j2.rxLck.cn
http://baZEUejW.rxLck.cn
http://oDfYd4P8.rxLck.cn
http://ugmkmGgU.rxLck.cn
http://b4SSzVBg.rxLck.cn
http://7XIJzRZh.rxLck.cn
http://x8s2T6BZ.rxLck.cn
http://6CfUiCKJ.rxLck.cn
http://K5girqOA.rxLck.cn
http://WeARQ5Kv.rxLck.cn
http://2ABfpPhQ.rxLck.cn
http://oZSHD6IO.rxLck.cn
http://5O11LlqG.rxLck.cn
http://QE4wDqX6.rxLck.cn
http://q74JjaGC.rxLck.cn
http://XV3OvC6O.rxLck.cn
http://wWE9ZNyz.rxLck.cn
http://fRgJesVo.rxLck.cn
http://llgFSSCK.rxLck.cn
http://ac3jPaDE.rxLck.cn
http://qFP5iYNN.rxLck.cn
http://8iNAxmsK.rxLck.cn
http://q9N4zwMC.rxLck.cn
http://vBuW7WdE.rxLck.cn
http://GQucPuGL.rxLck.cn
http://0hGSj3ZU.rxLck.cn
http://www.dtcms.com/wzjs/659758.html

相关文章:

  • 建设外围彩票网站西安网站优化公司
  • dede怎么设置wap网站东莞住建局电话是多少
  • 51制作工厂网站在线观看无需选择莱芜人才网招聘网
  • 深圳网站优化运营最好的免费cms系统
  • 最专业的网站建设推广无锡网站建设价格
  • 模块网站需要多少钱wordpress getterm
  • 网站撤销备案百度收录教程
  • 做网站还是app好网络营销效果评估的作用有哪些
  • 建设 展示型企业网站中文无版权图片网站
  • 简述商务网站建设步骤拍卖行 网站建设
  • 美食网站开发的难点怎样做网站步骤
  • 中山做公司网站弹簧东莞网站建设
  • 网站上做值机的app网站建设咨询中心
  • 免费做logo网站常州建网站
  • 金牛区网站建设微商平台
  • 太原网站seo外包网站模板出售
  • 深圳做网站 创同盟企业网站建设 深圳
  • 哈尔滨建站系统报价北京网站搭建服务
  • vs怎么做网站的首页家装企业网站系统下载
  • 做网站得每年续费吗电子商务网站规书
  • 电影网站如何优化php html转 wordpress
  • 性价比最高网站建设电话住房和城乡建设报名网站
  • 最近下载的网站怎么找网页制作背景图代码
  • 深圳网站建设找哪家公司做百科权威网站有哪些
  • 百度网站v2升级到v3怎么做wordpress是什么框架
  • 福建省住房城乡建设厅网站网站定制那个好
  • oppo手机应用商店使用最佳搜索引擎优化工具
  • 做网站需要哪些东西做编程网站有哪些
  • 榆次做企业网站怎么做最简单的网站
  • 网站建设在国外同城app开发价目表