私が知っている限り、stm32nucleoF429ziにはハードウェアMMUはありませんが、Linuxカーネル設定オプションでMMUオプションを無効にできます。
これで、stm32 F429ziでLinuxを実行できないのはなぜですか?なぜuCLinuxしか実行できないのですか? Linuxカーネル構成でMMUを無効にすると、uCLinuxは実行できますが、Linuxは実行できないのはなぜですか?
答え1
stm32f429でメインラインLinuxを簡単に実行できます。そして他のMMUがないMCUもあります。私はstm32h743でメインラインLinuxカーネルを実行しています(stm32f4のようなMMUもありません)。
しかし、唯一の問題はあなたの開発ボードに外部メモリ。
Linuxを実行するには最低4MBのRAMが必要です。。
だから、ぜひ購入することをお勧めします。STM32F429NI MCU付き評価ボード。評価ボードにはSDカードスロットもあります。
マザーボードでLinuxを実行する手順:
- ダウンロードユースタットそしてLinuxカーネルそして忙しい箱。
- u-boot および Linux カーネルとビジボックスのビルド (ビジボックスを使用した rootfs 生成用)このガイド)。
- stm32 内部フラッシュメモリにu-bootを書き込む
- SDカードの準備(20MB FATパーティションの作成と大型EXT4パーティションの作成)
- ブートファイルをsdcardにコピーします(マザーボードのdtbファイルとカーネルのzImageをfatパーティションにコピーし、rootfsをext4パーティションにコピーします)。
- u-bootコマンドを使用して、DTBとzImageをDRAMにロードしてカーネルを起動します。
便利で必要なu-bootコマンド:
- DTB と zImage をロードするには、「fatload」コマンドを使用します (例: fatload mmc 0:1 ${kernel_addr_r} zImage)。
- 「setenv bootargs」コマンドを使用して設定します。ブートパラメータたとえば、(setenv bootargs console=ttySTM0,115200n8 root=/dev/mmcblk0p2 rw rootwait loglevel=7 init=/linuxrc)。
- たとえば、「bootz」コマンドを使用してカーネルを起動します(bootz ${kernel_addr_r} - ${fdt_addr_r})。
PS:uClinuxは古くて役に立ちません。最新のメインラインLinuxカーネルが利用可能な場合は使用しないでください。