IMX6Q Uboot 從零開始編譯

Imx6Q Uboot 從零開始編譯

作爲一個比較新的平臺,freescale的這個四核的平臺IMX6Q在很多方面的開發都很難下手,國內資源稀少,轉載轉發較多,且大多數的開發都是基於freescale官方的板子或者官方合作伙伴的板子。他們都統一使用官方的Ltib構建工具,對於一些廠商在官方板子上擴展後或者做了一些細微修改的板子,資料少之又少,修改部分幾乎沒有說明文檔,這個實際應用帶了的麻煩說起來都傷心呀.
    好了廢話少說,開始Uboot的編譯。拿到一塊板子,最先的是要啓動起來,要啓動起來就得有Uboot這個bootload工具。我的開發主機是Ubuntu12.04.4。

通過參考網上無數的文字信息,最後得到了如下的過程
1、請現在你的host 主機上安裝一些必要的開發工具 Insert following content into the host-setup.sh

下面這個腳本文件中使用了aptitude 工具,如果想使用ubuntu自己的apt-get 工具,只要進行簡單的替換就可以了,但是如果不想看到一大堆錯誤輸出的話,建議你還是在使用下面的代碼之前:sudo apt-get install aptitude -y吧。

#!/bin/bash
# Install packages needed by LTIB
sudo aptitude -y install gettext libgtk2.0-dev rpm bison m4 libfreetype6-dev
sudo aptitude -y install libdbus-glib-1-dev liborbit2-dev intltool
sudo aptitude -y install ccache ncurses-dev zlib1g zlib1g-dev gcc g++ libtool
sudo aptitude -y install uuid-dev liblzo2-dev
sudo aptitude -y install tcl dpkg
sudo aptitude -y install asciidoc texlive-latex-base dblatex xutils-dev
# Packages required for 64-bit Ubuntu
# Do "uname -a" and see if the word "x86_64" shows up.
if uname -a|grep -sq 'x86_64'; then
sudo aptitude -y install ia32-libs libc6-dev-i386 lib32z1
fi
# The following recommended for Linux development.
# They are not required by LTIB.
sudo aptitude -y install gparted emacs22-nox openssh-server
sudo aptitude -y install nfs-common nfs-kernel-server lintian
sudo aptitude -y install git-core git-doc git-email git-gui gitk
sudo aptitude -y install diffstat indent tofrodos fakeroot doxygen uboot-mkimage
這都是些嵌入式開發的基礎庫,也是官方參考手冊Setting_Up_LTIB_Host.pdf 中提供的,雖然官方的host是ubuntu 9.04,但這些在12.04.4中工作依然良好。
        有了這些基礎性的東西,你現在還需要兩樣東西 
2、源碼:
                1、適合你這塊板子的Uboot源代碼。
                2、交叉編譯工具。
我想若果連這兩個東西,廠商都沒提供給你,我想你還不如自己拿起電烙鐵自己焊一塊板子。或則買官方的板子。其實交叉編譯工具,和freescale官方提供的是一樣的。如果這個都不一樣,說明製造這塊板子的廠家有替代freescale的能力了。而我想Uboot源碼你一定是需要廠商提供的,他們會根據自己設計的硬件做一些基礎性的適配工作。不然,我想你自己需要乾的活可能多了去了。有了這兩樣的東西,你可以開始配置編譯腳本了。將上面兩個工具包解壓到你準備好的目錄裏:我在Uboot源碼的根目錄【即最頂層的makefile目錄下】建立了這樣的一個腳本:build_u-boot.sh
(主要就是指定makefile調用的交叉編譯工具)其實還是linux下編譯的老套路make clean ; config__;make 不同之處在於,這是爲arm板子編譯的,所以要指定交叉編譯的一些參數而已.
裏面的內容如下:
#!/bin/bash
make ARCH=arm CROSS_COMPILE=/home/dev/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=/home/dev/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi- mx6q_sabresd_config
make ARCH=arm CROSS_COMPILE=/home/dev/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-

3、構建compile Uboot

這樣,如果你在host下擁有相應文件的權限的情況下,就可以看是編譯你Uboot了。執行以下sh腳本;

$sh ./build_u-boot.sh
        最後,如果沒有錯誤的話,你就能看到在你的腳本目錄【根目錄】等到 u-boot.bin文件。這樣你就可以燒寫到你的板子裏去了,之後調試相應的功能,出現問題就修改相應的uboot源代碼來解決。其實很多嵌入式的開發套路都差不多,但是,前進的路上磕磕碰碰的事情那塊板子都很多呀.何況自己還是個菜鳥.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章