1. 程式人生 > >H3 Linux4.11核心裝置樹裝置驅動開發1

H3 Linux4.11核心裝置樹裝置驅動開發1

AllWinnerH3 linux4.11版本的bsp下載:
https://pan.baidu.com/s/1mhU4a8K 密碼: b375
H3-linux4.11_bsp目錄就是所需的原始碼及編譯工具.

下載後, 先安裝tools目錄裡的dtc工具. 解包dtc-master.zip, 執行”make && make install”即可.

1 配置gcc-linaro-7.2.1交叉編譯器。因新版的uboot需要大於6.x版本以上的編譯器才可以。
 配置好後才可以編譯uboot及核心原始碼.

2 編譯uboot:
解包u-boot原始碼後,進入原始碼目錄:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_lite_defconfig  //配置uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-         //編譯

sudo dd if=./spl/sunxi-spl.bin of=/dev/sdb bs=1k seek=8   //燒寫bl1到sd卡
sudo dd if=./u-boot.bin of=/dev/sdb bs=1k seek=40         //燒寫uboot.bin到sd卡里

//燒寫後,正常情況下應可用sd卡啟動板,可通過uart接收到板上uboot的輸出資訊.

3 編譯核心:
解包linux核心原始碼後,進入核心原始碼目錄下操作:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig  //配置核心
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4   //編譯出核心映象
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs   //編譯出裝置樹檔案

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf
- modules //編譯出驅動模組

//完成後,就可以把裝置樹檔案,核心映象,檔案系統放在sd卡分割槽裡.
檔案系統可沿用前面所做的檔案系統,或者重編busybox製作檔案系統也可.

//我這裡是所有所需檔案及檔案系統都放在sd卡的第一個分割槽(ext4格式)裡, 掛載在/run/media/jk/linux/

//複製編譯出來的裝置樹檔案到sd卡分割槽裡,並重命名為orangepi_lite.dtb
sudo cp arch/arm/boot/dts/sun8i-h3-orangepi-lite.dtb /run/media/jk/linux/orangepi_lite.dtb

//複製核心映象到sd卡分割槽裡
 sudo cp arch/arm/boot/zImage /run/media/jk/linux/zImage

//把編譯出來的驅動模組安裝到sd卡分割槽裡
sudo make ARCH=arm  modules_install INSTALL_MOD_PATH=/run/media/jk/linux

以上步驟完成後, 即可把sd卡接板上啟動系統. 進入uboot後,還需要設定好環境變數:

//設定uboot啟動後自動引導系統
setenv bootcmd "ext4load mmc 0:1 0x46000000 zImage; ext4load mmc 0:1 0x47000000 orangepi_lite.dtb; bootz 0x46000000 0:0 0x47000000"


//設定核心啟動引數.這裡需要注意sd卡在uboot上是第0個裝置,但在linux核心裡變成了第2個裝置(可在核心的log看到).
setenv bootargs "root=/dev/mmcblk2p1 rw console=ttyS0,115200n8"

以上步驟完成後,應就可以進入檔案系統了.