飛凌嵌入式?

飛凌嵌入式iMX6開發平臺基於Freescale i.MX6 Quad和i.MX6 DuaLite 處理器。其中四核採用的是i.MX6 Quad處理器,每個內核運行頻率高達1.2 GHz,帶有1 MB L2緩存和64位DDR3或2通道、32位LPDDR2控制器。這個系列的器件集成了FlexCAN、MLB總線、PCI Express和SATA-2。而雙核採用的是i.MX6 DuaLite處理器,內核運行頻率高達1GHz,帶有512KB L2緩存和64位DDR3或2通道、32位LPDDR2控制器。這個系列的器件集成了FlexCAN、MLB總線和PCI Express。不管四核還是雙核均具有卓越的連接性,同時集成LVDS、MIPI顯示器接口、MIPI攝像頭端口和HDMI v1.4,是先進的消費電子、汽車和工業多媒體應用的理想平臺。支持Linux系統、Android4.4操作系統,可用於工業產品設計。

i.MX6 Quad和i.MX6 DuaLite開發平臺均由核心板和底板組成,核心板主要芯片有:CPU,emmc,Memory,PowerManage。使用核心板,只需要根據業務需求開發自己的底板,可加速的產品上市時間,並且從平臺搭建的複雜環境中脫離。

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

工具/原料

飛凌 imx6開發板

配套工具包

步驟一、下載BSP開發包

從飛思卡爾官網下載BSP開發包

若要從飛思卡爾官網下載資料需先註冊賬號,註冊完後打開網頁:

下載以下BSP 包:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

步驟二、.安裝需要的庫

安裝需要的庫

執行如下命令:

# sudo apt-get install rpm m4 bison patch build-essential zlib1g zlib1g-dev ncurses-dev texinfo texlive liblzo2-dev uuid-dev gettext libglib2.0-dev

安裝過程中可能會因為缺少一些庫出現錯誤,此處可以創建一個文本文件,命名為auto_install.sh,其內容為:

#!/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

sudo aptitude -y install sendmail mailutils meld atftpd sharutils

sudo aptitude -y install manpages-dev manpages-posix manpages-posix-dev linux-doc

sudo aptitude -y install vnc4server xvnc4viewer

sudo aptitude -y install texinfo

對auto_install.sh加可執行權限:

chmod a+x auto_install.sh

然後執行該腳本即可:

./auto_install.sh

執行時會要求輸入密碼。如果提示aptitude找不到的話可以考慮使用apt-get,也可以安裝該指令,網上盛傳該使用該指令來管理軟件依賴比apt-get更好用,安裝方法如下:

sudo apt-get install aptitude

腳本執行的時間比較長,可能需要半小時左右,請耐心等待。

步驟三、解壓文件

以下操作是基於user用戶而非root用戶,假如在root用戶可以用命令切換到user用戶,如要切換到user用戶develop可以執行以下命令:

[email protected]:/# su develop

[email protected]:/$

在根目錄下新建文件夾 imx6,並把下載的3個包拷貝到 imx6 文件夾下。分別解壓三個文件,命令如下:

$ tar zxvf IMX_AACPD_3.0.7-2.tar.gz

$ tar zxvf L3.0.35_4.1.0_130816_source.tar.gz

$ tar zxvf IMX_MMCODEC_3.0.35_4.1.0_BUNDLE_CODA.tar.gz

注:如果不需要多媒體部分,不必解壓IMX_AACPD_3.0.7-2.tar.gz 和IMX_MMCODEC_3.0.35_4.1.0_BUNDLE_CODEA.tar.gz。

進入 IMX_AACPD_3.0.7-2 文件夾下面,將下面的 LTIB Codecs 和 Ubuntu Codecs 兩個文件下面的文件,都拷貝到 L3.0.35_4.1.0_130816_source/pkgs 裡面,其中 LTIB Codecs 是 linux 需要的庫,Ubuntu Codecs 是Ubuntu 需要的庫。

