yocto

1、Ubuntu18.04.4

2、$ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev

$ sudo apt-get install  python-pysqlite2

$ sudo apt-get install  curl

3、$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

4、vi ~/.bashrc
export PATH=~/bin:$PATH

5、git
添加 git config
$ git config --global user.name “Your Name”
$ git config --global user.email “Your Email”
查看 git config -list

1、NXP
https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX?tab=In-Depth_Tab

2、https://source.codeaurora.org/external/imx/imx-manifest/tree/README?h=imx-linux-warrior

3、L4.19.35

4、下载
$ cd ~
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-warrior -m imx-4.19.35-1.1.0.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

repo init -u https://source.codeaurora.org/external/imx/imx-manifest
-b imx-linux-zeus -m imx-5.4.47-2.2.0.xml

repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

repo sync

5、执行编译
$ DISTRO=fsl-imx-xwayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-xwayland

Qt
$bitbake imx-image-full

清理重新编译
//bitbake imx-image-full -c cleanall

$bitbake -c cleansstate imx-image-full

6、编译Qt5的交叉编译工具链
$ bitbake meta-toolchain-qt5 // 生成带有qt5的交叉编译工具链

7、编译时可添加的参数

-c fetch		先下载后编译

-c deploy		将编译生成的镜像,部署到rootfs

8、U-Boot
首次编译出的uboot,是SD卡启动的

U-Boot配置文件,在local.conf中设置UBOOT_CONFIG

$ MACHINE=imx8mqevk bitbake -c deploy u-boot-imx


echo "UBOOT_CONFIG = \"emmc\"" >> conf/local.conf

9、ERROR: Task (/home/touchvision/imx-yocto-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-graphics/opencv/opencv_4.0.1.imx.bb:do_compile) failed with exit code ‘1’

10、 $ bitbake -c cleansstate imx-image-full
$ bitbake -c clean imx-image-full

$ bitbake imx-image-full --runall=fetch
$ bitbake imx-image-full

11、重新开始
$ source setup-environment build-xwayland
$ bitbake imx-image-full

12、kernel源代码目录 链接文件 /tmp/work/imx8qmmek-poky-linux/linux-imx/4.14.98-r0/git

/tmp/work-shared/imx8mqevk/kernel-source

13、u-boot源代码目录

/tmp/work/imx8qmmek-poky-linux/u-boot-imx/2018.03-r0

14、单独编译kernel u-boot

注意:
我们修改了kernel或者u-boot的源代码,直接运行bitbake fsl-image-qt5是不会编译我们修改的源代码的。所以就需要我们单独编译源代码。


例子:
$ cd ~/imx8qm/imx-4.14.98-2.0.0_ga //进入工程目录
$ source setup-environment build-xwayland-imx8qmmek-xen //加载编译环境

配置menuconfig
$ bitbake -c menuconfig -v linux-imx

kernel:
$ bitbake -c compile -f -v linux-imx
$ bitbake linux-imx -c compile_kernelmodules -f -v
$ bitbake -c deploy -f -v linux-imx

u-boot:
$bitbake -c compile -f -v u-boot-imx
$bitbake -c deploy -f -v u-boot-imx

bitbake -c cleanstate u-boot

tmp/deploy/images/imx8mqevk/Image

### Yocto Project 使用指南与构建系统介绍 Yocto Project 是一个开源协作项目,旨在帮助开发者创建针对嵌入式设备的定制化 Linux 系统[^5]。该项目提供了灵活的工具集和开发环境,支持全球范围内的嵌入式开发人员通过共享技术、软件堆栈以及最佳实践来生成自定义的 Linux 镜像。 #### 1. Yocto Project 的核心组件 Yocto Project 主要依赖两个关键组件:BitBake 和 OpenEmbedded-Core。 - **BitBake**: 这是一个构建引擎,负责解析并执行构建任务中的指令文件(称为 Recipe)。它是整个构建流程的核心驱动器[^3]。 - **OpenEmbedded-Core**: 提供了一组基础配方(Recipe),用于描述如何构建特定的软件包或功能模块。这些配方构成了系统的底层框架。 #### 2. 开发环境设置 为了使用 Yocto Project 创建目标镜像,需要完成以下准备工作: - 下载 Poky 项目源码库,这是 Yocto Project 的参考实现部分[^4]。 - 设置编译所需的主机环境变量(如 `MACHINE` 定义目标硬件平台)。 - 初始化构建目录并通过运行脚本(例如 `oe-init-build-env`)激活工作空间。 #### 3. 编译过程概览 启动实际构建之前,需指定所需的目标镜像类型(比如最小根文件系统或者完整的桌面环境)。随后调用命令触发 BitBake 工具处理对应的任务列表直至生成最终产物——即适合部署到目标硬件上的二进制映像文件。 如果遇到任何错误提示,则应参照官方文档或其他社区资源排查问题;必要时升级相关依赖项版本号以匹配当前使用的发行版需求。 以下是简单的 Python 脚本来演示如何自动化某些重复性的操作步骤: ```python import os def setup_yocto_environment(): poky_url = "https://git.yoctoproject.org/git/poky" clone_command = f"git clone {poky_url}" init_env_script = "./oe-init-build-env" try: # Clone the repository if it doesn't exist locally. if not os.path.exists("poky"): print(f"Cloning Poky from {poky_url}...") os.system(clone_command) # Initialize environment by sourcing script within Python subprocess call. activate_cmd = f"./{init_env_script}; echo $BUILD_DIR" result = os.popen(activate_cmd).read().strip() if result.startswith("/"): # Assuming absolute path returned upon success. print("Environment initialized successfully.") else: raise Exception("Failed initializing build env.") except Exception as e: print(e) if __name__ == "__main__": setup_yocto_environment() ``` 此代码片段展示了如何克隆 Poky 源码仓库,并初始化必要的构建环境以便进一步开展具体项目的开发活动。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40723768

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值