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