トレーニング > IoT&組み込み開発 >組み込みLinux開発(LFD450)
インストラクター主導のコース

Embedded Linux Development (LFD450)

このインストラクター主導のコースでは、組み込みLinux製品を開発するためのステップバイステップのフレームワークを提供します。クロスコンパイラーから始めて、開発システム、ブートローダー、カーネル、ドライバー、デバイスツリー、およびユーザースペースルートファイルシステムを構築するときに行う必要のあるすべてのさまざまなソフトウェアと決定について学習します。家庭用電化製品、軍事、医療、産業、自動車産業で使用されているものとして。 RISC-Vベースのエミュレートされた開発ターゲットを備えたハンズオンラボでは、学生はクラスでカバーされるシステムのさまざまな部分のコーディングと構築の両方を練習できます。

対象者

このコースは、組み込みLinux製品をゼロから開発する必要がある経験豊富な開発者を対象としています。
少なく読む 続きを読む
学習内容

このコースでは、カーネルをカスタム組み込みプラットフォームに適合させることに関連する重要なポイントを強調しながら、Linuxカーネルアーキテクチャについて学びます。このコースでは、プロジェクトの制約を満たすためにシステムのサイズを適切に設定する手法、組み込みプロジェクトのクロス開発環境を構築するために利用できる多数のリソース、組み込みシステムの目標と制約を満たすためにライブラリとアプリケーションのユーザー空間にデータを投入するために利用できるオプションについても説明します、 もっと。
少なく読む 続きを読む
身につく知識

