S3C2440 平台的spi ad7888驱动程序

本文档详细介绍了如何在S3C2440平台上为AD7888芯片编写SPI驱动程序,包括设备结构体定义、模块初始化、SPI驱动注册、probe和remove函数、file_operations结构体以及如何处理并发控制。通过spi_board_info和spi_register_board_info函数完成设备匹配与注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义一个struct ad7888 {
struct cdev cdev;
struct spi_device *spi;

struct semaphore lock;
};
来描述我的设备附加信息
先理下逻辑:
[1]module_init(spi_ad7888_init);


[2]static int __init spi_ad7888_init(void) {}(在这个函数里应实现 初始化主设备号及字符设备注册最后调用平台设备注册函数spi_register_driver(spi_ad7888_driver))

[3]关于struct spi_driver spi_ad7888_driver这个结构体,需要填写的项有.probe .remove .driver其中.driver 又包含.name  .owner 等等。其中.name这个是关键,平台设备驱动程序的匹配就是根据这个name和device里面的.name作比较,当然,这里有点不同,spi的match会调到后面讲的spi_board_info中的.modalias做比较。

[4]接着填写probe和remove函数,我在spi_ad7888_driver结构体中,将.probe=spi_ad7888_probe。那么spi_ad7888_probe中实现的功能有:
分配一个struct ad7888结构体空间,这个结构体在上面定义
注:以下省略了所有的出错处理~实际应用中不能缺少。
static int __devinit spi_ad7888_probe(struct spi_device *spi) {
struct * chip;
chip =kmalloc(sizeof(struct ad7888),GFP_KERNEL);
dev_set_drvdata(&spi->dev,chip);//设置这

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值