linux 添加spi 驱动,使用linux自带的SPI驱动的疑问

我刚接触这个没几天,看到有自带的驱动程序,我想用spi自带的驱动程序,可是发现里面好多个文件。学习了好多天了,不知道他们的相互包含关系?越看越有点晕。

我用的是mini2440, linux2.6.29。我想借这个平台整理一下我的思路,并请帮忙解答。

http://www.arm9home.net/read.php?tid-2378-keyword-spi.html

http://www.arm9home.net/read.php?tid-3620-keyword-spi.html

我参考这两个帖子之后,我这样做的。

1、在配置Linux 编译选项时,开启相应的SPI 选项,如下所示

-> Device Drivers

-> SPI support

SPI support

*** SPI Master Controller Drivers ***

-*- Bitbanging SPI master

Samsung S3C24XX series SPI

< > Samsung S3C24XX series SPI by GPIO

*** SPI Protocol Masters ***

< > SPI EEPROMs from most vendors

User mode SPI device driver support

< > Infineon TLE62X0 (for power switching)

设置完成保存。

2、修改文件arch/arm/mach-s3c2440/mach-mini2440.c

添加

#include

#include

static struct spi_board_info s3c2410_spi0_board[] = {

[0] = {

.modalias = "spidev",

.bus_num        = 0,

.chip_select        = 0,

.irq = IRQ_EINT9,

.max_speed_hz         = 500*1000,

},

};

static struct s3c2410_spi_info s3c2410_spi0_platdata = {

.pin_cs = S3C2410_GPB1,

.num_cs = 1,

.bus_num = 0,

};

mini2440_devices数组中添加

&s3c_device_spi0

mini2440_machine_init函数中添加

s3c_device_spi0.dev.platform_data= &s3c2410_spi0_platdata;

spi_register_board_info(s3c2410_spi0_board, ARRAY_SIZE(s3c2410_spi0_board));

完成保存。编译内核生成zImage,通过USB载入开发板。

疑问1:这里的这句话是什么意思?.irq = IRQ_EINT9,?跟SPCONn的SMOD的中断模式有什么关系?

疑问2:我把 .chip_select        = 0,改成1,载入开发板后ls /dev/spi*没东西。为0的时候有/dev/spi0.0  为什么?

疑问3: .modalias = "spidev",这里的spidev能改吗?

疑问4:以上的步骤设置和修改,跟这个文件spi_s3c24xx.c有关系吗?spi_s3c24xx.c是什么文件呢?s3c24xx的spi驱动程序?应用程序可以直接调用里面的函数?

3、使用document里面的spidev_test文件测试,把MOSI和MISO线连接到一起。跑测试程序。成功。

疑问5: 内核中有这么多个文件,spi.c spidev.c spi_s3c24xx.c (列出相关的)。这几个文件之间是有什么包含关系呢?以上三个步骤用到哪几个文件?有用到spi_s3c24xx.c文件吗?如果有,spidev.c是如何进行调用spi_s3c24xx.c的呢?

还是说spi_s3c24xx.c这个是独立的驱动程序?如果是,测试应用程序调用spi_s3c24xx.c里面的函数吗?

疑问看上去比较多,希望有人能帮我解答一二。不胜感激。我正一头雾水。

[ 此帖被cyndy在2010-01-19 21:03重新编辑 ]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值