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文件必须要创建否则编译时会提示找不到,这里也可以都选择n,然后再手动创建一个带后缀为recipe的文件夹,里面配置好bb文件即可。同时还需要将这个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/*"

添加开机启动脚本,bt与wifi需要在开机时执行启动,我的脚本如下:bt-wifi-setup.sh

#!/bin/sh
echo 0 > /sys/class/rfkill/rfkill2/state
echo 1 > /sys/class/rfkill/rfkill2/state
brcm_patchram_plus -d --enable_hci --no2bytes --tosleep 200000 --baudrate 3000000 --patchram /lib/firmware/bcm/APM_BCM43456/bcmdhd.hcd /dev/ttymxc2 &
sleep 25
rfkill unblock bluetooth
hciconfig hci0 up
sleep 2
wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf -d&

然后需要在bb文件添加拷贝:

  install -d ${D}${sysconfdir}/init.d/
  install -m 0755 bt-wifi-setup.sh ${D}${sysconfdir}/init.d/bt-wifi-setup.sh
  update-rc.d -r ${D} bt-wifi-setup.sh start 99 2 3 4 5 .

这个updae-rc.d脚本会将bt-wifi-setup.sh 拷贝到rc2.d~rc5.d目录,并以S99开头

 

 

 

 

参考链接:https://blog.csdn.net/wince_lover/article/details/51746708

                 https://wiki.phytec.com/pages/viewpage.action?pageId=69501722

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Yocto添加应用程序的例子: 1. 创建一个新的Yocto层 在您的应用程序源代码中创建一个新的Yocto层,例如myapp。 ``` mkdir -p ~/yocto/layers/myapp cd ~/yocto/layers/myapp ``` 2. 创建一个新的recipe文件 在myapp层中创建一个新的recipe文件,例如myapp.bb。 ``` touch ~/yocto/layers/myapp/recipes-myapp/myapp/myapp.bb ``` 在myapp.bb文件中添加以下内容: ``` SUMMARY = "My App" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=0123456789abcdef0123456789abcdef" SRC_URI = "git://github.com/myapp.git" SRCREV = "master" DEPENDS = "libcurl" S = "${WORKDIR}/git" do_compile() { cmake ${S} make } do_install() { install -d ${D}/usr/bin install -m 0755 ${S}/myapp ${D}/usr/bin/ } ``` 请注意,此示例recipe文件假定您的应用程序使用CMake进行构建,并将二进制文件安装到/usr/bin目录中。 3. 添加层到Yocto配置文件 打开Yocto的配置文件,例如conf/bblayers.conf,将myapp添加到BBLAYERS变量中。 ``` BBLAYERS ?= " \ /home/user/yocto/poky/meta \ /home/user/yocto/poky/meta-poky \ /home/user/yocto/poky/meta-yocto-bsp \ /home/user/yocto/layers/myapp \ " ``` 4. 构建应用程序 运行Yocto构建系统以构建应用程序。 ``` source oe-init-build-env bitbake myapp ``` 5. 添加二进制文件到根文件系统 将生成的二进制文件添加Yocto的根文件系统中。您可以在构建目录中找到二进制文件。 ``` cp ~/yocto/build/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/myapp/1.0-r0/myapp /path/to/rootfs/usr/bin/ ``` 以上是一个简单的Yocto添加应用程序的例子,实际的步骤可能会有所不同,具体取决于您的应用程序Yocto系统的配置。建议您查看Yocto文档以获取更详细的指导和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值