首先准备好Yocto的开发环境,具体可参考 http://w.g77k.com/Yocto_Project

然后要准备好iMX6开发版的内核、模块、Firmware以及头文件。

进入开发环境的目录,用编辑器编辑sources/meta-fsl-demos/recipes-fsl/images/luna-image-gui-dev.bb,写入以下内容

include recipes-sato/images/core-image-sato.bb

IMAGE_FEATURES += "debug-tweaks dbg-pkgs dev-pkgs tools-sdk tools-debug tools-profile tools-testapps"
DISTRO_FEATURES += "pulseaudio"
WEB = "web-webkit"

SOC_EXTRA_IMAGE_FEATURES ?= "tools-testapps"

# Add extra image features
EXTRA_IMAGE_FEATURES += " \
    ${SOC_EXTRA_IMAGE_FEATURES} \
    tools-debug \
    tools-profile \
    qt4-pkgs \
"

SOC_IMAGE_INSTALL = ""
SOC_IMAGE_INSTALL_mx5 = "glcubes-demo"

IMAGE_INSTALL += " \
    ${SOC_IMAGE_INSTALL} \
    cpufrequtils \
    nano \
    packagegroup-fsl-gstreamer \
    packagegroup-fsl-tools-testapps \
    packagegroup-fsl-tools-benchmark \
    packagegroup-qt-in-use-demos \
    qt4-plugin-phonon-backend-gstreamer \
    fsl-gui-extrafiles \
    openbox \
    libav \
    git \
    "

export IMAGE_BASENAME = "luna-image-gui-dev"
编辑build/conf/local.conf,修改为以下内容
MACHINE ??= 'imx6qsabresd'
DISTRO ?= 'poky'
PACKAGE_CLASSES ?= "package_rpm"
EXTRA_IMAGE_FEATURES = "debug-tweaks dbg-pkgs dev-pkgs tools-sdk tools-debug"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS = "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K"
CONF_VERSION = "1"

BB_NUMBER_THREADS = '24'
PARALLEL_MAKE = '-j 24'

DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
LICENSE_FLAGS_WHITELIST = "commercial"
编辑build/conf/bblayers.conf,修改为以下内容
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

BBFILES ?= ""
BBLAYERS = " \
  ${BSPDIR}/sources/poky/meta \
  ${BSPDIR}/sources/poky/meta-yocto \
  \
  ${BSPDIR}/sources/meta-openembedded/meta-oe \
  \
  ${BSPDIR}/sources/meta-fsl-arm \
  ${BSPDIR}/sources/meta-fsl-arm-extra \
  ${BSPDIR}/sources/meta-fsl-demos \
"
##Freescale Yocto Release layer
BBLAYERS += " ${BSPDIR}/sources/meta-fsl-bsp-release/imx/meta-fsl-arm "
BBLAYERS += " ${BSPDIR}/sources/meta-fsl-bsp-release/imx/meta-fsl-demos "
BBLAYERS += " ${BSPDIR}/sources/meta-browser "
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-gnome "
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-networking "
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-multimedia "
#BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-xfce
进入build目录,执行命令bitbake luna-image-gui-dev,运行完成后可在tmp/deploy/images/imx6qsabresd找到luna-image-gui-dev-imx6qsabresd.tar.bz2,将其解压到SD卡上作为rootfs使用,并将之前准备好的内核模块、Firmware以及头文件包解压到对应目录。 因为GStreamer 0.10对MPEGTS的支持不佳,因此我们需要使用GStreamer 1.0,这里使用的是GStreamer 1.2.2,gstreamer-imx需要1.2或以上的版本才能编译。 先从之前编译rootfs完成后的tmp/deploy/rpm/cortexa9hf_vfp_neon下获取以下.rpm文件:
alsa-dev-1.0.27.2-r1.cortexa9hf_vfp_neon.rpm
alsa-lib-dev-1.0.27.2-r1.cortexa9hf_vfp_neon.rpm
libglib-2.0-utils-2.36.4-r0.cortexa9hf_vfp_neon.rpm
libfaad2-2.7-r1.cortexa9hf_vfp_neon.rpm
libfaad-dev-2.7-r1.cortexa9hf_vfp_neon.rpm
faad2-dev-2.7-r1.cortexa9hf_vfp_neon.rpm
faad2-2.7-r1.cortexa9hf_vfp_neon.rpm
libmad0-0.15.1b-r3.cortexa9hf_vfp_neon.rpm
libmad-dev-0.15.1b-r3.cortexa9hf_vfp_neon.rpm
使用rpm -ivh (rpm file)来安装它们(注意要按顺序安装) 下载以下文件
http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.2.2.tar.xz
http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.2.2.tar.xz
http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.2.2.tar.xz
http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.2.2.tar.xz
http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.2.2.tar.xz
依次解压它们,并进入其目录,执行以下命令 ./autogen.sh --prefix=/usr --disable-gtk-doc --disable-examples make -j6 make install 如果没有错误就说明正常安装完成了 安装gstreamer-imx (https://github.com/Freescale/gstreamer-imx) git clone https://github.com/Freescale/gstreamer-imx.git (开发板上的系统可能不能正常运行git命令,可从其网站上获取tar.gz包来使用) 使用以下命令来编译 (务必准备好内核头文件) ./waf configure --prefix=/usr --kernel-headers=/usr/src/linux/include ./waf -j6 ./waf install 没有出现错误的话即安装完成 最后可以使用 DISPLAY=:0.0 gst-launch-1.0 playbin uri=udp://225.0.0.1:2001 video-sink=imxeglvivsink 来测试GStreamer是否能正常使用硬件解码工作(需要当前局域网内有视频流服务器)。