本資料は、サイバートラストが提供する「組込み Linux 開発力養成講座」のテキストを一部抜粋したものです。複製、改変、頒布などをすることはできません。
本資料に記載されている情報は予告なしに変更されることがあります。

組込みLinux開発力養成講座 テキストS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

EL

P
M
A

サイバートラスト（株） 三ツ木 祐介

はじめにE
L

P
M
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

2

自己紹介

■ 講師
● 三ツ木祐介■ サイバートラスト株式会社勤務● IoT事業本部 システム開発部所属● Yocto Projectを使用した組込み Linuxポーティングが得意■ リネオソリューションズ株式会社(出向)● Yocto Project 公式実践講座 (LFD461-JP)講師■ 個人活動EL● みつきんのブログ● CQ出版 「YoctoProjectではじめる組み込み Linux開発入門」

PMAS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

3

アジェンダ■ 本講座の目的■ ハンズオン実施環境について■ 組込みLinuxについて■ Yocto Projectについて■ 演習1: 最初のBitBake実行■ Yocto Projectのビルドシステム■ 演習2: ボードの起動■ Monoについて■ 演習3: meta-monoの組込み■ 作成したレシピの解説
■ Q&A

E
LS

PM
A

Copyright Cybertrust Japan Co., Ltd. All rights reserved.

4本講座の目的ELP
M
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

5本講座の目的■ 組込みLinuxの概要を理解する● 組込みLinuxとは● メリット / デメリット■ Yocto Projectの基本的な使い方を理解する● 基本的な考え方● レシピやレイヤの作成方法■ .NET Frameworkアプリケーションの移植方法を理解する● 移植にはMonoを使用● MonoとはE
L

P
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

6

ハンズオン実施環境について

E
LPM
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

7

ホスト環境PCに以下の環境が構築されていることが前提となります。
■ Ubuntu 22.04 （VM, Baremetal は問わない）がインストールされている PC■ Ubuntu が WiFi を経由してローカル NW にアクセスできること■ USB 2.0 Type Aが接続できること■ Ubuntu 上のシリアルコンソールが USB-Serial に接続できること

EL

P
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

8

今回使用するボード■ NXP 8MPLUSLPD4-EVK● SoC■■■■■i.MX 8M Plus Quadアプリケーション・プロセッサArm® Cortex-A53（最大1.8 GHz）x 4
Arm® Cortex-M7（最大800 MHz）x 1Cadence® Tensilica® HiFi4 DSP（最大800 MHz）
ニューラル・プロセッシング・ユニット

● メモリ
■

E
L

6 GB LPDDR4● ストレージ■■■P
M
A

32 GB eMMC 5.1
32 MB QSPI NOR
micro SDカード

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

9組込みLinuxについてE
L

P
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

10組込みLinuxのメリット
以下に組込みLinuxを使用するメリット挙げてみます。
■ さまざまなアーキテクチャ、ボードに移植されている■ オープンソースソフトウェア(OSS)との親和性が高い■ 目的に合わせたカスタマイズが容易■ カーネルのソースコードが公開されており、ドライバなどの開発が比較的容易● ただし、一から開発することは稀■ ネットの情報やマニュアルなど参照できる情報が多い

ELP
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

11

Yocto Projectについて

E
LP
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

12

Yocto ProjectとはYocto Projectは、組込み機器、IoT機器向けにカスタマイズされたLinuxを作成するための仕組みを提供するオープンソース・コラボレーションプロジェクトです。
Yocto ProjectはOpenEmbeddedと共同で開発している BitBakeとメタデータを使用することで、 ビルド環境からデバイスを起動するためのディスクイメージまでを コマンド1つで作成することができるようになっています。
後に説明するレイヤモデルを使用することで、 BSPのレイヤを差し替えることで、別のボードにアプリケーションを移植することも 比較的容易になっています。

EL

P
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

13

Yocto Projectのビルドシステム

ELP
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

14

Yocto Projectの構成要素■ Poky○ bitbake○ メタデータ○ ドキュメント■ その他ツール○○○○E
LToasterrecipetoolAutobuilder..etc

PM
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

15

PokyについてPokyとはYocto Projectが提供するリファレンスの名称となります。
リファレンスマニュアルによると Pokyの読み方は以下のようになっています。
Poky, which is pronounced Pock-ee
一節によるとお菓子のポッキーが由来となっているそうです。
Pokyには次の2つの側面があります。
■ リファレンスビルドシステムの名称■ リファレンスディストリビューションの名称

ELP
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

16

MonoについてE
LP
M
A

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

17

MonoとはMonoとは .NET Frameworkのオープンソース実装です。
Microsoftが提供していた.NET Frameworkとの違いは以下のようになります。
●●.NET Framework○ 仕様は公開○ オープンソースではない○ Windowsのみで動作
Mono○ ECMA標準のC#およびCommon Language Runtime(CLR)の仕様に基づく○ オープンソース○ Windows以外でも動作

E
L

P
M
A

現在はマイクロソフトがスポンサーとなっており、すでにオープンソースとなっている.NET
5以降のフレームワークにコードが統合されています。

S

Copyright Cybertrust Japan Co., Ltd. All rights reserved.

18

演習3: meta-monoの組込みE
LPM
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

19

ハンズオンの概要■ meta-monoの組込み■ C#アプリの作成■ カスタムレイヤの作成■ アプリのレシピ化■ ボード上で動作確認

ELPM
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

20

meta-monoの組込み講師PCからダウンロードしたデータの中にmeta-monoも含まれています。
ビルドディレクトリで下記のコマンドを実行し、meta-monoをビルド対象に追加します。
[3.1]$ bitbake-layers add-layer ../sources/meta-mono追加されたことを確認します。[3.2]$ bitbake-layers show-layers

EL

PMAS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

21

アプリのレシピ化
レシピ格納ディレクトリに移動します。[3.11]$ pushd ../sources/meta-mono-app/recipes-app/mono
hello.csをfilesディレクトリに格納します。[3.12]$ cp /tmp/hello.cs ./filesELPM
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

22アプリのレシピ化(2)講師PCから起動用スクリプトをダウンロードします。[3.13]$ wget http://DESKTOP-7DDDDD7/example/hello.in -O./files/hello.in
起動スクリプトhello.inの内容を以下に示します。
#!/bin/sh
exec @MONO@ @APP@ "$@"“@MONO@”と”@APP@“はレシピによって適切に置き換えられます。

ELPMA

S
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

23アプリのレシピ化(3)講師PCからレシピをダウンロードします。[3.14]$ wget http://DESKTOP-7DDDDD7/example/hello-cs_0.1.bb

ビルドディレクトリに移動します。[3.15]$ popdELPMAS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

24アプリのレシピ化(4)conf/local.confでhello-csパッケージを追加します。[3.16]$ echo 'IMAGE_INSTALL:append = " hello-cs"' >>./conf/local.conf
イメージをビルドします。[3.17]$ bitbake core-image-base -kELPM
AS
Copyright Cybertrust Japan Co., Ltd. All rights reserved.

25