yocto 系统构建与应用系统移植
1 yocto系统构建
文章目录
前言
在一些情况下,如果公司没有能力做底层硬件PCB的封装设计和产品外观,需要用人家的硬件,那么就需要在上面进行二次开发,市面上有不少的硬件公司或团队提供二次开发网关的服务,我的工作中就遇到过这种情况,硬件用别人的,自己在上面开发软件,下面记录整理下在yocto环境盒子上进行c/c++二次开发的大致内容,供后面回顾和参考。
一、为什么要提前构建yocto环境
为什么软件开发人员要提前构建yocto环境原因可能有很多,我觉得最重要的一个原因是下面的这个,在yocto环境构建后进行应用程序移植之前,在没有拿到硬件之前,可以先自己构建yocto环境,提前进行应用程序的移植,等硬件来了之后,将构建好的结果直接拿到上面去测试,缩短工期。
二、构建步骤
1.构建主机环境要求:
ubuntu18.04的系统,100G以上磁盘
iot@iot:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
iot@iot:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 1.3M 1.6G 1% /run
/dev/mapper/ubuntu--vg-lv--0 195G 9.4G 175G 6% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda2 974M 80M 827M 9% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
2.构建主机上安装基本的主机包
可以构建一个shell脚本yocto_preinstall.sh:
#!/bin/bash
sudo apt install gawk wget git diffstat unzip -y
sudo apt install texinfo gcc build-essential -y
sudo apt install chrpath socat cpio -y
sudo apt install python3-pip python3-pexpect -y
sudo apt install xz-utils debianutils iputils-ping -y
sudo apt install python3-git python3-jinja2 libegl1-mesa -y
sudo apt install libsdl1.2-dev pylint3 xterm python3-subunit -y
sudo apt install mesa-common-dev zstd liblz4-tool -y
sudo apt install makeinfo gawk chrpath -y
sudo apt install libfile-find-rule-perl-perl -y
sudo apt install python-minimal -y
执行脚本进行安装。
3.获取repo
3.1 创建工程项目文件夹
iot@iot:~/imx6ull-iot-smart-car$ mkdir -p fsl-release-yocto/imx-linux-zeus
iot@iot:~/imx6ull-iot-smart-car$ mkdir -p fsl-release-yocto/imx-linux-zeus
iot@iot:~/imx6ull-iot-smart-car$ ls
fsl-release-yocto yocto_preinstall.sh
3.2 地址获取
iot@iot:~/imx6ull-iot-smart-car/fsl-release-yocto/imx-linux-zeus$ export https_proxy=http://127.0.01:15777 http_proxy=http://127.0.01:15777
iot@iot:~/imxull-iot-smart-car/fsl-release-yocto/imx-linux-zeus$ curl http://commondatastorage.googleapis.com/git-repo-domnloads/repo -0 repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 46937 100 46937 0 0 136k 0 --:-- --:-- --:-- 136K
3.3 添加可执行权限
iot@iot:~/imx6ull-iot-smart-car/fsl-release-yocto/imx-linux-zeus$ chmod 777 repo
iot@iot:~/imx6ull-iot-smart-car/fsl-release-yocto/imx-linux-zeus$ ls
repo
4.获取yocto项目
4.1在线获取
./repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml
中间出现需要设置 git账号的问题,按提示设置你自己的email和username
git config --global user.email “xx@xx.com”
git config --global user.name “xxx”
然后重新执行上面的命令 ./repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml
然后用ls -a命令查看,如果成功出现了 .repo文件夹就说明成功了。
4.2 获取yocto项目
iot@iot:~/imx6ull-iot-smart-car/fsl-release-yocto/imx-linux-zeus$ ./repo sync
等到执行成功到100%,如下图:
5.编译配置yocto项目
5.1 在imx-linux-zeus目录执行如下命令进行配置:
DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source ./imx-setup-release.sh -b build
出现下面页面:
选择q,退出阅读,选择y,接受协议
成功配置,并自动切换到build目录
5.2 编译
fsl-release-yocto/imx-linux-zeus/build$ bitbake imx-image-multimedia
开始从网上下载源码包进行构建,网络良好情况下大约需5-10小时,一般都是晚上让机器工作一晚上,第二天早上再看结果。
总结
以上就是今天要讲的内容,本文主要介绍了需要构建yocto系统环境的场景以及如何构建yocto的环境,方便嵌入式软件工程师在没有硬件的情况下进行开发。