首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于S3C2440的Linux SPI驱动移植笔记(2)

基于S3C2440的Linux SPI驱动移植笔记(2)

在mach-tq2440.c文件前面增加头文件include:
#include<../mach-s3c2410/include/mach/spi.h>
#include <linux/spi/spi.h>

完成上述修改后就可以编译内核了。
当然,这样编译的内核是不能支持spi的,还需要对SPI设备驱动进行编译。make menuconfig,进入DeviceDrivers-->SPI Support,将下述三项都选上:
SPI驱动移植笔记" title="基于S3C2440的Linux SPI驱动移植笔记" height="408" width="643">

当然,如果想将这三个模块都编译进内核就将其标注为*。
保存退出后makemodules,在drivers/spi目录生成三个ko文件:spi_bitbang.ko spidev.ko  spi_s3c24xx.ko。
spi_bitbang.ko是基础驱动,spi_s3c24xx.ko依赖于这个驱动提供的功能,spi_s3c24xx.ko是S3C2440SPI的核心驱动,基本功能都由这个驱动实现,但是这个是SPIMaster驱动,只有它还无法完成SPI的操作,spidev.ko实现了/dev/spidevX.X设备,依赖于spi_s3c24xx.ko提供的功能,在用户侧可以进行调用。

这几个驱动编译完毕后,下载到单板进行装载,由于驱动之间存在依存关系,所以一定要按照下面顺序装载:
insmod spi_bitbang.ko
insmod spi_s3c24xx.ko
insmod spidev.ko
装载完毕后,如果能够在/dev下看到spidev0.0和spidev1.0就OK了。

在内核源码中的Documents/spi目录下有SPI驱动测试程序,将里面的设备名称修改为上面两个设备名称:
static const char *device = "/dev/spidev0.0";
// static const char *device = "/dev/spidev1.0";
编译后下载到单板分别进行验证,在SPI输入输出环回的情况下,验证OK:
[root@EmbedSky /root]# ./spidev_test
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D

[root@EmbedSky /root]# ./spidev_test
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D
继承事业,薪火相传
返回列表