1. 程式人生 > >Hi3519V101 Uboot和Kernel編譯

Hi3519V101 Uboot和Kernel編譯

Hi3519V101 Uboot和Kernel編譯

前面已經搭建好了Ubuntu下的海思開發環境,現在對編譯Uboot和Kernel的過程做一個簡單的記錄。參考文件《Hi3519V101 U-boot 移植應用開發指南.pdf》和《Hi3519V101 Linux開發環境使用者指南.pdf》。

編譯U-boot

步驟1:cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/uboot 
步驟2:tar -xvf u-boot-2010.06.tgz 
步驟3:cd u-boot-2010.06/ 
執行命令: 

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- hi3519_config

  生成hi3519_config檔案 

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux-

  生成u-boot.bin 

步驟4:配置DDR儲存器。

  在Windows下開啟SDK中的”osdrv/tools/pc/uboot_tools”目錄下的配置表格。當選用不同的DDR SDRAM時,需要針對不同器件的特性,對配置工作表中的標籤頁【mddrc_dmc0】和【mddrc_phy0】進行修改。

步驟5:配置管腳複用

  如果管腳複用有變化,還需要對配置表格中的標籤頁【multiplex】進行修改

步驟6:生成最終的U-boot映象

  完成配置表格的修改後,儲存表格。單擊表格第一個標籤頁上的按鈕【Generage reg  bin file】 (只能點此按鈕),生成臨時檔案 reg_info.bin ,將臨時檔案 reg_info.bin 和編譯 u-boot 得到的 u-boot.bin 都**拷貝到 SDK 中的 “osdrv/tools/pc/uboot_tools/”目錄**下,

  執行命令: 

    ./mkboot.sh reg_info.bin u-boot-hi3519v101.bin 

  其中 u-boot-hi3519v101.bin 就是能夠在單板上執行的 U-boot 映象

編譯Linux-3.18.y的核心

 

步驟1:執行 cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/kernel/linux-3.18.y 
步驟2:執行 cp arch/arm/configs/hi3519v101_big_little_defconfig .config 
步驟3:執行 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig 
出現錯誤: 

複製程式碼

scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: 沒有那個檔案或目錄 
compilation terminated. 
scripts/Makefile.host:108: recipe for target 'scripts/kconfig/mconf.o' failed 
make[1]: *** [scripts/kconfig/mconf.o] Error 1 
Makefile:541: recipe for target 'menuconfig' failed 
make: *** [menuconfig] Error 2 

複製程式碼

  原因:沒有相關依賴庫,需要安裝libncurses5-dev 
解決方法: 

  1、sudo apt-get update

  2、sudo apt-get install libncurs*

步驟4:在menu中選擇需要編譯到核心中的模組,然後儲存退出。按兩下ESC退出。 

步驟5:

1 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- clean 
2 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig 
3 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage 

編譯出錯: 

"mkimage" command not found - U-Boot images will not be built 
arch/arm/boot/Makefile:93: recipe for target 'arch/arm/boot/uImage' failed 
make[1]: *** [arch/arm/boot/uImage] Error 1 
arch/arm/Makefile:316: recipe for target 'uImage' failed 
make: *** [uImage] Error 2 

  原因:一般linux編譯生成的是zImage,如果要編譯成uImage,需要有mkimage工具 

解決方法:

  步驟1:cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/uboot/u-boot-2010.06/tools 
  步驟2:cp mkimage /usr/bin 
  步驟3:make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage 
  最後,在cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/kernel/linux-3.18.y/arch/arm/boot生成zImage和uImage