1. 程式人生 > >linux4.11內核設備編譯時出現的問題(參考博客並更改的)

linux4.11內核設備編譯時出現的問題(參考博客並更改的)

作文 成了 內核啟動參數 inf 編譯 下載 bin span console

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源碼後,進入源碼目錄:(在root用戶下進行編譯,否則可能會出錯

1 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_lite_defconfig  //配置uboot
2 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-         //編譯
  此處編譯可能會出現錯誤,缺少一個pathon.h頭文件,錯誤如下圖,
  解決辦法:輸入命令 yum install python-devel
3 4 sudo dd if=./spl/sunxi-spl.bin of=/dev/sdb bs=1k seek=8 //燒寫bl1到sd卡 5 sudo dd if
=./u-boot.bin of=/dev/sdb bs=1k seek=40 //燒寫uboot.bin到sd卡裏

技術分享圖片

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

3 編譯內核:
解包linux內核源碼後,進入內核源碼目錄下操作:

1 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig  //配置內核
2 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4   //編譯出內核鏡像
3 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs   //
編譯出設備樹文件 4 5 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules //編譯出驅動模塊

//完成後,就可以把設備樹文件,內核鏡像,文件系統放在sd卡分區裏.
文件系統可沿用前面所做的文件系統,或者重編busybox制作文件系統也可.

//我這裏是所有所需文件及文件系統都放在sd卡的第一個分區(ext4格式)裏, 掛載在/run/media/jk/linux/

1 /復制編譯出來的設備樹文件到sd卡分區裏,並重命名為orangepi_lite.dtb
2 sudo cp arch/arm/boot/dts/sun8i-h3-orangepi-lite.dtb /run/media/jk/linux/orangepi_lite.dtb
3 
4 //復制內核鏡像到sd卡分區裏
5  sudo cp arch/arm/boot/zImage /run/media/jk/linux/zImage
6 
7 //把編譯出來的驅動模塊安裝到sd卡分區裏
8 sudo make ARCH=arm  modules_install INSTALL_MOD_PATH=/run/media/jk/linux

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

1 //設置uboot啟動後自動引導系統
2 setenv bootcmd "ext4load mmc 0:1 0x46000000 zImage; ext4load mmc 0:1 0x47000000 orangepi_lite.dtb; bootz 0x46000000 0:0 0x47000000"
3 
4 
5 //設置內核啟動參數.這裏需要註意sd卡在uboot上是第0個設備,但在linux內核裏變成了第2個設備(可在內核的log看到).
6 setenv bootargs "root=/dev/mmcblk2p1 rw console=ttyS0,115200n8"

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

linux4.11內核設備編譯時出現的問題(參考博客並更改的)