没有合适的资源?快使用搜索试试~ 我知道了~
yocto 构建嵌入式linux系统
需积分: 20 12 下载量 141 浏览量
2023-02-22
15:48:25
上传
评论 2
收藏 6.9MB PDF 举报
温馨提示
试读
106页
yocto 构建嵌入式linux系统
资源推荐
资源详情
资源评论
iMX6Ull采用Yocto构建嵌入式Linux系统
参考:
1. IMX_YOCTO_PROJECT_USERS_GUIDE.pdf
2. Yocto Project Quick Start.pdf
3. Yocto Project Reference Manual.pdf
4. Yocto Project Development Manual.pdf
5. Yocto Project Linux Kernel Development Manual.pdf
6. Yocto Project Board Support Package Developer's Guide.pdf
1. 前言
在嵌入式产品开发过程中,需要根据不同的产品需求采用不同的解决方案,其中就包括软、硬件平
台的定制。对于基于嵌入式Linux系统的嵌入式产品,往往是找不到一个通用平台进行产品开发的,通常
来说,需要研发人员自己根据实际需求基于某一款CPU芯片或某一核心板开发自己的硬件平台。当完成
硬件平台的设计之后,就需要构建相应的嵌入式Linux系统,使之能正常运行于该硬件平台上,并完成相
应的软、硬件管理工作。
一般来说,一个完整的嵌入式Linux系统主要包括U-Boot、Linux内核、根文件系统(rootfs)。构
建嵌入式Linux系统实际上就是将U-Boot、Linux内核、根文件系统移植到所使用的硬件平台,并且根据
实际项目需要,可能会涉及到新增第三方提供的软件安装至构建的嵌入式Linux系统中,以便应用程序快
速、便捷、可靠地实现产品需求。构建嵌入式Linux系统的方法及工具有多种选择,本文采用Yocto构建
运行于NXP的imx6ull平台上的嵌入式Linux系统。 Yocto项目因为它的灵活性和易用性,在嵌入式Linux
世界中非常有名。 Yocto项目的目的是为嵌入式硬件和软件制造商创建一个Linux发行版,很多核心板厂
家都是采用Yocto构建相应的嵌入式Linux发行版。 但是,Yocto对于初学者来说,学习路线是比较陡峭
的,不容易入手,因此,该教程从Yocto基础入门篇和Yocto应用实践篇两方面入手,和大家一起分享笔
者在项目实践中采用Yocto构建嵌入式Linux系统的心得与体会,希望能够帮助大家一起掌握基于Yocto
构建嵌入式Linux系统的基本过程及方法,构建出运行于自己硬件平台的嵌入式Linux发行版。
该教程一共分为两篇:Yocto基础入门篇、Yocto应用实践篇。
第一篇,Yocto基础入门篇,主要包含了Yocto的基础概念介绍、开发环境的搭建以及如何通过
Yocto将U-Boot、Linux内核和根文件系统移植到对应的硬件平台上,构建出对应的嵌入式Linux发行
版。
第二篇,Yocto应用实践篇,主要包含了在实际项目应用中如何将构建出来的嵌入式Linux发行版下
载更新至硬件平台以及一些系统升级方法策略、如何加入第三方软件至嵌入式Linux发行版等。
另外,笔者为该文档录制了相应的配套视频,可以从各大教学视频网站搜索《iMX6ULL采用Yocto
构建嵌入式Linux系统》或者B站搜索《嵌入式孙工》https://www.bilibili.com/video/BV1nS4y1Y7Yu/
进行观看,详细视频加文档的方式能够将整个学习过程更加的轻松。同时,由于笔者能力有限,文档中
难免存在一些表达问题、语义歧义或错误的地方,欢迎大家通过我的邮箱cocoasuny@163.com给与指
正、建议和反馈。
2. Yocto基础入门篇
Yocto基础入门篇中主要基于Yocto构建嵌入式Linux发行版开发环境的搭建,Yocto的基本概念介
绍,U-Boot、Linux的移植以及根文件系统的编译,通过该篇,能够实现一个完成的嵌入式Linux发行版
的构建,并将其运行于imx6ull平台。
3. Ubuntu主机环境搭建
通常来说嵌入式Linux应用程序、嵌入式Linux驱动程序等的开发都是在Linux主机上进行的,同样
的,采用Yocto构建嵌入式Linux系统发行版,也需要在Linux主机上搭建Yocto运行环境。因此,对于
Linux主机在硬件配置、系统版本、软件包上有相应的要求。详细信息可以参见:https://www.yoctopr
oject.org/docs/current/ref-manual/ref-manual.html#detailed-supported-distros。例如:该教程中
采用的Ubuntu系统,其具体配置要求如下:
Ubuntu 20.04 (LTS)
120G以上的硬盘空间(教程中实际采用200G,如果需要编译机器学习相关的组件,至少使用
250GB以上)
内存越大越好
CPU核心数越多越好
可以直接安装在PC上安装Ubuntu系统;也可以选择在Windows下,通过虚拟机安装Ubuntu系统。
为了方便,该教程采用Windows下,通过虚拟机安装Ubuntu的方式。实际上,对于硬件配置高的PC,
在Windows下通过虚拟机安装Ubuntu的方式和直接在PC上安装Ubuntu系统,使用过程中没有任何体验
上的差别。但对于硬件配置一般的PC,建议直接安装Ubuntu系统,直接在Ubuntu系统下干活,否则,
采用虚拟机的方式,卡顿感十分强烈。
3.1. CPU核心数设置
Yocto在构建嵌入式Linux系统时,是通过一个个的Task来运行各种构建过程的,通常来说,一个
CPU核心一个时刻运行一个任务,因此,Yocto构建嵌入式Linux系统的快慢,与CPU核心数是有关系
的,CPU核心数越多,Yocto同时运行的Task越多,构建的速度就越快,所耗费的时间也就越少。对于
直接在PC上安装Ubuntu系统的情况,无需做任何配置,Ubuntu系统直接获取硬件CPU核心数。但是,
对于采用虚拟机运行Ubuntu系统的方式,需要在虚拟机上设置CPU核心数。对于采用VMWare虚拟机,
在"虚拟机设置"中设置,设置方法如下:Player > 管理 > 虚拟机设置,打开虚拟机设置页面,在"硬件 >
处理器"中设置,如下图所示:
设置完成后,可在Ubuntu中打开终端,用如下命令查看CPU核心数:
lscpu
查询结果如下入所示:
3.2. 安装必备的软件包
Yocto在构建嵌入式Linux系统过程中,需要使用到一些软件包,这些软件包需要安装在Linux主机
下。Yocto官方参考文档中列出了不同系统的Linux主机环境下需要安装的软件包,参见https://www.yo
ctoproject.org/docs/3.1/ref-manual/ref-manual.html#required-packages-for-the-build-host。对于
Ubuntu,需要安装的软件包及安装方式如下:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping
python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm
备注:安装软件包前,建议切换Ubuntu镜像源至国内源,并更新下系统。这样下载安装包会快很
多。
3.3. SSH服务开启
在嵌入式Linux系统构建过程中,需要在终端中输入控制命令以及需要修改相关的源码,同样的,为
了方便操作,并且能使用大多数熟悉Windows系统下的工具,可以在Ubuntu中安装SSH服务器,方便
在 Windows 系统下使用 SSH客户端软件与 Linux 主机系统进行文件共享和远程登录。 例如,在
Windows下通过SecureCRT终端软件登录到Ubuntu进行操作。Ubuntu中使用如下命令开启SSH服务:
sudo apt-get install openssh-server
通过上述命令安装 ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。安装完
成后,就可以在Windows下,打开SecureCRT软件,通过SSH登录Ubuntu。如下图所示:
在SecureCRT软件中新建连接,选择SSH登录方式,在Connection选项中,填入Ubuntu的主机名
称,选择SSH2协议。
SSH2选项中,在Hostname中填入Ubuntu的IP地址,端口号选择22,Friewall选择None,用户名
按照实际的Ubuntu登入用户名填写即可。SecureCRT设置完成后,在VMWare软件中启动Ubuntu,在
Windows下打开SecureCRT连接登录Ubuntu。
3.4. repo设置
要想使用Yocto构建嵌入式Linux系统发行版,需要先将Yocto相关的工具及源码下载至Ubuntu中,
而Yocto工具及源码的获取,是通过repo这个工具软件获取的。在下载Yocto相关资源之前,我们需要先
了解下repo这个工具软件。
Repo是一个构建在Git之上的工具,能够更便捷的管理工程项目中的代码存储仓库。简单来说,Git
管理单独的模块,而repo管理所有的Git库,将多个Git库组合在一起,形成一个完整的大版本。考虑如
下应用场景进一步认识Repo:
对于一个很庞大的项目,例如:Android。Android源码目录结构复杂,分为很多很多的功能
模块,如果将Android源码Init成一个Git库,那么对于某一模块的开发人员Clone代码时,需要将
所有的Android源码全部Clone下来,但实际上他只需要关注自己所负责的模块源码,其他模块的
源码该开发人员并不关心,也不需要进行维护,不利于模块化设计。因此,对于庞大的项目,将其
Init为一个Git库是不合理的,也不符合解耦的需求。
因此,对于庞大的项目,可以将其分为多个模块,每个模块单独用Git进行管理。但是,存在
一个问题,需要一个工具对项目最终代码的进行管理,即,对该项目想各个模块的Git进行管理。
repo就是实现这样一个功能。当完成repo init后,会在目录下发现一个.repo隐藏目录,进
到.repo/manifest/中,打开default.xml,里面记录着一个版本中需要哪些库的文件。实际上,在
manifest中记录了需要用到哪些git库,对于一个发型版本(Android版本)对应着repo中的一个
分支,其中的default.xml就记录着这个版本所需要的库,repo工具再根据这个文件去把取各个库
的对应分支并最终组合起来。
-----《来自网络博客》
在Yocto中,可按照如下步骤设置repo:
创建工程项目文件夹,用于存放Yocto源码、软件包、工作环境等。
获取repo。Yocto是通过repo进行版本管理的。
通过repo获取Yocto项目。
(1)创建工程项目文件夹:
/home/jason/Linux/Yocto/fsl-release-yocto
(2)获取repo:
切换至工程项目文件夹,如:/home/jason/Linux/Yocto/fsl-release-yocto,在该文件夹下使用如
下命令:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo
chmod a+x repo
由于网络原因,通过curl下载repo工具往往比较慢。可以通过清华的源进行下载,
在/home/jason/Linux/Yocto/fsl-release-yocto路劲下,使用如下命令:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+x repo
PS:对于教程中使用到的软件工具源码repo,笔者已经将其在网盘中进行分享:
链接:https://pan.baidu.com/s/1Z35nKpxfy2boLOGjZTRBiA
提取码:vkyr
4. 获取Yocto
4.1. 设置Git用户名和密码
Yocto项目采用repo管理各个git库的方式进行管理。因此,除了使用repo工具外,还需要使用到
Git。使用Git前,需要设置Git的用户名和密码:
$ git config --global user.name "Your Name" // 配置git用户名:“Your Name”
$ git config --global user.email "Your Email" // 配置git用户邮箱:“Your Email”
$ git config --list // 查看git配置信息
如:
4.2. 获取Yocto项目
切换至Yocto工作路径/home/jason/Linux/Yocto/fsl-release-yocto,然后使用如下repo命令,获取
Yocto项目(克隆NXP官方fsl-arm-yocto-bsp.git项目的imx-linux-zeus分支):
./repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus
-m imx-5.4.47-2.2.0.xml
剩余105页未读,继续阅读
资源评论
水火汪
- 粉丝: 720
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功