進入 IMX_MMCDODEC_3.0.35_4.1.0_BUNDLE_CODA 文件夾,將 ltib codecs 和 ubuntu codecs 兩個文件夾下面的文件,全部拷貝到 L3.0.35_4.1.0_130816_source/pkgs 裡面,其中 LTIB Codecs 是 linux 需要的庫,Ubuntu Codecs 是 Ubuntu 需要的庫。

步驟四、安裝 LTIB

進入 L3.0.35_4.1.0_130816_source 文件夾,安裝 LTIB。執行命令

$ ./install

提示:

Do you want to cotinue ? Y n

輸入 y 回車。

提示開源方面的一些信息,不用管,不停空格之後會到最後提示:

I have read and accept the EULA (yes no):

輸入 yes 回車,提示需輸入安裝路徑:

Where do you want to install LTIB ?

輸入想安裝LTIB的路徑,如ltib_install,回車。

此時開始安裝 LTIB。

步驟五、修改環境配置文件

添加用戶權限,需先切換到root用戶,執行以下命令:

[email protected]:/$ su root

密碼:

[email protected]:/# vi /etc/sudoers

在打開的文件中

# Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

下面添加:

develop ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm

修改完後切回到user用戶,以develop用戶為例,執行命令:

[email protected]:/# su develop

[email protected]:/$

步驟六、安裝補丁

Freescale提供這套BSP時是基於ubuntu9.04的,現在使用的是ubuntu12.04,系統檢測軟件包是否安裝時是變化,可以通過如下patch來解決此問題:

#!/usr/bin/env bash

# get the patch tarball and untar it

wget -O ubuntu-ltib-patch.tgz https://community.freescale.com/servlet/JiveServlet/downloadBody/93454-102-3-2834/ubuntu-ltib-patch.tgz

tar -xzvf ubuntu-ltib-patch.tgz

# execute the script which do the patching

ltibDir=`pwd`

cd ubuntu-ltib-patch

./install-patches.sh $ltibDir

將以上指令保存為補丁文件patch-ltib-ubuntu12.04.sh,並位置添加可執行權限:

chmod a+x patch-ltib-ubuntu12.04.sh

將該補丁腳本拷貝到ltib的安裝目錄下(本文是/imx6/L3.0.35_4.1.0/ltib_install),然後執行該腳本:

./patch-ltib-ubuntu12.04.sh

補丁安裝非常快,不過依賴網絡,如果網速不好可以按照指令分別執行。

飛思卡爾官方提供了一個在Ubuntu12.04上安裝LTIB時的一個補丁包ubuntu-ltib-patch.tgz,將補丁包解壓縮,

tar zxvf ubuntu-ltib-patch.tgz

進入ubuntu-ltib-patch目錄下,運行install-patches.sh。

./install-patches.sh

步驟七、修改LTIB配置文件

檢查/usr/include目錄下是否有sys目錄,如果沒有則執行如下命令:

cd /usr/include

sudo ln -s x86_64-linux-gnu/sys sys

執行以下命令:

$vi ltib_install/ltib/dist/lfs-5.1/gst-plugins-good/gst-plugins-good.spec

其中:

%Build

export CAIRO_CFLAGS="-I${DEV_IMAGE}/usr/include/cairo"

export CAIRO_LIBS="-L${DEV_IMAGE}/usr/lib/cairo"

export LIBS="-lcairo"

改成:

%Build

#export CAIRO_CFLAGS="-I${DEV_IMAGE}/usr/include/cairo"

#export CAIRO_LIBS="-L${DEV_IMAGE}/usr/lib/cairo"

#export LIBS="-lcairo"

3. 執行以下命令,繼續修改LTIB配置文件:

$vi ltib_install/ltib/dist/lfs-5.1/base_libs/base_libs.spec

其中:

perl -w -e '

@ARGV = grep { `file $_` =~ m,ASCII C program text, } @ARGV;

exit (0) unless @ARGV;

