SemiDrive X9H 平台开发环境搭建 (二):Yocto 开发环境搭建

关键字 :YoctoSemiDrive

一、    前言

        在嵌入式产品开发中,通常都会定制自己公司的 Linux 发行版,所谓发行版,即根据自家产品的功能和特性定制 Bootloader、Kernel、Rootfs,最后得到这三个镜像文件。定制 Linux 发行版是一件耗时耗力、技术含量比较高的一项大工程,对于很多公司来说,是没有这个人力和财力来做这件事的,所以大多数公司会选择现有的开源工具来定制自己家的  Linux 发行版。

        Yocto Project 是一个开源的协作软件,提供模板、工具和方法帮我们创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。目的是为了使嵌入式 Linux 开发更简单,更易于在不同架构间进行移植。适合嵌入式 Linux 开发人员使用。极大地简化开发过程,因为你不用再从头裁剪一个完整的 Linux 发布版本。Yocto 项目通过 Poky来构建一个系统,并提供了一个开放源码的开发环境。

二、    Yocto 术语

术语

描述

Yocto Project

Yocto 项目使用基于 OpenEmbedded(OE) 构建主机,该项目使用 BitBake 工具构建完整的 Linux 镜像。将 BitBake 和 OE 组件组合在一起形成参考构建主机,该主机以前称为 Poky。

Poky

Poky 是 Yocto 项目的参考发行版,也是由构建系统创建的默认 Linux 发行版的名字。Poky 下载包包含 OpenEmbedded 构建系统和用于创建名字为 Poky 的样例嵌入式发行版的额外的元数据。

Metadata

 

在 BitBake 术语中,元数据包括所有命令 BitBake 如何执行构建过程的文件。BitBake 元数据包括类、菜谱(和追加文件)以及配置文件

Layers

即各种 meta-xxx 目录,将 Metadata 按层进行分类,有助于项目的维护。

BitBake

作为 OpenEmbedded 构建系统中的构建引擎,BitBake 是任务执行器和调度器。它的输入是元数据(例如配置文件和菜谱)

Recipe

菜谱,包含用于 BitBake 构建特定软件包的指令的元数据文件。通过它的指令,菜谱描述从哪里获取源代码、应用什么补丁以及如何应用这些补丁、如何构建二进制和相关文件、如何在目标系统上安装构建的结果、如何创建打包的软件包以及更多。菜谱也描述了在构建中以及运行时对其他软件包的依赖性,因而创建构建过程所需要的菜谱的逻辑层级。菜谱使用 bb 文件后缀。


举例说明:假如用烹饪一桌酒席来形容构建发行版,则 Yocto 就是餐厅名,Poky 就是厨房(以及提供作为参考搭配套餐),Metadata 就是烹饪资源(.bb 表示配方,.bbappend就是配方上的贴士,.conf 表示厨房里的管事的小组长),Layers 就是菜谱的分类(如川菜谱、粤菜谱),Bitbake 就是厨师,Output 就是得到的一桌酒席。


                                  


三、    搭建编译环境

1.  安装 Yocto 所必须的软件包

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

 

2.  安装 SemiDrive 所需要的软件包

$ sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html

$ sudo apt-get install docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils

$ sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc

$ sudo apt-get install abootimg

 

3.  安装 gcc-linaro

在提供的 Docker 环境中,目录 /tool 下有 gcc_linaro 工具

添加 PATH 路径,例如:

$ export PATH="$PATH:/tool/gcc_linaro/gcc-arm-none-eabi-7.3.1/bin:/tool/gcc_linaro/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf/bin"

$ sudo apt-get install docker-ce

 

4.  下载预下载包 yocto-downloads.tar.gz

从 SemiDrive 官网下载 yocto-downloads.tar.gz 文件,通过软件 FileZilla Client 拷贝预下载包到 HOST 上 Docker 容器映射的目录。



 

5.  解压缩至 yocto 目录中

使用 tar 命令解压 yocto-downloads.tar.gz 到 yocto 目录下,解压缩后文件夹名称为Downloads



四、    配置运行环境

1.  安装密匙

STEP1: 解压密钥压缩包,并修改文件属性为 0400.

chmod 0400 ./id_rsa*

STEP2: 启动 ssh agent

eval `ssh-agent`

STEP3: 添加 ssh key

ssh-agent bash

ssh-add id_rsa

 

2.  设置 git 账号属性

git config --global user.name chelsea

git config --global user.email chelsea.tong@wpi-group.com

git config –list

 

3. 命令解析

在 yocto 根目录下执行

$ DISTRO=cluster-qt MACHINE=x9h_ref_serdes source sd_setup.sh -b build-x9ref

支持列表:

x9h_ref:使用 LVDS 1&2 输出接口

x9h_ref_cluster:使用 LVDS 3&4 输出接口

x9h_ref_serdes:使用 LVDS 1&2 输出接口,并且使用 serdes 作为显示连接方式

x9h_ref_cluster_serdes:使用LVDS 3&4 输出接口,并且使用 serdes 作为显示连接方式

支持列表:

minimal-console

cluster-qt

两个 DISTRO 最大的区别是,cluster-qt 包含了 opengl 模块以及一些图形测试程序。

-b 命令指定编译生成文件夹名称

如果不指定的话,使用默认的 build 目录。

#执行后会进入 build-x9ref 目录

 

4.  编译代码

$ bitbake virtual/kernel

$ bitbake lk

$ bitbake safety

$ bitbake core-image-base

$ bitbake baremetal

编译完成后,生成的 Image 保存在以下目录中:

/tmp/deploy/images/

目录中包含 Linux 内核 Image, modules, dtb,bootloader,preloader,spl, system, safety 和 rootfs


 

5.  打包

cd meta-semidrive/scripts

./make_emmc_pac.sh       生成 eMMC 的 pac 包

./make_ospi_pac.sh       生成 ospi 的 pac 包



pac 文件



五、    参考文档

《SD_X9_SDK_User_Manual.pdf》
《嵌入式 Linux 系统开发-基于 Yocto Project》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论