1、内核自带的SPI相关的驱动文件

项目中有CPU与FPGA进行通信,用到SPI接口:

SPI头文件在:

linux-kernel/include/linux/spi.h

SPI实现在:

linux-kernel/drivers/spi/spi.c omap2_mcspi.c spidev.c

DVS8168开发板在以下文件中初始化SPI:

linux-kernel/arch/arm/mach-omap2/board-ti8168evm.c

上述文件中有:

 const struct flash_platform_data ti816x_spi_flash =
{
.type = "w25x32",
.name = "spi_flash",
.parts = ti816x_spi_partitions,
.nr_parts = ARRAY_SIZE(ti816x_spi_partitions),
}; struct spi_board_info __initdata ti816x_spi_slave_info[] =
{
{
.modalias = "m25p80",
.platform_data = &ti816x_spi_flash,
.irq = -,
.max_speed_hz = ,
.bus_num = ,
.chip_select = ,
},
}; static void __init ti816x_spi_init(void)
{
spi_register_board_info(ti816x_spi_slave_info,
ARRAY_SIZE(ti816x_spi_slave_info));
}

修改board-ti8168evm.c 初始化我们自己的SPI设备,如下:

 // Dragon add
struct spi_board_info __initdata fpga_spi_slave_info[] = {
{
.modalias = "spidev",
.max_speed_hz = , // 48 Mbps
.bus_num = ,
.chip_select = ,
.mode = SPI_MODE_1,
},
}; // Dragon modified
static void __init ti816x_spi_init(void)
{
spi_register_board_info(fpga_spi_slave_info,
ARRAY_SIZE(fpga_spi_slave_info));
}

2、重新编译内核,同时选择生成spi设备驱动

$ make menuconfig CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm

(1)Device drivers -> Memory tech... -> Self-contained --> 取消 support most spi Flash

影响:取消文件(/drivers/mtd/devices/mtd_m25p80.c)

(2)D-evice drivers --> SPI Support --> 勾选 Utilities & Mcspi driver & User mode SPI

影响:加入文件(/drivers/spi/spi_bitbang.c /drivers/spi/omap2_mcspi.c /drivers/spi/spidev.c)

linux-kenel/drivers/spidev.c 实现用户态spi设备驱动的功能

3、编译内核自带spi应用程序,验证SPI功能(注意MISO要与MOSI相连,以实现回环测试)如下:

linux-kenel\Documentation\spi\spidev_test.c

示波器截图,黄色为SCLK,蓝色为MOSI

发送数据与接收数据相同,则说明SPI通信成功!

[DM8168]Linux下SPI驱动测试的更多相关文章

  1. RedHat Linux 下安装、测试摄像头

    RedHat Linux 下安装.测试摄像头(全文见附件)     随着视频电话的迅速发展我相信大家一定有过在Windows 下安装摄像头的经历,然而大多数 都不支持Linux .我现以罗技摄像头为例 ...

  2. Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

    源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

  3. 【驱动】linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  4. linux下I2C驱动架构全面分析【转】

    本文转载自:http://blog.csdn.net/wangpengqi/article/details/17711165 I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一 ...

  5. linux驱动基础系列--Linux下Spi接口Wifi驱动分析

    前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...

  6. Am335x SPI 驱动测试

    内核版本:3.14.65 CPU:Am335x 1.编译内核: make menuconfig Device Drivers -> <*>SPI support -> < ...

  7. Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

    SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈.可以实现用户主平台数据通过SDIO口到无线网络之间的转 ...

  8. Linux下GPIO驱动

    编写驱动程序,首先要了解是什么类型的设备.linux下的设备分为三类,分别为:字符设备,块设备和网络设备.字符设备类型是根据是否以字符流为数据的交换方式,大部分设备都是字符设备,如键盘,串口等,块设备 ...

  9. linux 下网站压力测试工具webbench

    一直在用webbench ,这个linux下的网站压力测试工具.整理下. 笔记本装的ubuntu,其他linux系统也差不多. webbench 需要先安装 ctags,一个vim的阅读插件,可以直接 ...

随机推荐

  1. HttpServletRequest request 获取form参数的两种方式

    @RequestMapping(value="/pay",method = RequestMethod.POST) public String buildRequest(HttpS ...

  2. 旋度定理(Curl Theorem)和散度定理(Divergence theorem)

    原文链接 首先说说格林公式(Green's theorem).对于一段封闭曲线,若其围城的区域D为单连通区域(内部任意曲线围城的区域都属于院区域),则有如下公式: 其中其中L为D的边界,取正方向.如果 ...

  3. 字符串缓冲区StringBuffer类,正则表达式

    StringBuffer类 StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容.它是一个容器,容器中可以装很多字符串. ...

  4. How good are detection proposals, really?

    How good are detection proposals, really? J. Hosang, R. Benenson, B. Schiele Oral at BMVC 2014 http: ...

  5. 关于discuz 不能全文搜索的问题

    这个问题客服反馈很多次了,以为discuz 默认搜索只能搜标题,除非配置了sphinx全文搜索引擎. 但是之前比较老的员工说以前能用的,也就是discuz老版本. 今天突然想到是不是discuz纵横搜 ...

  6. lintcode_397_最长上升连续子序列

    最长上升连续子序列   描述 笔记 数据 评测 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列.(最长上升连续子序列可以定义为从右到左或从左到 ...

  7. datatable 默认按某字段排序

    "columns": [ { data: null}, { data: 'name'}, { data: 'birthday'} ], "order": [[ ...

  8. 如何快速查看mysql数据文件存放路径?

    进入mysql终端 mysql>show variables like '%datadir%'; 出来的结果即是!

  9. 列表,元组的操作,for循环

    1.列表 # li = ["wang","jian","wei"] # print(li) # 结果:['wang', 'jian', 'w ...

  10. C语言实例解析精粹学习笔记——26

    实例26:阿拉伯数字转换为罗马数字,将一个整数n(1~9999)转换为罗马数字,其中数字和罗马数字的对应关系如下: 原书中的开发环境很老,我也没有花心思去研究.自己在codeblocks中进行开发的, ...