本人在at91sam9g45板应用mcp2515字符型驱动,只能阻塞访问,感觉不太爽,于是花了两天时间移植了下网络型驱动,以便于socket 编程。在这一过程中碰到的问题记录如下:
一、移植mcp2515x代码,可以在linux2.6.34版本以上找得到,但往2.6.30里移植时,需要根据编译错误,进行调整和切入。并配置Kconfig和Makefile,由于当时错误情况当时未记录,暂且不表
移植成功后 ifconfig -a 即如图所示
二、然后就是 ip link set can0 type can bitrate 50000
但是报错:ip: either "dev" is duplicate, or "type" is garbage
下载了iproute2-3.6.0.tar.gz 进行编译 将结果 ip 替换到 板卡根文件系统/bin下(注意删除原来 软链接)
三、用can-utils测试时,发现中断报错
request_threaded_irq gpio_irq_type+0x0/0x1c
解决办法:将mcp2515代码
request_threaded_irq(spi->irq, NULL, mcp251x_can_ist,
IRQF_TRIGGER_FALLING, DEVICE_NAME, priv);
改成了rret = request_threaded_irq(spi->irq, irq_mcp251x_can_handler, mcp251x_can_ist,
IRQF_TRIGGER_FALLING|IRQ_TYPE_EDGE_RISING, DEVICE_NAME, priv);