このコースでは、組み込みLinuxデバイスの開発に必要なツールとテクニックを使用する準備をします。
少なく読む 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
はじめに
- 目的
- あなたについて
- The Linux Foundation
- Linux Foundationトレーニング
- 認証プログラムとデジタル バッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
- Linuxにおける変化
- ドキュメントとリンク
準備
- Linuxディストリビューション
-仮想マシンのインストール
- プロシージャ
- 演習
OSSプロジェクトでの作業方法**
- 適切に貢献するには
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴを捨てよう。敏感にならないように。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
組み込みおよびリアルタイムシステムの概念
- 基本概念
-保護の動機
-既製(OTS)
-埋め込まれた警告
-リアルタイムオペレーティングシステム
-リアルタイムLinux
-カスタムハードウェアアシスタンス
- リソース
クロス開発環境:目標とニーズ
- 前書き
-なんで難しいの?
-プロジェクトの目標に関する考慮事項
-追加のディスカッションへのリンク
- 演習
Kbuildシステム
- 前書き
-Kbuild Makefile
-Kconfigの基本
-Kconfigの検索
クロス開発ツールチェーン
-コンパイラトリプレット
-組み込みのLinuxディストリビューションクロスコンパイラ
-リナロ
-CodeSourcery
--crosstool-ng
-ビルドルート
-OpenEmbedded
-Yocto Project
-Clang
- 演習
QEMU
-QEMUとは何ですか?
-なぜQEMUを使用するのですか?
-エミュレートされたアーキテクチャ
-画像フォーマット
- 演習
uSDからのターゲット開発ボードの起動
-なぜuSDカードを使用するのですか?
-SWをuSDカードに取り込む
-なぜuSDカードを使用するのは悪い考えですか?
- 演習
イーサネットを介したターゲット開発ボードの起動
-仮想ハードウェアの使用
-開発するためのより簡単な方法
-ラボの目的
- 演習
ブートローダーとU-Boot
-ブートコードステージ
-一部のGPLBIOS
-一部のGPLブートローダー
-Das U-Boot
-U-Bootコマンドライン
-U-Boot環境
- 演習
カーネル構成、コンパイル、起動
-開発ボード用のカーネルの構成
- 演習
デバイスドライバ**
-デバイスの種類
-デバイスノード
-キャラクタードライバー
- 例
- 演習
デバイスツリー
-デバイスツリーとは何ですか?
-デバイスツリーが実行することと実行しないこと
-デバイスツリーの構文
-デバイスツリーウォークスルー
-デバイスツリーバインディング
-ブートローダーでのデバイスツリーのサポート
-ドライバーでのデバイスツリーデータの使用
-古いドライバーの共存と変換
- 演習
ターゲットファイルシステムのパッケージング
-組み込みファイルシステムの目標
-ディレクトリ:調査
-組み込みファイルシステムタイプ
ターゲットルートファイルシステムのビルド
-ラボの目的
- 演習
ルートファイルシステムの選択
-SysVinitとBusyBoxinit
--udevとBusyBoxmdev
--Systemd
-Cライブラリの選択
- 演習
uClibcの構成
-NFS用のuClibcの構成
- 演習
別の代替Cライブラリ:musl **
--muslとは何ですか?
-muslのBuildRootの構成
- 演習
BusyBoxユーティリティスイートを構築
-基本的な仕組み
-Buildrootと統合
- 演習
カーネルの監視とデバッグ
-トレースとプロファイリング
-Ftrace、Trace-Cmd、Kernelshark
-パフォーマンス
-perfの使用
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
- 演習
適切なサイズ
-頻繁に必要とされる組み込みコンポーネント
-カーネルサイズのインベントリを作成する
メモリテクノロジーデバイス(フラッシュメモリファイルシステム)
-MTDデバイスとは何ですか?
-NAND vs. NOR vs. eMMC
-ドライバーおよびユーザーモジュール
-フラッシュファイルシステム
圧縮ファイルシステム
-SquashFS
-MTDパーティションへの展開
- 演習
システムのアップグレード
-いつ更新する必要がありますか?
-更新戦略
-構築済みのアップグレードシステム
- 演習
リアルタイム拡張
-予測可能性とプリエンプションおよびロック
-PREEMPTRTプロジェクト
-リアルタイムチェックリスト
まとめと評価サーベイ
- 評価サーベイ
カーネルアーキテクチャプレビュー
-LinuxおよびUNIX
-モノリシックカーネルとマイクロカーネル
-メインカーネルタスク
-ユーザースペースとカーネルスペース
カーネルソースツリーの概要
-カーネルソースのインストールとレイアウト
-カーネルブラウザ
-カーネル構成ファイル
-なんで難しいの?パート2
カーネルプログラミングプレビュー
-コーディングスタイル
--kernel-doc
-一般的なカーネルルーチンとメソッドの使用
-エラー番号、カーネル出力の印刷、syslogd
-タスク構造
-メモリ割り当て
-ユーザーとカーネルスペース間でのデータの転送
モジュール
-モジュールとは何ですか?
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュールユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習
基本的なターゲット開発ボードのセットアップ
-ラボの目的
- 演習
uSDからのターゲット開発ボードの起動
-ラボの目的
- 演習
イーサネットを介したターゲット開発ボードの起動
-開発するためのより簡単な方法
-ラボの目的
- 演習

