yocto 添加自己的应用程序
imx6ull 采用的yocto的框架来组织代码,项目中需要更换默认的BT/WIFI固件。
yocto架构默认的固件路径看这里:sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-bsp/firmware-imx/firmware-imx.inc
看软件代码,官方代码默认提供了很多的固件,这个SRC_URI就是获取的路径地址
SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
git://git.freescale.com/imx/imx-firmware.git;branch=${SRCBRANCH};destsuffix=${S}/git "
而现在我们想单独创建一个layer层,尽量不去更改系统原始的架构。所以需要单独创建一个layer层
主目录下执行source sources/poky/oe-init-build-env导入系统环境变量
yocto-layer create custom //custom 是我们自己定义的名称
这个recipe文件必须要创建否则编译时会提示找不到,同时还需要将这个meta-demo配置项添加到系统编译开关中,
在../fsl-setup-release.sh 中添加:
echo "BBLAYERS += \" \${BSPDIR}/sources/meta-demo\"" >> $BUILD_DIR/conf/bblayers.conf
进入meta-demo目录文件列表如下:可以看到有个默认的example的后缀名称,不过这个名称我们可以更改,比如我就改成了brcm
最终会生成一个demo-0.1目录与一个demo_0.1.bb,这个demo名称在create_layerg过程可以自定义。
在我的系统中,将wifi固件目录名称改为brcm43456,里面有个files文件夹存放固件相关的文件。
下面再看看brcm43456_0.1.bb配置文件:
#
# This file was derived from the 'Hello World!' example recipe in the
# Yocto Project Development Manual.
#
SUMMARY = "Simple brcm43456 firmware application"
SECTION = "brcm"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://files "
S = "${WORKDIR}/files"
do_compile() {
${CC} brcm_patchram_plus.c -o brcm_patchram_plus
}
do_install() {
install -d ${D}${base_libdir}/firmware/bcm/APM_BCM43456
cp -rfv fw_bcm43456c5_ag_apsta.bin ${D}${base_libdir}/firmware/bcm/APM_BCM43456
cp -rfv fw_bcm43456c5_ag.bin ${D}${base_libdir}/firmware/bcm/APM_BCM43456
cp -rfv bcmdhd.hcd ${D}${base_libdir}/firmware/bcm/APM_BCM43456
cp -rfv nvram.txt ${D}${base_libdir}/firmware/bcm/APM_BCM43456
install -d ${D}${bindir}
install -m 0755 brcm_patchram_plus ${D}${bindir}
}
FILES_${PN} += "${base_libdir}/firmware/bcm/*"
SRC_URI 表示存放源文件的路径
fiels是我们存放wifi固件的文件夹名称
S = "${WORKDIR}/files" 表示bitbake编译时获取的路径
添加完成之后执行bitbake brcm43456,那么在tmp/work/cortexa7hf-neon-poky-linux-gnueabi/brcm43456$目录下能看到生成的brcm43456信息了,但是固件还没有编译到rootfs文件系统,需要在core-image-base.bb中添加如下属性:
IMAGE_INSTALL_append = "brcm43456"
添加过程遇到的问题:
这个需要在brcm43456_0.1.bb添加如下属性:
FILES_${PN} += "${base_libdir}/firmware/bcm/*"
参考链接:https://blog.****.net/wince_lover/article/details/51746708
https://wiki.phytec.com/pages/viewpage.action?pageId=69501722