改成:

perl -w -e '

# @ARGV = grep { `file $_` =~ m,ASCII C program text, } @ARGV;

# exit (0) unless @ARGV;

步驟八、編譯 LTIB

進入安裝路徑下的ltib目錄,執行ltib腳本進行編譯,如下:

$cd ltib_install/ltib

$ ./ltib

但編譯過程會下載文件,因此速度比較慢,能節省時間的方法是將解壓的安裝包中pkgs文件內的各個文件(大約1G)拷貝到/opt/freescale/pkgs目錄下,這樣就能省掉很大一部分,只需要下載幾個patch,具體操作如下:

cd L3.0.35_4.1.0_130816_source/ltib

cp * /opt/freescale/pkgs/

cd /opt/freescale/pkgs

chmod a-x *

此時注意查看一下第7節的配置文件是否修改了。

然後執行LTIB的編譯指令即可,即:

./ltib

編譯一段時間之後,彈出如下的配置框:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

直接退出並保存。接著彈出下面對話框:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

選擇imx6q平臺,退出並保存,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

進入imx6q基本配置界面,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

如果採用的是i.mx6q的核心板,在board處選擇mx6q_sabresd,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

如果採用的是i.mx6dl的核心板,在board處選擇mx6dl_sabresd,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

然後選擇配置內核,選擇Configure the kernel,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

然後選擇文件系統格式,進入Target Image Generation,選擇ext2格式,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

然後返回主配置界面,向下翻,進入Package list,選擇多媒體部分,假如不需要多媒體功能可以不做此步,選擇gpu-viv-bin-mx6q,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

然後選擇多媒體插件,同樣假如不需要多媒體功能可以不做此步,進入freescale Multimedia Plugin/Codes,配置如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

然後返回上級界面,選擇gstreamer-plugin-good,同樣假如不需要多媒體功能此步可以不做。如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

逐步退出保存,完成LTIB配置,開始編譯。

編譯一段時間之後會彈出內核配置界面,需根據實際情況配置,這裡以通用功能為例配置下內核,具體步驟如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

配置SPI,進入Device Drivers->SPI support,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

配置CAN,進入Networking support->CAN bus subsystem support->CAN Device Drivers,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

配置PCIE,選擇System Type -> Freescale MXC Implementations->PCI Express support,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

取消MAX11801配置,進入Device Drivers->Input device support->Touchscreens,如下:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

退出並保存,開始編譯內核。

編譯成功,如下圖所示:

飛凌嵌入式 i.MX6 LTIB編譯-Freescale iMX6平臺

編譯完成之後可以看到編譯生成的映像及相關源碼。

在 L3.0.35_4.1.0_130816_source/ltib_install/ltib目錄下有文件系統文件夾rootfs和壓縮包rootfs.ext2.gz。

在L3.0.35_4.1.0_130816_source/ltib_install/ltib/rootfs/boot 文件夾下面,有uboot映像和內核映像:u-boot.bin 和 uImage。

在L3.0.35_4.1.0_130816_source/ltib_install/ltib/rpm/BUILD目錄下有linux內核源碼linux-3.0.35文件夾。

假如修改了內核源碼,需要重新編譯ltib,需在ltib_install/ltib目錄下執行以下命令:

$./ltib -c

步驟九、單獨編譯 uboot

首先解壓uboot源碼,執行以下命令:

$./ltib -m prep -p u-boot

然後,會在ltib_intall/ltib/rpm/BUILD下看到uboot源碼u-boot-2009 .08文件夾。

設置編譯環境變量如下:

$ export ARCH=arm

$export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-

$ export PATH=~/imx6/L3.0.35_4.1.0_130816_source/ltib_install/ltib/rpm/BUILD/u-boot-2009.08/tools:$PATH

執行編譯命令如下:

$ make distclean

如果採用的是i.mx6q的核心板,使用:

$ make mx6q_sabresd_config

如果採用的是i.mx6dl的核心板,使用:

