Skip navigation.
ホーム
BLOG-ROMMER 日高のブログ

CQエレクトロニクスセミナー 開催

「本セミナでは,以前のインターフェース掲載記事を元した単純な入門用ドライバと,オリジナルの汎用IoTドライバを教材に,組み込みLinuxにおけるドライバ開発の基本,最近のAI利用のコーディングから,デバッグ手法とパッケージングまでを習得することを目指します.開発環境はPC 1台で開発の全てをホストする,WindowsとWSLを使用します.合わせて,その上でYocto Projectを稼働させて開発するためのノウハウも伝授します」という、担当セッション紹介で告知した、ハンズオンセミナーが終了した。

https://interface.cqpub.co.jp/linux-hands-on/

- 1回目 2024年 9月27日 開催
- 2回目 2024年 12月09日 開催

開催は6回。弊社担当は 「Linuxデバイス・ドライバ開発入門」であった。
各回抽選で10名の参加であったが、毎回50名以上の応募があったという話である。

ボードとデモ画面

ハンズオンで使用の基板 Avnet MaaaxBoard 8ULP

ハンズオンセミナー環境の構成概要図

実施内容

実施した内容は次の通り。

1.当選者には事前に、別途掲載手順に従った環境構築を指示

2.ハンズオン当日は、持ち込みまたは貸与環境を使用して、講師指示と同時に演習開始

3.ハンズオン演習内容はおよそ次の通り

- 他の各種IoTドライバーのビルドとテストとデバッグ、テスト
- AI指示による Linux ローダブルモジュール・ドライバーコーディング
- コーディングしたドライバーをWSL上のクロスコンパイラでビルド後、ターゲットボードで動作確認
- 動作確認したドライバーのソースをYoctoのターゲットボード用開発環境に追加
- BitBake 実行でビルド後、ターゲットボード環境に組み込んで動作確認

準備の苦労

一番苦労したのは、素のLinux環境で開発環境構築だけでディスク300GB、2~6時間かかる Yocto のクロス開発環境をどうやって圧縮し、「ハンズオンで使える環境」にまで仕上げるかである。
特に持ち込みノートPCで実習を行うので、ある程度非力なPCでも一通り作業出来る様にする必要がある。

様々な環境で10回以上、Yocto環境構築を繰り返すうちに気づいたのは次の点である。
- WSLはデータ容量圧縮と時間短縮に有効
- WSL のImportとExportコマンドは、この様な多人数対象の演習用環境構の構築、配布、保全には強力
- Yocto SDK Bitbakeの対象ターゲットを調整することで、演習向け環境の軽量化、調整が可能

ということで事前に準備可能なハンズオン環境は予め作成しておいて、受講者全員が直ぐに立ち上げて利用可能な環境を配布し、ハンズオンでは開発環境構築は一切せずにドライバー開発とYoctoの習得や、AIコーディングに注力させることが出来た。

概況

大雑把に言って受講者は優秀で、全ての参加者が目標の最終課題を完遂、または取り組みまで進めていた。
10年ぐらい前の組み込みやIoT関連実習セミナーでは10人に1人ぐらいは脱落や受講拒否状態となることもあったが、流石に高競争立の有償セミナーなので参加者のレベルも高かった。

AI利用の個人差

以外だったのは、AI利用の個人差である。特に薄々 IoT関連の開発、技術者には生成AIの浸透が薄い様に感じていたが、今回のハンズオンでもそれが顕著だった。あきらかに IoT系技術者にとって生成AIの活用力は遅れていると確信した。Copilotレベルの生成AIを使うのが今回初めてな方がちらほら。中には使用拒否の参加者がいた。学生では常識な生成AIの活用は、技術系会社員全般にはまだまだである。

- ハンズオンの演習状況(優秀な受講者)

参加者が優秀だったのであたり前の話ではあるが、テキストや進行、指示の間違いを指摘する参加もいて、何回か助けられた。そしてYoctoで最終課題のプロジェクトをビルドして、ターゲットボードに移送して動作確認まで完了した参加者は1回目で3人、2回目は5人いた。

- コース自体の課題

コース自体自体が発案から、旧づくりで進められた感があり、毎回テーマと内容を変えて連続して参加出来る様な構成になっていたのにも関わらず、実際の参加者は抽選だったため継続しての受講者はいなかった。
予算や周知性、宣伝効果との兼ね合いもあり、個人レベルでのシリーズ受講と、広く薄く広範囲への告知・伝播という相反する目的にどの様に対応するべきなのかが今後の課題である。

考察

準備期間も含めると、このハンズオンにはほぼ半年を費やした訳だが、得たものは大きい。

- WSL の有用性

WSL の有用性を再認識した。特にYocto の様な様々なツールで構築されるソフトウェア環境が問題無く動作するのには驚いた。クロス開発では問題が無いことは体感したので、需要があるとすれば、残る課題は USBを含めた、WSL ネイティブのドライバーの開発やメンテナンスだと感じた。

ざっと調べると、WSLネイティブのカーネルやカーネルモジュール、USBドライバーのメンテナンスやビルドはなかなか大変そうである。

- AIは有効、誰でもできる、何にでも使える

あたり前の事ではあるが、AIは有用性を再確認した。
ハンズオンでは、過去のインターフェース誌記事掲載の古いLinuxドライバーなどをヒントに、予備や実験用を含めて演習課題のドライバーを今回、いくつか作成したが最終的に使用した(コーディングした)のはいずれも生成AIのコードである。

生成AIの助けはそれだけでない。カーネルスタティック組み込み済みのLED点灯制御のドライバー開発に監視て、壁打ちしながらSYSFS経由での制御のアイデアを教えて貰った。生成AIは単にコードやテキストを生成するだけではなく、過去知識を応用するアイデアも生成するのだと関心させられた。

資料

Linuxデバイス・ドライバ開発入門 ハンズオン環境インストール方法の解説
InstallingWSLEmbeddedLinux
公開先: https://ahidaka.github.io/InstallingWSLEmbeddedLinux/
ソースコード:https://github.com/ahidaka/InstallingWSLEmbeddedLinux

~i.MX8で学ぶ~ 組み込みLinuxハンズオン・セミナ 参加者向けリンク集
EmbeddedLinuxDevelopmentLinks
公開先: https://ahidaka.github.io/EmbeddedLinuxDevelopmentLinks/
ソースコード: https://github.com/ahidaka/EmbeddedLinuxDevelopmentLinks

~i.MX8で学ぶ~ 組み込みLinuxハンズオン・セミナ 参加者向けリンク集
EmbeddedLinuxDevelopmentLinks
https://github.com/ahidaka/EmbeddedLinuxDevelopmentLinks
公開先: https://ahidaka.github.io/EmbeddedLinuxDevelopmentLinks/
ソースコード: https://github.com/ahidaka/EmbeddedLinuxDevelopmentLinks

受講者用のセミナ環境を準備するための環境構築に必要な手順の説明
BuildingWSLEmbeddedLinux
ソースコード: https://github.com/ahidaka/BuildingWSLEmbeddedLinux