殘留的linux相關筆記,殘留linux相關筆記
1. 設定網路環境
1) 設定宿主機網路環境
#ifconfig eth1 192.168.16.111
2) 設定開發板網路環境
>pri
>setenv ipaddr 192.168.16.233
>setenv serverip 192.168.16.111
>setenv gatewayip 192.168.16.1
>ping 192.168.16.111
>saveenv
2. 通過TFTP下載檔案
>tftp 0x40000000 aaa.txt
3. 通過tftp燒寫自己的u-boot
1) 下載檔案到開發板
#cp u-boot.bin /tftpboot/ 將編譯好的u-boot放在宿主機tftp伺服器目錄
>tftp 0x40000000 u-boot.bin 下載u-boot到目標機
2) 用u-boot命令燒寫Flash(先擦、再寫)
>nand erase 0x0 0x60000 擦除flash,從0地址擦0x60000大小
>nand write 0x40000000 0x0 0x60000 將記憶體0x40000000地址處的檔案寫到Flash的0x0地址,寫0x60000大小。
4. 載入核心
1) 生產uImage
arch/arm/boot/zImage 核心原版
製作u-boot引導的核心 uImage, u-boot/mkimage -> zImage -> uImage
#拷貝已編譯過的u-boot/tools/mkimage 到/usr/bin
#在核心源碼目錄下執行make uImage
2) 安裝核心
#cp arch/arm/boot/uImage /tftpboot
TFTP 下載核心映像 uImage 到 DRAM 1 的起始地址 0x40000000:
>tftp 0x40000000 uImage
啟動核心
>bootm
3) 固化核心
>tftp 0x40000000 uImage
>nand erase 0x600000 0x500000
>nand write 0x40000000 0x600000 0x500000
u-boot啟動參數
>setenv bootcmd 'nand read 0x40000000 0x600000 0x500000; bootm 0x40000000'
5. 掛載檔案系統
1) 搭建NFS伺服器,參見《開發環境搭建 2.3節》
2) 重啟NFS伺服器
service portmap restart
/etc/init.d/nfs-kernel-server restart
6. 配置開發板啟動參數
1) 設定u-boot啟動命令
>setenv bootcmd tftp 40000000 uImage\; bootm\;
2) 設定核心啟動參數,以NFS方式遠程掛載宿主機上的根檔案系統
>setenv bootargs 'console=ttySAC0,115200 root=/dev/nfs rw nfsroot=192.168.1.130:/nfs/mini_rootfs ip=192.168.16.200:192.168.1.130:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc'
-----------------------------------------
設定核心io的介面:
設定GPIO的方向,如果是輸出同時設定電平:
gpio_direction_input(S5PV210_GPJ2(0));
gpio_direction_output(S5PV210_GPJ2(0), 0);
擷取輸入引腳的電平:
gpio_set_value(S5PV210_GPJ2(0), data);
gpio_get_value(S5PV210_GPJ2(0));
二 核心中gpio的使用
1 測試gpio連接埠是否合法 int gpio_is_valid(int number);
2 申請某個gpio連接埠當然在申請之前需要顯示的配置該gpio連接埠的pinmux
int gpio_request(unsigned gpio, const char *label)
3 標記gpio的使用方向包括輸入還是輸出
/*成功返回零失敗返回負的錯誤值*/
int gpio_direction_input(unsigned gpio);
int gpio_direction_output(unsigned gpio, int value);
4 獲得gpio引腳的值和設定gpio引腳的值(對於輸出)
int gpio_get_value(unsigned gpio);
void gpio_set_value(unsigned gpio, int value);
5 gpio當作中斷口使用
int gpio_to_irq(unsigned gpio);
返回的值即中斷編號可以傳給request_irq()和free_irq()
核心通過調用該函數將gpio連接埠轉換為中斷,在使用者空間也有類似方法
6 匯出gpio連接埠到使用者空間
int gpio_export(unsigned gpio, bool direction_may_change);
核心可以對已經被gpio_request()申請的gpio連接埠的匯出進行明確的管理,
參數direction_may_change表示使用者程式是否允許修改gpio的方向,假如可以
則參數direction_may_change為真
/* 撤銷GPIO的匯出 */
void gpio_unexport();