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 [编写 ...
随机推荐
- 变量类型-Number
教程:一:数字类型 (1)int 没有限制大小,有以下的四种表现形式: 1:2进制:以'0b'开头---bin 2:8进制:以'0o'开头---oct 3:1 ...
- OpLogMergeMessage-OutOfMemoryError-JavaHeapSpace
direct memory size netty or oplog 5.5kw * 20 60G worker/ 26G MaxDirectMemorySize 1/2 tasks per worke ...
- 如何安装Magento 2.0
//来源:http://www.360magento.com/blog/install-magento2 如何安装Magento 2.0 2015/8/11 下午4:23 发布者: shi yong ...
- WcPro项目(WordCount优化)
1 基本任务:代码编写+单元测试 1.1 项目GitHub地址 https://github.com/ReWr1te/WcPro 1.2 项目PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实 ...
- nmcli命令使用以及网卡绑定bond
一.nmcli命令 1.什么是nmcli 以前我配置网卡的时候都要打vim /etc/sysconfig/network-scripts/ifcfg-eth0这么一长串命令,有很多配置名字还记不住就需 ...
- Git 提示fatal: remote origin already exists 错误解决办法
今天使用git 添加远程github仓库的时候提示错误:fatal: remote origin already exists. 最后找到解决办法如下: 1.先删除远程 Git 仓库 $ git re ...
- IDEA中创建maven项目后解决main文件夹下目录不全的问题
IDEA创建maven-archetype-webapp项目的时候,创建完成后发现在main文件夹下没有java,resource等源文件夹. 解决方法: 1.选择File->Project S ...
- OC 应用跳转QQ私聊界面或者申请加群
申请加群 NSString *qq_number = QQ; NSString* urlStr = [NSString stringWithFormat:@"mqqapi://card/sh ...
- OC获取ip地址
+(NSString *)getIp{ NSError *error;NSURL *ipURL = [NSURL URLWithString:@"http://pv.sohu.com/cit ...
- @CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy
在spring jpa audit 中,在字段或者方法上使用注解@CreatedDate.@CreatedBy.@LastModifiedDate.@LastModifiedBy,当进行实体插入或者更 ...