主题 : 内核自带的spi驱动学习疑问 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 5706
精华: 0
发帖: 119
金钱: 780 两
威望: 406 点
综合积分: 238 分
注册时间: 2009-05-05
最后登录: 2011-05-22
楼主  发表于: 2010-03-04 10:01

 内核自带的spi驱动学习疑问

内核版本2.6.29.4
内核自带的spi驱动程序中,spi_s3c24xx.c驱动程序中怎么没有 标准的read,write等接口函数呢?可是文件spidev.c中有。这两个文件有什么关系啊?如何调用spi_s3c24xx.c里面的函数实现SPI接收数据呢?有没有例子啊?谢谢了。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-03-04 12:22
简单的说,spi_s3c24xx.c和spidev.c是不同类型的驱动,提供的接口当然也不同。spi_s3c24xx.c是s3c24xx系列芯片的SPI controller驱动,它向更上层的SPI核心层(spi.c)提供接口用来控制芯片的SPI controller,是一个被其他驱动使用的驱动。
而spidev.c是在核心层基础之上将SPI Controller模拟成一个字符型设备的驱动,向文件系统提供标准的文件操作接口,用来操作对应的SPI Controller。
关于Linux 2.6中SPI驱动层的架构,我建议你好好看看内核源代码目录的Documentation/spi/下的文档。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 5706
精华: 0
发帖: 119
金钱: 780 两
威望: 406 点
综合积分: 238 分
注册时间: 2009-05-05
最后登录: 2011-05-22
2楼  发表于: 2010-03-04 19:35
我之前看过了Documentation/spi/下的文档,可是没看出你上面说的联系。从应用的角度来说,我只需要在spidev_test.c或者spidev_fdx.c文件修改程序完成SPI的通信。我运行了这两个测试程序了,可以正常使用。不过没有用到中断。对于中断该怎么应用起来?我想让mini2440开启一个中断号,比如EINT9,如果产生中断了,表示有数据要接收了,开始SPI接收数据。这个该怎么做呢?有例子吗?谢谢kasim版主解答。
mcy
级别: 新手上路
UID: 35548
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2011-01-03
最后登录: 2013-03-15
3楼  发表于: 2011-01-05 19:47

 回 2楼(cyndy) 的帖子

请问spidev_test.c和spidev_fdx.c两个程序运行是怎样的?如何知道它正常运行了?