linux2.6.32下spi驅動的移植(mini2440) .
下面需要修改部分核心**,具體操作如下:
1. 修改arch/arm/mach-s3c2440/mach-mini2440.c檔案
在include標頭檔案**行之後增加如下**
//spi add by shiguang
#include
#include
static struct spi_board_info s3c2410_spi0_board = ,
}; static struct s3c2410_spi_info s3c2410_spi0_platdata = ;
//end add spi
然後在函式__initmini2440_machine_init的開頭增加下列**.通過以下把資訊整合到一起,(s3c2410_spi0_platdata是struct s3c2410_spi_info的物件,s3c2410_spi0_board是struct spi_board_info的物件).
s3c_device_spi0.dev.platform_data=&s3c2410_spi0_platdata;
spi_register_board_info(s3c2410_spi0_board,array_size(s3c2410_spi0_board)); / *對裝置介面資訊進行註冊,在這個函式裡面,是把s3c2410_spi0_board 的資訊都拷貝到結構體
struct boardinfo ;
這裡使用程式設計技巧定義個元素為0的陣列,目的是接收s3c2410_spi0_borad裡面的不確定元素,因為事先不知道元素的多少。然後在系統編譯的時候會把board_info的記憶體預設為0,所以賦值的時候還要自動申請記憶體。
memcpy(bi->board_info, info, n * sizeof *info);
然後定義了同步鎖,建立了鍊錶。
mutex_lock(&board_lock);
list_add_tail(&bi->list, &board_list);
mutex_unlock(&board_lock);
這部分好像就到這個地方了,系統把資訊儲存到一塊記憶體中,我們可以通過全域性變數board_list找到這塊地方。
*///end spi
在mini2440_devices陣列的最後中新增
&s3c_device_spi0,/新增spi裝置/
2.修改drivers/spi/spi_s3c24xx.c檔案
在檔案開頭增加下列**
#include
在s3c24xx_spi_initialsetup函式結尾增加下列**:
s3c2410_gpio_cfgpin(hw->pdata->pin_cs,s3c2410_gpio_output);
s3c2410_gpio_cfgpin(0x8b, s3c2410_gpio_sfn2); /* s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)設定gpio的工作模式*/
s3c2410_gpio_cfgpin(0x8c, s3c2410_gpio_sfn2);
s3c2410_gpio_cfgpin(0x8d, s3c2410_gpio_sfn2);
// end add
3. 最後重新編譯核心
重啟mini2440,檢視/dev下的裝置檔案
[root@shiguang /]# ls /dev/spidev0.0 -l
crw-rw---- 1 root root 153, 0 jan 1 08:00 /dev/spidev0.0
[root@shiguang /]#
mini2440 解除安裝模組
我的mini2440買回來這麼久了,一直有個問題很奇怪,就是執行insmod ko一切正行,lsmod也可以看到你插入的模組,但是用rmmod就會出現no such file,一直對這個問題就感覺很奇怪,也google了很多,網上五花八門的答案都有。最後還是仔細看了手冊才找到答案,原來是要把板子上的...
mini2440儲存空間
s3c2440把低1g的空間分成了8塊,由圖可知,第0至6這七塊的起始位址是不變的。而第七段的位址是可變的 它的位址有第六塊需要用到多少來決定,反正就是第六第七是連在一起的 前6塊可以是rom sram 最後兩塊不但可以是rom,sram外,還可以是sdram.其實啊,簡單點的說,就是只有最後兩塊才...
利用IAR除錯Mini2440
利用iar 除錯mini2440,準備先玩玩裸奔 以前開發lpc2214的時候用的是iar除錯環境 感覺還是很不錯的 當時一度錯怪的了這開發環境 因為lpc對jtag的引腳可以配置成普通io 開發lpc時還有乙個需要注意的地方就是如果memmap設定的不對的話,一發生中斷就會跳到乙個不對的地方 導致...