1. 程式人生 > >建立LINUX開發環境並編譯LINUX和UBOOT以及生成裝置樹過程總結

建立LINUX開發環境並編譯LINUX和UBOOT以及生成裝置樹過程總結

檔案linux-digilent-3.6-digilent-13.01.zip
檔案u-boot-digilent-digilent-v2012.04.zip
/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/arm


1 安裝xilinx 編譯工具鏈
進入Ubuntu系統,按Ctrl+Alt+T調出Terminal終端。輸入sudo passwd root,會要求輸入使用者密碼,然後重置root的密碼,這裡密碼都不會顯示。重置完後輸入su root,再輸入剛剛重置的root密碼即可進入root
這裡要說明很關鍵的一點,一定要把目錄設定好。
在root目錄下,輸入mkdir /zed,在zed下建立tool,將下載的xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin拷貝到tool目錄下。http://pan.baidu.com/s/1nvMWAHN
輸入cd /root/zed/tool
然後./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
此時系統會提示許可權不夠,需要如下方式輸入
chmod 777 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
之後再輸入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 彈出安裝介面,每次都點選next即可。但是需要記住下圖中安裝的路徑。


2 設定環境變數(root使用者下設定)
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin:$PATH
(每次關閉終端再重新開啟都需要設定)
測試是否安裝好:檢視工具鏈的版本
arm-xilinx-linux-gnueabi-gcc -v 
回顯變數是否設定好
echo $CROSS_COMPILE




3、編譯uboot
(1)解壓縮uboot
解壓縮命令是tar -zxvf
(2)編譯uboot
make  CROSS_COMPILE=arm-xilinx-linux-gnueabi-  zynq_zed_config  [注1]  
make  
其中
"make <board_name>_config"  "include/configs/<board_name>.h" 
(新版本的uboot沒有zynq_zed.h 需要下載舊的版本)


4、拷貝elf檔案
cp u-boot  u-boot.elf
5、設定環境變數
export ARCH=arm


6、解壓縮linux原始碼
tar  -zxvf linux-




7
(1)make  ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig
注意,當linux的版本不對的時候,會提示找不到 defconfig檔案
正確的版本是linux-digilent-3.6-digilent-13.01.zip


(2)make  ARCH=arm  CROSS_COMPILE=arm_xilinx_linux_gnueabi-  menuconfig
但是一開始提示提示'make menuconfig' requires the ncurses libraries
要安裝libncurses5-dev就可以了,執行如下命令:
sudo apt-get install libncurses5-dev
然後再次make menuconfig


注意如果設定CROSS_COMPILE和ARCH 後,指令中就可以省略
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export ARCH=arm
 (3)make  ARCH=arm  CROSS_COMPILE=arm_xilinx_linux_gnueabi-
在ARCH/ARM/BOOT/下有 Image檔案和ZIMAGE 檔案。
ZIMAGE檔案是我們所需要的。


9
DTB 檔案生成.是U-BOOT用來傳遞給LINUX核心的引數的一種檔案形式。 DTB:device tree blob 
1,arch/arm/boot/dts/digilent_zed.dts
2,生成EXT3 檔案系統的裝置樹 ./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ext3.dtb arch/arm/boot/dts/digilent-zed.dts
3, 生成RAMDISC的裝置樹檔案。修改arch/arm/boot/dts/digilent_zed.dts 。
4,./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ram8m.dtb arch/arm/boot/dts/digilent-zed.dts 




10 拷貝出zImage檔案
[email protected]
:~/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/arm/boot目錄下
cp zImage ../../../../zImage
  拷貝出需要的檔案
從linux_digilent資料夾下拷貝出 dtb檔案和boot.elf 和zimage 檔案