最近手头有一平台要用spi口操作外设寄存器.
查了查,发现其不支持spi操作.
后发现一文章,我是其于此基础上做的.
文章地址为:http://blog.youkuaiyun.com/sg131971/article/details/6700636
但是我用的与其有差别,
在此重点说一下,
1,首先配置内核,此处无差别.
2,添加结构体
static struct spi_board_info s3c2410_spi0_board[] = {
[0] = {
.modalias = "spidev",
.bus_num = 0,
.chip_select = 0,
.max_speed_hz = 500*1000,
},
};
此结构体bus_num是指spi0或者spi1的总线的,chip_select是指spi接口的cs*的.max_speed不用说了.
重点说一下,modalias,此处我刚开始写的不是spidev,发现使用操作不了spi,经测试发现必须写spidev,
只有这样才能打到spidev的驱动.为何别的人可以写别的名字,此处我还没有明白.
3,在static void __init ek_board_init(void)中,添加 at91_add_device_spi(ek_spi0_devices, ARRAY_SIZE(ek_spi0_devices));
4,查看/dev中,已经存在spidev0.0与spidev1.0
5,使用spi,可以参考linux/Doc/spi/中的spidev_test.c
另外,查看是否存在spi模块,进入/sys/bus/devices与/sys/bus/drives即可查看设备与驱动,一个驱动对应两个设备在此处.