關於mini 2440 的spi驅動移植及分析

2021-06-16 09:13:46 字數 1852 閱讀 7296

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設定的不對的話,一發生中斷就會跳到乙個不對的地方 導致...