ARM マイクロコントローラ用の「通常の」ARM クロスコンパイルは、通常、次の 3 つまたは 4 つのステップで構成されます。
- アセンブラを使用して、スタートアップ コード (アセンブリの場合) をオブジェクト ファイルにアセンブルします。
- コンパイラを使用してソース コードをオブジェクト ファイルにコンパイルする
- リンカーを使用して、オブジェクト ファイルを .elf ファイルにリンクします。
- objcopy を使用して、.elf ファイルを .hex ファイルに変換します。
- .hex ファイルをフラッシュします
よくわからないのはステップ 4 です。OpenOCD のflash write_image
コマンドのドキュメントには、次のように記載されています。
ファイル [タイプ] は、bin (バイナリ)、ihex (Intel hex)、elf (ELF ファイル)、s19 (Motorola s19) として明示的に指定できます。mem、またはビルダー。
OpenOCD が elf ファイルをサポートしていることは明らかですが、これが実際に何を意味するのかはわかりません。これは一部のターゲットでのみサポートされていますか? JTAG/SWD アダプターは、これが機能するために何らかの objcopy のような機能を提供する必要がありますか? OpenOCDがまだelfファイルをサポートしていなかった時代からの単なる名残りですか?