mini2440 SPI驱动移植(转)
来源:互联网 发布:mac系统怎么用excel 编辑:程序博客网 时间:2024/06/05 11:13
按照下面帖子的方法,本人试验成功,只需按照下面步骤进行就行了。
原帖地址: http://blog.csdn.net/lxmky/article/details/6858322
注:原文最后短接的MISO和MOSI指的是SPI1的,区别于SPI0
mini2440中,SPI0和SPI1的四个功能引脚均接有上拉电阻10K到3.3V。
引脚
SPICLK0
SPIMISO0
SPIMOSI0
nSS0/GPG2/EINT10
复用功能
GPE13
GPE11
GPE12
Only for slave mode P23
CON4 引脚
27
25
26
28
SPI1同时接到开发板上的按键
引脚
SPICLK1
SPIMISO1
SPIMOSI1
nSS1/GPG3/EINT11
复用功能
GPG7/EINT15
GPG5/EINT13
GPG6/EINT14
Only for slave mode P23
CON4 引脚
21
19
20
18
最近项目需要,需要在mini2440上移植SPI驱动,板子需要驱动SPI设备,上网找了很多资源,但是很多都是有问题,最终在基本理解驱动结构的前提下,将SPI驱动顺利移植到mini2440。
,我使用的内核版本是2.6.32.2,这个版本和2.6。29不一样,网上很多版本都是关于2.6.29,如果完全按照网上步骤,编译会出现问题,我做的步骤如下:
1,在Linux Source Code中修改arch/arm/mach-s3c2440/mach-mini2440.c文件,加入头文件:
- #include <linux/spi/spi.h>
- #include <../mach-s3c2410/include/mach/spi.h>
- 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_GPG(2),
- .num_cs = 1,
- .bus_num = 0,
- .gpio_setup = s3c24xx_spi_gpiocfg_bus0_gpe11_12_13,
- };
- static struct spi_board_info s3c2410_spi1_board[] =
- {
- [0] = {
- .modalias = "spidev",
- .bus_num = 1,
- .chip_select = 0,
- .irq = IRQ_EINT2,
- .max_speed_hz = 500 * 1000,
- }
- };
- static struct s3c2410_spi_info s3c2410_spi1_platdata = {
- .pin_cs = S3C2410_GPG(3),
- .num_cs = 1,
- .bus_num = 1,
- .gpio_setup = s3c24xx_spi_gpiocfg_bus1_gpg5_6_7,
- };
在mini2440_devices[]平台数组中添加如下代码:
- &s3c_device_spi0,
- &s3c_device_spi1,
- s3c_device_spi0.dev.platform_data= &s3c2410_spi0_platdata;
- spi_register_board_info(s3c2410_spi0_board, ARRAY_SIZE(s3c2410_spi0_board));
- s3c_device_spi1.dev.platform_data= &s3c2410_spi1_platdata;
- spi_register_board_info(s3c2410_spi1_board, ARRAY_SIZE(s3c2410_spi1_board));
最后需要修改arch/arm/plat-s3c24xx/KConfig文件
找到如下代码段:
- config S3C24XX_SPI_BUS0_GPE11_GPE12_GPE13
- bool
- help
- SPI GPIO configuration code for BUS0 when connected to
- GPE11, GPE12 and GPE13.
- config S3C24XX_SPI_BUS1_GPG5_GPG6_GPG7
- bool
- help
- SPI GPIO configuration code for BUS 1 when connected to
- GPG5, GPG6 and GPG7.
修改为
- config S3C24XX_SPI_BUS0_GPE11_GPE12_GPE13
- bool "S3C24XX_SPI_BUS0_GPE11_GPE12_GPE13"
- help
- SPI GPIO configuration code for BUS0 when connected to
- GPE11, GPE12 and GPE13.
- config S3C24XX_SPI_BUS1_GPG5_GPG6_GPG7
- bool "S3C24XX_SPI_BUS1_GPG5_GPG6_GPG7"
- help
- SPI GPIO configuration code for BUS 1 when connected to
- GPG5, GPG6 and GPG7.
- make menuconfig
图2
图3
图4
图5
最后编译内核
- make zImage
交叉编译:
- arm-linux-gcc -I ~/linux-2.6.32.2/include/ spidev_test.c
- 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
总结:这里叙述的是驱动移植详细过程,代码的具体含义以及开发板的针脚对应图需要自己去查阅相关资料,这里不再详述。
地址:http://blog.csdn.net/lxmky/article/details/6858322
- mini2440 SPI驱动移植(转)
- mini2440 SPI驱动移植
- mini2440 SPI驱动移植
- mini2440 SPI驱动移植
- mini2440 SPI驱动移植
- mini2440 SPI驱动移植
- mini2440 SPI驱动移植 (基于SPI子系统)
- 【转载】mini2440 SPI驱动移植
- mini2440移植之SPI驱动
- Linux2.6.32下SPI驱动的移植(mini2440)
- mini2440 spi驱动总结
- RC522 SPI驱动 mini2440
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- 【笔记】mini2440触摸屏驱动移植(二)
- mini2440触摸屏驱动移植
- mini2440 蓝牙驱动移植
- SqlMapClientTemplate的使用
- Java中的鼠标事件
- Windows服务安装包制作
- CakePHP 之 $this->params
- WP7交互特性浅析及APP设计探究
- mini2440 SPI驱动移植(转)
- super dealloc
- 深入研究Asp.net页面的生命周期
- 媒体称广东可能开征新售住房房产税
- 最坏情况下,合并两个大小为n的已排序数组所需要的比较次数
- MySQL存储过程中使用 WHILE 循环语句的用法
- 用C#创建Windows服务(Windows Services)
- 中国二三线城市楼市现“小阳春”
- 美工网站