我们可以在 nucleo-stm32F429zi 板上运行 Linux 吗?

我们可以在 nucleo-stm32F429zi 板上运行 Linux 吗?

据我所知,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 的步骤:

  1. 下载u启动linux内核和繁忙的盒子。
  2. 构建 u-boot 和 linux 内核以及 busybox(用于使用 busybox 创建 rootfs)本指南)。
  3. 将u-boot烧入stm32内部闪存
  4. 准备好你的SD卡(创建一个20MB的FAT分区并创建一个大的EXT4分区)
  5. 将启动文件复制到 sdcard(将主板的 dtb 文件和内核的 zImage 复制到 fat 分区,并将 rootfs 复制到 ext4 分区)。
  6. 使用 u-boot 命令将 DTB 和 zImage 加载到 dram 中并启动内核。

一些有用且必要的 u-boot 命令:

  1. 使用“fatload”命令加载DTB和zImage,例如(fatload mmc 0:1 ${kernel_addr_r} zImage)。
  2. 使用“setenv bootargs”命令来设置引导参数例如(setenv bootargs console=ttySTM0,115200n8 root=/dev/mmcblk0p2 rw rootwait loglevel=7 init=/linuxrc)。
  3. 使用“bootz”命令启动内核,例如(bootz ${kernel_addr_r} - ${fdt_addr_r})。

PS:uClinux又老又没用。当你可以使用最新的主线linux内核时不要使用它。

相关内容