01班赵恒涛基于Linux内核SPI子系统工作机制(二).pdfVIP

01班赵恒涛基于Linux内核SPI子系统工作机制(二).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
01班赵恒涛基于Linux内核SPI子系统工作机制(二).pdf

英贝得教育之学员笔记 基于基于 LinuxLinux 内核内核SPISPI 子系统工作机制子系统工作机制-英贝得嵌入式-英贝得嵌入式 (凌嵌(凌嵌)学员赵恒涛学习)学员赵恒涛学习 基于基于 LinuxLinux 内核内核SPISPI 子系统工作机制子系统工作机制--英贝得嵌入式英贝得嵌入式 ((凌嵌凌嵌))学员赵恒涛学习学员赵恒涛学习 笔记笔记 (二(二)) 笔记笔记 ((二二)) 作者:英贝得教育 01 周末班学员赵恒涛 2010年7 月 前一篇文章主要讲述了 SPI 子系统的传输,没有具体分析具体代码的含义与片选的处理。要深刻体会SPI 子系统的 思想和精髓。 首先在 SPI 子系统中分成俩部分驱动。 第一部分 SPI 主控制端驱动,(Linux内核已经做好的驱动,需要自己配置和使用)从SPI 协议我们可以得知,SPI 支持主从模式,在arm cpu s3c2440 中也留有作为从设备的片选脚,但内核 2.6.30 中的驱动只是把 SPI 作为控制端 来写的。即该ARM 芯片上的 SPI 作为主机 (产生SPI 时钟信号)来控制其他SPI 接口的从机,这部分驱动功能是负 责产生符合 SPI格式的数据 (暂时先这么理解)。 第二部分 就是具有 SPI 接口的从机得驱动,(这部分需要自己来编写),这部分驱动通过前一个驱动在 SPI 总线上 发送/接收 SPI 数据,来解释自己的命令。例如编辑一个SPI 接口的 CAN控制器的驱动,我们需要在 SPI 总线上发送 CAN控制器可以解释的命令,这样CAN控制器可以明白我们要它做什么,并做出相应动作。这部分驱动的功能和你 的 SPI 接口设备关系很大,接口设备不同驱动内容也不同。 下面以实例讲解在 SPI子系统同一个控制端下分别挂载 CAN 控制器 MCP2515 和移位寄存器 74SL595 的情况。 Linux 下的驱动模式是 driver 和device 分别注册到 “某个地方”,然后根据名称是否一致进行匹配。一致的话你 这个设备就和这个驱动匹配,那驱动就可以使用这个设备的资源,这个设备的动作需要这个驱动来进行。其次对于 平台设备 (platform_device)信息会在系统上电时被初始化,对于有子系统包含的设备和其他设备有点不一样的初 始化。 1:追踪 SPI主控制端的初始化。首先SPI资源会在 devs.c这个文件夹里面定义,定义包括名称,资源。(资源指 寄存器地址还有些标志) static u64 s3c_device_spi0_dmamask = 0xffffffffUL; struct platform_device s3c_device_spi0 = { .name = s3c2410-spi, .id = 0,//-1 表示只有一个这样的设备。否则设备的真正名称是name+.+id .num_resources = ARRAY_SIZE(s3c_spi0_resource), .resource = s3c_spi0_resource, .dev = { .dma_mask = s3c_device_spi0_dmamask, .coherent_dma_mask = 0xffffffffUL } }; EXPORT_SYMBOL(s3c_device_spi0);//全局变量输出这样在系统中我们就知道有这个设备了。但是我们还需要再填充 点信息进去,要把这个设备作为子系统处理,应该有总线的概念,所以还需要总线信息。在 mach-smdk2440.c 里

文档评论(0)

智慧书苑 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档