三、技術實現
1、解壓內核源碼
將 EPC-280_283_287 V1.04.iso 光盤中的linux-2.6.35..3-fec60fa.tar.bz2 源碼包復制到ubuntu 系統的“~/”目錄下,將其解壓后可得到linux-2.6.35.3 目錄,參考命令如下:
vmuser@Linux-host:~$ tar -jxvf linux-2.6.35..3-fec60fa.tar.bz2
2、修改配置文件
在內核源碼目錄“drivers/gpio/”下的Kconfig 文件中有設定了CONFIG_GPIO_M28X 宏的默認配置,用vim編輯器打開這個Kconfig 文件,搜索“GPIO_M28X”,找到其配置設定,將其修改為可獨立配置的選項,修改后的配置如下所示(紅色標識的為修改部分):
config GPIO_M28X
tristate “GPIO support for MiniPCI-E slot control”
#depends on IoT_3960 || IoT_3962
help
Say yes here to enable the IoT_396x board gpio driver.
3、修改內核編譯腳本
Linux 源碼目錄下的build-kernel 腳本文件主要用于切換內核默認配置,但因光盤中的該腳本文件設置不夠靈活,建議直接將build-kernel文本內容整體替換為如圖 3所示的代碼:
圖3 build-kernel 文件內容
4、配置內核源碼
進入解壓后的 Linux 源碼根目錄,使用IoT-3960L 的默認內核配置,參考命令如下:
vmuser@Linux_host:~/ linux-2.6.35.3$ 。/build-kernel
然后輸入6 選擇Iot3960,如果是其他工控板或開發套件,則選擇對應的選項即可,如果對應的Linux 源碼根目錄下沒有.config 文件,運行該步驟操作后會提示cp 命令執行錯誤,直接忽略此錯誤即可。
工控板或開發套件使用 USB 接口來與龍尚4G 模塊通信,需要配置內核以支持USB轉串口功能。參考命令如下:
vmuser@Linux-host:~/ linux-2.6.35.3 $ make menuconfig
進入配置界面后,按回車鍵進入“Device Drivers ---》”選項,配置完內核后,保存并退出內核配置操作。
5、 修改&編譯內核源碼
對龍尚4G模塊,我們需要在linux-2.6.35.3 目錄下對三個數組中的內容進行修改:
l 使用vi 或者vim 命令打開drivers/gpio/gpio_m28x.c 文件,在all_gpios_info[ ]數組作中作修改;
l 使用vi 或者vim 命令打開arch/arm/mach-mx28/mx28evk_pins.c 文件,在mx28evk_fixed_pins []數組中作修改;
l 使用vi或者vim命令打開drivers/usb/serial/option.c 文件,在option_ids[]數組中作修改。
按上述操作修改完成之后,就可以編譯內核了,內核編譯參考命令如下:
vmuser@Linux-host:~/ linux-2.6.35.3 $ make uImage
待內核編譯完成后,將生成的uImage 文件(可在arch/arm/boot 目錄下找到)燒寫到工控板或開發套件上,燒寫方法請參考《IoT-3960 用戶手冊.pdf》第6 章的內容。
評論