メインコンテンツへ
開発技術組込みソフトウェアのクロス開発

組込みソフトウェア開発におけるクロス開発環境の説明として正しいものはどれか。

ア.ターゲット環境(組込みマイコン上)でコンパイルと実行の両方を行う開発方式
イ.ホスト環境(PC)でターゲット CPU 向けのコードをコンパイル(クロスコンパイル)し、ターゲット環境で実行する開発方式正解
ウ.ホスト環境とターゲット環境が同じ CPU アーキテクチャのため、コンパイルと実行を同一マシンで行う開発方式
エ.クラウド上の仮想マシンでコンパイルし、その仮想マシン上でそのまま実行する開発方式

解説

クロス開発は「日本の工場で海外向けの製品を設計・製造する」ようなもの。設計(コンパイル)は日本(ホスト PC)でやるが、完成品は海外(ターゲット マイコン)で動く。日本のルール(x86)で作った設計図をそのまま海外(ARM)では使えないため、専用の翻訳機(クロスコンパイラ)が必要。

なぜ イ が正解か

クロス開発(Cross Development)とは: ホスト環境(開発者の PC:例 x86 アーキテクチャの Windows/Linux)に、ターゲット CPU(例 ARM Cortex-M)向けのコードを生成する「クロスコンパイラ」を用意し、ホスト環境でコンパイル→生成されたバイナリをターゲット環境(組込みボード)に転送→ターゲット環境で実行・デバッグする開発方式。組込みマイコンはリソースが少なくコンパイラを動かせないため一般的。

なぜ ア は間違いか

ターゲット上でコンパイルと実行の両方を行うのはネイティブ開発。リソースの豊富なシングルボードコンピュータ(Raspberry Pi など)では可能だが、リソースの少ないマイコンでは非現実的。

なぜ ウ は間違いか

ホストとターゲットが同一 CPU アーキテクチャで同一マシンで完結するのは「ネイティブ(セルフ)開発」。クロス開発はホストとターゲットが異なるアーキテクチャを前提とする。

なぜ エ は間違いか

クラウド仮想マシンでコンパイルしてそのまま実行するのも一種のネイティブ開発。クロス開発はコンパイル先(ターゲット)が実行環境と異なることが本質。

出典: AI生成問題(学習用)