2416213_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2416213_ja-JP

2416213_ja-JP

i.MX8M Quad – M4コア起動手順と必要なU-Bootコマンド

私は i.MX8M Quad EVK SDカードイメージ を扱っており 、 U-Bootから Cortex-M4コア でアプリケーションの起動と実行の正しい手順を理解したい と思っています。

i.MX8M Quad用の MCUXpresso SDK をダウンロード し、 M4コア用の Hello World 例を無事にコンパイルしました。生成された.bin ファームウェアファイル も手に入りました。

U-Bootから このM4.bin ファームウェアをロードして起動するための 正しい U-Bootコマンドとブートシーケンス を教えてください 。また、M4コンソールを確認する方法も教えてください。


#imx8mq

#m4

#cortex-m4

#boot_m4

#UBoot

Yocto

#ubootコマンド


i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlusLinuxYocto ProjectRe: i.MX8M Quad – M4 Core Boot Steps and Required U-Boot Commands

こんにちは、

U-Bootコマンドの手順

1. SDカードを準備する

コンパイル済みの.binファイルをコピーしてください。ファイル(例: hello_world.bin )SDカードをEVKに挿入する前に、SDカードのFAT/ブートパーティション(パーティション1)にコピーしてください。

2. U-Bootの自動起動を停止する

ボードの電源を入れ、U-Bootプロンプトが表示されたらすぐに任意のキーを押して自動起動を中断してください。

3. オプションA — TCM実行(MCUXpresso SDKアプリに推奨)

これはMCUXpresso SDKのHello World例の標準的な方法であり、TCM at 0x1FFE0000 (エイリアス)から実行するためにリンクされています 0x7E0000

# Step 1: Load .bin from SD card FAT partition into a DDR staging buffer
u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin

# Step 2: Copy the image from DDR staging buffer into the M4's TCM
u-boot=> cp.b 0x48000000 0x7e0000 0x20000

# Step 3: (Optional but recommended) Flush data cache before starting M4
u-boot=> dcache flush

# Step 4: Release M4 from reset and start execution from TCM
u-boot=> bootaux 0x7e0000
 

以下のような出力が表示されるはずです。

## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE0305...
 
 

 

3. オプションB — DDR実行

バイナリが DDR から実行するようにリンクされている場合 (例: 0x80000000

u-boot=> fatload mmc 1:1 0x80000000 hello_world.bin
u-boot=> dcache flush
u-boot=> bootaux 0x80000000

 

重要: MCUXpresso SDKアプリをコンパイルした際に使った リンカースクリプト によって、 0x7e0000(TCM)または 0x80000000(DDR)を使用してください。デフォルトのHello Worldの例では、TCM( 0x7e0000 )が正しいターゲットです。

オプション:リソーステーブル領域をクリアする(Hello World / ベアメタル環境向け)

イメージに RPMsg リソース テーブルがない場合 (例えば、単純なhello_world.binなど)、後でLinuxを混乱させる可能性のあるゴミ値を避けるために、リソーステーブル領域をクリアしてください:

u-boot=> mw 0xb80ff000 0 4

オプション:Linuxも起動する prepare_mcore を実行する

M4を起動した後もLinuxを起動し続ける予定がある場合は、 bootaux前にこの追加コマンドを実行してください。LinuxがM4で使われるクロックを無効化しないようにクロックを設定しています:

u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin
u-boot=> cp.b 0x48000000 0x7e0000 0x20000
u-boot=> run prepare_mcore
u-boot=> bootaux 0x7e0000
 
 

M4コンソールの確認

i.MX8MQ EVKは、PCに接続すると 2つの別々のCOMポートを列挙する FTDI USBシリアルチップを使用しています。

ポート コア
小さい方の番号(例:COM9 / /dev/ttyUSB0 ) Cortex-A53(U-Boot / Linuxコンソール)
より大きな番号(例:COM10 / /dev/ttyUSB1 ) Cortex-M4コンソール
 
 
 

両ポートの設定: 115200ボー、8データビット、パリティなし、1ストップビット(115200 8N1)。

2つの別々のターミナルウィンドウを開きます(例:TeraTerm、minicom、PuTTY)。

  • ターミナル1 → 下位COMポート → U-Bootコマンド用
  • ターミナル2 → 上位COMポート → M4 Hello World出力を確認する

クイックリファレンス:環境変数によるオートメーション

利便性のためにU-Bootの環境変数として保存できます:

u-boot=> setenv m4_image hello_world.bin
u-boot=> setenv m4_loadaddr 0x7e0000
u-boot=> setenv load_m4_image "fatload mmc '${mmcdev}':'${mmcpart}' 0x48000000 '${m4_image}'; cp.b 0x48000000 0x7e0000 0x20000"
u-boot=> setenv run_m4_image "run load_m4_image; bootaux '${m4_loadaddr}'"
u-boot=> saveenv
# Then simply run:
u-boot=> run run_m4_image
 
 

主要参考資料

よろしくお願いします。


Tags (1)
No ratings
Version history
Last update:
Saturday
Updated by: