ARM Mcp2515添加驱动
Mcp2515添加驱动
2012-01-10 21:39:32
上图1:
上图2:
上图3:
之前完成了spi接口驱动,所以mcp2515也是通过spi来读写数据的。就是多加一个中断脚。
另外在2.6.36中我看到有mcp251x.c文件,还有帮助注释,太好了,注释里都教会你怎么使用。于是又去看了看help文档信息,原来这是socketcan,了解了下是与网络有关的。先试一下把他移植到2.6.30中。
把之前的spi_board_info信息注释掉,重新添加新的
static struct mcp251x_platform_data mcp251x_info = {
.oscillator_frequency = 8000000,
//.board_specific_setup = &mcp251x_setup,
.model = CAN_MCP251X_MCP2515,
.power_enable = NULL,//mcp251x_power_enable,
.transceiver_enable = NULL,24
};
static struct spi_board_info s3c2410_spi1_board[] = {
{
.modalias = "mcp251x",
.platform_data = &mcp251x_info,
.irq = IRQ_EINT8, //GPG0
.max_speed_hz = 2*1000*1000,
.chip_select = 0,
.bus_num = 1,
},
};
于是动手移植Makefile中添加内容Kconfig中添加内容,反正提示错误,就解决。基本上比较顺利。但是里面我注释掉了一些内容呢!
结果一开始probe failed。于是跟踪源代码。发现Mcp251x.c中
函数名:mcp251x_hw_reset
功能:写一个spi的复位命令,(此时mcp会进入配置模式),通过读取状态寄存器,判断mcp是否进入配置模式。通过一定时间延时后,还没有进入配置模式,则报错。否则继续。
也就是说,一定要连接上硬件的,它需要写寄存器,还要读出来,进行判断的。
于是乎连接上了硬件,呵呵!probe成功。如图1
接着,我要开始想怎么写应用程序了。这时候才想到去看ioctl等函数。发现mcp251x.c里根本没有。网上搜索了一番,说mcp2515.c的程序很多 。于是乎真的下载到一个,看了内容还不错。Read,write,open,ioctl接口函数都有。
于是再移植一次。发现网上只有.c文件下载,没有.h文件下载,里面有些数据结构报错。后来发现主要是接口函数中有这些数据结构,于是乎先注释掉。编译成功后,probe成功。如图2.
再接着,就是看代码,看看ioctl中的函数是否可以使用了。接着自己编写了驱动测试程序can_test1.c,主要是完成一个应用程序的框架调用reset函数。然后又自己在ioctl中添加了自定义的功能进行读写寄存器测试。成功,如图3。
好了,至此应该能判断,linux代码改完后,应该已经能够将mcp2515进行初始化了。接着就是应用层接口函数。
仔细看了代码后,它的write函数处理一帧信息的,如果出入的size不足一帧是不处理的。所以为这个c程序,自己添加了数据结构。
struct can_header{ //can frame header
canid_t id:11;
canid_t rtr:1;
canid_t ide:1;
canid_t dlc:4;
canid_t eid:18;
};
struct canflt_type{ //can filter type
canid_t id:11;
canid_t ide:1;
canid_t mode:2;
canid_t eid:18;
canid_t sidmask:11;
canid_t eidmask:18;
canid_t active:1;
};
最后就是写应用程序调用这些write函数等。但是调用的时候发现了问题。
Write(fd,(char *)mycanframe,sizeof(struct can_frame));居然不能在子函数里用,一定要在main函数中才可以用。
另外,一进入main函数当open后就是了irq子函数。这个问题我需要示波器帮忙。明天继续。
ARM Mcp2515添加驱动的更多相关文章
- 【initrd】向虚拟文件系统initrd.img中添加驱动
虚拟文件系统:initrd-2.6.18-194.el5.img 希望添加网卡或SCSI等驱动 步骤: 解压initrd-2.6.18-194.el5.img: 添加*.ko文件,并修改init可执行 ...
- Linux时间子系统之(十七):ARM generic timer驱动代码分析
专题文档汇总目录 Notes:ARM平台Clock/Timer架构:System counter.Timer以及两者之间关系:Per cpu timer通过CP15访问,System counter通 ...
- Linux时间子系统(十七) ARM generic timer驱动代码分析
一.前言 关注ARM平台上timer driver(clocksource chip driver和clockevent chip driver)的驱动工程师应该会注意到timer硬件的演化过程.在单 ...
- 往android的内核添加驱动及 ueventd.rc 修改【转】
本文转载自:http://blog.csdn.net/lkqboy2599/article/details/8350100 向android的内核添加驱动,其实就是向linux内核添加驱动.主要在两个 ...
- arm裸板驱动总结(makefile+lds链接脚本+裸板调试)
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...
- ARM&Linux 下驱动开发第三节
后台驱动代码如下:比较昨天的,添加了读写指针位置移动操作 #include<linux/init.h> #include<linux/module.h> #include< ...
- ARM&Linux 下驱动开发第二节
驱动文件:qudong.c,make生成qudong.ko文件,烧录到ARM板上 #include<linux/init.h> #include<linux/module.h> ...
- Qt添加驱动——Qt数据库之添加MySQL驱动插件
Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...
- MTK andorid从底层到上层添加驱动
1 [编写linux驱动程序] 1.1 一.编写驱动核心程序 1.2 二.配置Kconfig 1.3 三.配置Makefile 1.4 四.配置系统的autoconfig 1.5 五.编译 2 [编写 ...
随机推荐
- python递归
一.递归 (1)递归就是函数自己调用自己的过程: (2)使用递归时,需要注意递归的出口,明确递归的终止条件. #计算n的阶乘 def fun(n): if n==1: return 1 else: r ...
- 理解es6 中 arrow function的this
箭头函数相当于定义时候,普通函数.bind(this)箭头函数根本没有自己的this,导致内部的this就是定义时候的外层代码块中的this.外层代码块中的this,则取决于执行时候环境上下文cont ...
- 【C++】二叉树的构建、前序遍历、中序遍历
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- 异想-天开 python---while、for、if-else 循环学习
for循环: for i in range(10): # i循环10次 print('------',i) for j in range(10): print(j) if j > 2 : bre ...
- MFC 修改标题
1. Overwrite CMainFrame::PreCreateWindow. Clear the style FWS_ADDTOTITLE cs.style &= ~(LONG)FWS_ ...
- list的基本操作实现
有关list的相关实现,主函数没有写很多,每个部分目前没发现有问题: #include <iostream> #include <stdio.h> using namespac ...
- 为多维数组添加一列以及reshape用法注意
https://blog.csdn.net/orangefly0214/article/details/80934008参考这个了链接 下面是我自己用到的代码,亲测可用 # data = pd.rea ...
- JSTL将number类型转化为String类型
<c:set var="lm1"> <c:out value="${lm}" /> </c:set>
- 2018(5)软件架构设计,架构风格,REST
2018上半年系统分析师试题五 阅读以下关于Web应用设计开发的描述,在答题纸上回答问题1至问题3. [说明] 某公司拟开发一个自由,可定制性强.用户界面友好的在线调查系统,以获取员工在课程学习.对公 ...
- php7.2连接Sqlserver2008 r2
下载Sql Server PHP扩展 Microsoft Drivers for PHP for SQL Server https://github.com/Microsoft/msphpsql/re ...