$ make mx6dl_sabresd_config (make mx6q_sabresd_config 與 make mx6dl_sabresd_config 命令只用其一)

$ make

編譯完成後在uboot源碼根目錄下看到生成的u-boot.bin文件。

注意,uboot 源碼修改之後,每次要單獨編譯,不能用 ltib 編譯,ltib 編譯 uboot 時沒有 distclean功能。

步驟十、單獨編譯內核

設置環境變量如下(假如編譯uboot時設置了環境變量,則不用再設置):

$ export ARCH=arm

$export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-

執行編譯命令如下:

$ make distclean

$ make imx6_defconfig

$ make uImage

編譯完成之後在linux3.0.35源碼根目錄下的/arch/arm/boot/下生產uImage文件。

步驟十一、製作文件系統燒寫映像

在L3.0.35_4.1.0_130816_source/ltib_install/ltib目錄下有文件系統壓縮包rootfs.ext2.gz,需處理成 rootfs.tar.bz2,操作如下:

$ mkdir tool

$ gunzip rootfs.ext2.gz

$ sudo mount -o loop -t ext2 rootfs.ext2 tool/

$ cd tool/

$ sudo tar -jcvf ../rootfs.tar.bz2 *

卸載 tool 目錄,命令如下:

$ cd ..

$ sudo umount tool

步驟十二、燒寫編譯出的映像到開發板

將ltib_intall/ltib/rpm/BUILD/u-boot-2009 .08文件夾下的u-boot.bin,ltib_intall/ltib/rpm/BUILD/linux3.0.35/arch/arm/boot/uImage,L3.0.35_4.1.0_130816_source/ltib_install/ltib 目錄下的rootfs.tar.bz2 三個文件通過 MFG 工具燒寫到開發板,燒寫方法詳見飛凌嵌入式iMX6開發板linux用戶手冊。

燒寫成功之後,重新上電啟動。在Hit any key to stop autoboot: 3秒時,按空格,進入MX6SDL SABRESD U-Boot >選項。

MX6SDL SABRESD U-Boot > pri

超級終端出現

bootdelay=3

baudrate=115200

ipaddr=192.168.1.103

serverip=192.168.1.101

netmask=255.255.255.0

loadaddr=0x10800000

rd_loadaddr=(0x10800000 + 0x300000)

netdev=eth0

ethprime=FEC0

uboot=u-boot.bin

kernel=uImage

nfsroot=/opt/eldk/arm

bootargs_base=setenv bootargs console=ttymxc0,115200

bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serveri

p}:${nfsroot},v3,tcp

bootcmd_net=run bootargs_base bootargs_nfs; tftpboot ${loadaddr} ${kernel}; boot

m

bootargs_mmc=setenv bootargs ${bootargs} ip=dhcp root=/dev/mmcblk0p1 rootwait

bootcmd_mmc=run bootargs_base bootargs_mmc; mmc dev 3; mmc read ${loadaddr} 0x80

0 0x2000; bootm

bootcmd=run bootcmd_net

stdin=serial

stdout=serial

stderr=serial

ethact=FEC0

Environment size: 716/8188 bytes

MX6SDL SABRESD U-Boot > setenv bootcmd run bootcmd_mmc

將bootcmd =run ubootcmd-net改為bootcmd run=ubootcmd-mmc

MX6SDL SABRESD U-Boot > setenv bootargs_mmc ‘setenv bootargs ${bootargs} ip=none root=/dev/mmcblk0p1 rootwait’

將IP修改為none

MX6SDL SABRESD U-Boot > saveenv

保存環境變量

MX6SDL SABRESD U-Boot > reset

重新啟動,成功啟動。

注意事項

本次操作是在linux系統Ubuntu 12.04 LTS 版本下操作的。

其他版本系統下操作可能會有缺少庫的情況,請針對實際情況安裝需要的庫。

技術問題可聯繫飛凌嵌入式技術支持獲取幫助

相關問題答案