linux-2.6.26下SPI(1)驱动移植调试
来源:互联网 发布:产品图纸设计软件 编辑:程序博客网 时间:2024/06/08 16:17
参考了Linux2.6.32下SPI驱动的移植(mini2440)这篇文章。
不同的是我的内核是linux-2.6.26 SPI口是SPI1 GPG5 GPG6 GPG7,片选是GPA1
mach-smdk2410.c下增加代码:
/* SPI // tianyl2011-0927 鍙傝€僲ach-qt2410.c绉绘*/
#include <asm/arch/spi.h>
#include <asm/arch/spi-gpio.h>
#include <linux/spi/spi.h>
#include <linux/spi/spidev.h>
#include <linux/spi/spi_bitbang.h>
#include <asm/arch/regs-gpio.h>
#include <asm-arm/arch-s3c2410/map.h>
#include <asm-arm/arch-s3c2410/spi.h>
static struct spi_board_info s3c2410_spi1_board[] = {
[0] = {
.modalias = "spidev",
.bus_num = 0,
.chip_select = 0,
.irq = IRQ_EINT9,
.max_speed_hz = 500*1000,
},
};
static struct s3c2410_spi_info s3c2410_spi1_platdata = {
.pin_cs = S3C2410_GPA1,
.num_cs = 1,
// .bus_num = 0,
};
以下增加相关调用:
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_usb,
// &qt2410_spi,// tianyl2011-0927
&s3c_device_spi1,// forch
//&s3c_device_lcd,
//&s3c_device_wdt,
//&s3c_device_i2c,
//&s3c_device_iis,
};
static void __init smdk2410_init(void)
{
platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));
s3c_device_spi1.dev.platform_data=&s3c2410_spi1_platdata;// forch
spi_register_board_info(s3c2410_spi1_board,ARRAY_SIZE(s3c2410_spi1_board));// forch
smdk_machine_init();
}
spi_s3c24xx.c下s3c24xx_spi_probe函数增加IO初始化:
// CS1
s3c2410_gpio_cfgpin(S3C2410_GPA1, S3C2410_GPA1_OUT);
s3c2410_gpio_setpin(S3C2410_GPA1, 1);
// GPG 5 6 7閰嶇疆涓篠PI鎺ュ彛 SPI1
s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1);
s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
spidev_test.c修改
static const char *device = "/dev/spidev0.0";
配置相关选项,生成内核,下载,下载应用。
确认驱动成功加载
[root@forch app]# ls /dev/ | grep spi
spidev0.0
[root@forch app]#
运行应用:
[root@forch app]# ls
spidev_test.o
[root@forch app]# ./spidev_test.o
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
0D 00 00 00 00 00
00 60 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
[root@forch app]#
用示波器观察各个IO,有波形出现。我的SPI接个外设,所以打印的信息和发送的不一样。
- linux-2.6.26下SPI(1)驱动移植调试
- linux-2.6.26下SPI1(0) Linux2.6.32下SPI驱动的移植(mini2440)
- Linux下SPI驱动的移植和应用程序的测试
- linux下的spi驱动及测试程序移植开发
- Linux下SPI驱动的移植和应用程序的测试
- Linux下SPI驱动的移植和应用程序的测试
- linux下SPI驱动
- linux下SPI驱动
- SPI linux 驱动调试感悟
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- linux-2.6.26下SPI1(2)带2个CS驱动移植调试
- Linux下SPI驱动分析(1)
- Linux下spi驱动开发(1)
- Linux下spi驱动开发(1)
- Linux下spi驱动开发(1)
- Linux下spi驱动开发(1) .
- Oracle db_files 和 maxdatafiles 说明
- 深入了解canvas标签(2)——绘制图形
- WriteFile写UNICODE字符串 TxT显示乱码
- static的作用
- 深入了解canvas标签(3)——使用图像
- linux-2.6.26下SPI(1)驱动移植调试
- FreeMarker标签与使用
- word中printout函数的相关参数介绍
- snmpwalk命令常用方法总结
- s2s2
- 深入了解canvas标签(4)——运用样式与颜色
- cout与cerr的区别 2011.09.28
- 开源GIS简介.学习开源gis(ZZ)转自(http://www.cnblogs.com/zhangjun1130/archive/2010/07/27/1785869.html)
- Java中到底有沒有引用傳遞