Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1307806
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2011-09-27 00:19:32

linux spi驱动
分类: Linux Device Driver 1776人阅读 评论(0) 收藏 举报

linux spi驱动

内核版本:linux-2.6.29

 

主要的几个结构

platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_driver spidev_data s3c_spi_info

第一步:注册platform_device

arch/arm/mach-s3c2410/mach-qt2410.c 中注册platform_device ,其中s3c2410_spi_info 作为platform_device.private_data. platform_device.name "s3c2410-spi".


同时在mach-qt2410.c 中注册spi_board_info, 其中spi_board_info.bus_num=0, s2c2410_spi_info 中的bus_num 相同, 以后会通过bus_num 比对来匹配。

 

第二步:注册platform_driver

driver/spi/spi_s3c24xx.c 中注册platform_driver (s3c24xx_spi_driver) ,这个platform_driver 的名字为"s3c2410-spi" ,这样名字与platform_device 的相同,在注册的时候会匹配到一起。并调用s3c24xx_spi_driver.probe 函数s3c24xx_spi_probe

 

第三步:注册spi_device

.probe 函数中创建s3c24xx_spi ,该结构中包括了一个spi_bitbang, 一个spi_master

配置了一些互相关联的项以后( 3c2410_spi_info.bus_num 作为spi_master.bus_num) ,即扫描注册的spi_board_info 链表,查找所有spi_board_info.bus_num spi_master.bus_num 相等的项,并为每一项注册spi_device ,其中spi_device 的名字为spi_board_info. Modalias

 

第四步:注册字符设备,注册spi_driver

driver/spi/spidev.c 中,先注册 了以SPIDEV_MAJOR 为主设备号,spidev_ops 为文件操作集的字符设备

注册spi_driver . driver/spi/spidev.c 中,其中spi_driver 的名字为”spidev” ,这样与刚才注册的spi_device 相匹配,在spi_driver.probe 并为每个匹配的spi_device 创建了一个spidev_data ,并在sys 系统中注册一个带有以SPIDEV_MAJOR 为主设备号,以0开始的递增的数字为副设备号的设备点,这样如果有udev 运行的话会在/dev 下面节点。

 

好了,所有的工作准备就绪了,用户可以通过访问/dev/ 下的节点来使用这个驱动了。

%C9%D9%D2%DD%B9%A4%D7%F7%CA%D2/blog/item/03392baf6b4bc2054a36d6e4.html

 

 

==========

 

相关网站:

http://blog.csdn.net/zjujoe/article/details/3096383

 

http://blog.csdn.net/walkingman321/article/details/5946581

 

http://blog.csdn.net/woshixingaaa/article/details/6574215

阅读(1283) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~