在这里记录一个关于在linux移植CAN总线驱动的时候的问题,我移植的can驱动是通过spi访问mcp2515来实现can通信的,移植过程中发生的主要问题就是在将spi寄存器映射到内核虚拟地址后,无法对寄存器进行读写,读出来的都是0,说明不能读写,这个问题折磨了我两天,一直找不到解决办法,开始以为是内存映射出了问题,但是试了动态和静态的方法,问题还是一样。
后来在网上搜索了一个帖子,看了以后才知道郁闷至极,原来是SPI时钟没有设置,知道以后直接在mach-s3c3410/clock.c(我的板子S3C2440A)中使能SPI的时钟就OK了。。具体操作如下:
在clock.c中将static struct clk init_clocks_disable[]关于SPI的部分剪切到static struct clk init_clocks[]中即可,以后使能别的时钟也是如此。。。