最小的嵌入式Linux发行版?

电器工程 手臂 嵌入式 linux 皮质-m3
2022-01-07 11:34:47

我想问问那里的专家.. 什么是最好的嵌入式 linux 发行版:

  • 闪存 ~ 700Kb
  • 内存 ~ 256Kb
  • 处理器:高端 arm cortex M3(例如来自 STM32 系列的产品)

所需模块: - 内核 - 基本驱动程序集:USB/网络(用于 WiFi - 无 AP,仅客户端,无安全性)/SPI/Uart/I2C

这完全有可能还是我在做梦?

这个想法是使用 5 美元的高端 CortexM3,不使用任何外部存储器,这样我就可以享受 SDIO/WiFi 等的现成驱动程序。

  • 我更新了关于 WiFi 的澄清问题。从某种意义上说,WiFi 是一个简单的、运行良好的客户端。没有什么花哨的,如果我能适应它,也许会哭。

  • 另一个更新:uCLinux 怎么样?

4个回答

我说你在做梦。主要问题将是有限的 RAM。

2004 年,Eric Beiderman设法用 2.5MB 的 RAM 启动内核,并删除许多功能。

但是,那是在 x86 上,您说的是 ARM。因此,我尝试为“多功能”平台(最简单的平台之一)构建尽可能小的 ARM 内核。我关闭了所有可配置选项,包括您正在寻找的选项(USB、WiFi、SPI、I2C),看看它会变得多小。现在,我在这里只指内核,它不包括任何用户空间组件。

好消息:它将适合您的闪存。生成的 zImage 为 383204 字节。

坏消息:使用 256kB 的 RAM,它将无法启动:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

.text 段比你可用的 RAM 大,所以内核无法解压缩,更不用说分配内存来启动,更不用说运行任何有用的东西了。

一种解决方法是使用就地执行支持 (CONFIG_XIP),如果您的系统支持(即,它可以直接从 Flash 获取指令)。但是,这意味着您的内核需要在闪存中未压缩,并且 734kB > 700kB。此外,.data 和 .bss 部分总共有 66kB,剩下大约 190kB 用于其他所有内容(即内核中所有动态分配的数据结构)。

那只是内核。没有您需要的驱动程序或任何用户空间。

所以,是的,你需要更多的内存。

海事组织,你在做梦。尤其是 USB、网络和 802.11/wifi。我只是不认为你能做到这一点,而 M3 确实是一个延伸。

OpenWRT 是我所知道的用于网络的最小和最可嵌入的 Linux 发行版之一,而且很难将其控制在 2MB 以下,尤其是 Wifi。

如果您真的想要,请尝试研究更高端的 ARM 芯片,或者使用目前在路由器中常见的 Broadcom 或 Atheros SoC。

处理器上有 MMU 吗?如果你不这样做,你可能想看看:http ://www.uclinux.org/这应该给你比提到的更小的内核大小。它适用于某些 CortexM3 Atmel 芯片,因此它可能适用于您的芯片。我没有使用它,所以这只是推测。哦,我刚刚看到这个问题已经更新了——好吧,如果你没有 MMU(你可能没有),你就不能使用“普通”内核,你需要使用 ucLinux。

如果您真的希望在小型非 MMU 平台中符合 POSIX 标准,您可能需要考虑将NuttX作为替代方案。