**
これらのセクションは、部分的にまたは全体を
オプションとして考えることができます。これらのセクションには、
背景となる参考資料、専門的なトピック、または高度なテーマが含まれています。
講師は、教室での経験や時間の制約に応じて、
これらをカバーするかしないかを選択することができます。
前提条件
このコースは、主にLinuxを組み込みシステムに適合させる方法を学ぶことに興味のある経験豊富な開発者、プログラマー、およびエンジニアを対象としています。基本的なLinuxユーティリティに精通し、Cプログラミング言語を理解し、LinuxまたはUNIX用の開発に慣れている必要があります。クラスの前に、クラス前の準備資料が提供されます。
レビュー
2022年4月
素晴らしいトレーニング、ありがとう!
2022年4月
良い仕事を続けてください!
2022年4月
すべての重要なトピックをカバーする完全な入門コース。
2022年4月
インストラクターは非常に熱心で、生徒たちがうまくいくまですべての生徒を助けました。彼は彼が話している主題について非常に深い知識を持っており、狭いトピックについて正確な答えを得るのは本当に喜びです。
2022年4月
理論と実験室のバランスが気に入りました。
2022年4月
私たちはカーネルについて知っていて、そのような深さでは完全には理解していなかった多くのことを深く掘り下げる必要がありました。
2022年4月
散在する知識を一箇所にまとめ、さらなる発展のための強力な基盤を提供します。
2022年4月
トムはすべての質問に答える素晴らしい仕事をしました。
2021年12月
素晴らしいインストラクターになっていただきありがとうございます。
2021年12月
ラボは、トピックの実践的な経験を得るために本当に役に立ちました。
2021年12月
カバーされるトピックの幅広さ、および実践的なラボ演習。
2021年12月
ラボ、およびインストラクターの個人的な経験と知識へのアクセス。私の人生で、BehanよりもLinuxのことをよく知っている人と話すことは決してないかもしれません。
2021年12月
カーネルの基礎について学び、デバイスドライバーを作成し、さまざまなコンパイラーとクロスコンパイルすることを本当に楽しんだ。 menuconfigについての素晴らしい洞察、それらの章での本当に素晴らしい経験を私に与えてくれました。
2021年12月
たくさんのラボがあり、非常に構造化されています。
2021年10月
John Bonesioのジョークは、特に毎日の初めに、気分を盛り上げるので、かなり素晴らしかったです。全体的に、彼は私が授業を受けているように感じさせませんでした、彼は学ぶことを楽しくしました。
2021年10月
インストラクターのジョン・ボネシオが好きでした。彼は面白くて、コンテンツを面白くて魅力的なものにしました。彼はまた非常に親切で、全員がラボを終えるまでいつも待っていたので、誰も取り残されませんでした。それは私を快適に感じさせました、そして私が助けを必要とするならば、彼は間違いなく彼ができる限り私を助けるために時間をかけたであろうことを私は知っていました。
2021年10月
第4章から第14章は私の中心的な関心事だったので、私に物事を進めるためのさまざまな方法/可能性を定めることは目を見張るものでした。ラボも非常に便利だったので、Uboots、カーネル、デバイスツリーなどをいじって快適に感じるようになりました。
2021年10月
デバイスツリーのセクションが一番好きでした。それは、以前私が最も混乱していた領域だったからです。
2021年7月
このコースは幅広いトピックをカバーしています。
2021年6月
ベハンは素晴らしい教師であり、この主題について非常に精通していました。
2021年6月
練習する時間はたくさんありましたが、同時にインストラクターは私が困っているときに助けてくれました。インストラクターは添付のトレーニングブックよりも知識が豊富で、情熱を持って共有しました。トレーニングは非常にうまく構成されていて、私の側であまりいじくり回す必要はありませんでした。
2021年5月
カールは非常にフレンドリーで、喜んで手伝ってくれました。彼は、組み込み Linux システムでの経験を説明することで、トレーニングを興味深く、親しみやすいものにしてくれました。
2021年5月
ライブとインストラクター主導のクラスは素晴らしいです!
2021年3月
素晴らしいクラス、Behanは素晴らしい先生です!組み込みLinux開発に飛び込む準備ができていると感じています。
2021年3月
インストラクターの知識がとても好きで、教科書の外にあるLinuxのトピックについても知識を得ました。
2021年3月
それは多くの地面をカバーしました。私は今、どこにもっと時間をかけて学習する必要があるかについて、はるかによく感じています。
2021年1月
コースのプレゼンターはこのトピックについて非常に精通しており、コースの内容を超えた優れた情報を提供してくれたと思います。私は彼の直接の、そして「私の友人」の説明、特に洞察に満ちたものを見つけました。
2021年1月
devkitスクリプトは非常に役に立ちました!長いqemuコマンドを入力するときに多くの時間を節約できました。また、$RESOURCESと$SOLUTIONを使用するのは良かったです。
2021年1月
私たちのインストラクターが資格のあるLinuxの第一人者であることが好きでした。
2021年1月
インストラクターは素晴らしかったです!