最小的嵌入式Linux发行版?


19

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

  • 闪存〜700Kb
  • 内存〜256Kb
  • 处理器:高端手臂皮质M3(例如STM32系列产品)

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

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

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

  • 我更新了有关WiFi的问题。WiFi是工厂客户端的一种简单运行方式。没有什么幻想,如果我适合的话也许会哭。

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

Answers:


26

我会说你在做梦。主要问题将是有限的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中获取指令)。但是,这意味着您的内核需要适合未压缩的Flash,并且734kB> 700kB。此外,.data和.bss部分总计为66kB,其他所有内容(即,内核中所有动态分配的数据结构)均接近190kB。

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

因此,是的,您将需要更多的RAM。


1
很好的答案..我很惊讶地看到裸露的Linux内核如此沉重。.我有一个后续问题。.是否有包装程序允许我将linux驱动程序与其他OS一起使用?我最喜欢Linux的是驱动程序的可用性。我接触的每个硬件都有一个Linux驱动程序,移植这些总是很痛苦的,我对Linux感兴趣的唯一原因实际上是驱动程序,因此是个问题。
弗兰克

只是关于内核启动链接的说明,我在Eric的以下帖子中看到他设法将压缩的内核映像提高到190K并在360K左右解压缩,因此从理论上讲,您可以将其放入未压缩的闪存中。更多信息:elinux.org/Linux_Tiny但是我不知道项目的状态。
Mihailo

5

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

OpenWRT是我所知的用于联网的最小,最可嵌入的Linux发行版之一,很难做到2MB以下,尤其是Wifi。

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


您可能非常正确,但是我在WiFi上进行了澄清更新了问题。.我不需要所有协议,dchp / ip和基本套接字。。– 2011
弗兰克

4

处理器上有MMU吗?如果您不这样做,则可能要看一下:http : //www.uclinux.org/,它应该使您的内核大小比所提到的小得多。它适用于某些CortexM3 Atmel芯片,因此可能适用于您的芯片。我没有用过,所以这只是推测。h,我刚刚看到这个问题已更新-好吧,如果您没有MMU(您可能没有),则不能使用“常规”内核,而需要使用ucLinux。


@mihalo感谢您为此指出uclinux +1。我问了一个问题。.谢谢你能伸出援手
弗兰克

不幸的是,我对此没有太多经验,我查看了ucLinux端口,提到的所有主板都有外部RAM。我看到的最小的内核(未压缩)是用于ADI Blackfin的-大约400KB,但不是ARM,对于ARM可能更大。对于Atmels ARM微处理器,它约为1.5 MB,它们都使用外部RAM。
Mihailo

Mihailo感谢您抽出宝贵的时间环顾四周
弗兰克(Frank)

2

如果您确实希望在小型非MMU平台中符合POSIX,则可以考虑使用NuttX作为替代方案。


3
看起来很整洁,但是可能值得包括一些与Linux相比的优缺点,以使其更完整。
PeterJ 2014年

2

我不记得具体细节,但是有一家公司生产运行uCLinux的STM32F4板,该软件是可下载的,但这些板上确实有外部RAM和闪存。

附带一提,价格太高了,除非您希望将其作为学习体验,否则最好购买Pi或Pine64。我们的公司对此进行了调查,并考虑了开发成本,因此决定,如果要使用stm32f4在嵌入式Linux上运行任何软件,从经济上讲是不可行的,仅计算零件成本即可。


-包括BOM优秀的文章,以M3 / M4运行uClinux的成本 electronicdesign.com/embedded/...
斯科特塞德曼

0

uCLinux可能会工作。但是,由于没有MMU,因此系统上没有内存保护。这意味着任何应用程序中的任何崩溃都可能导致整个系统瘫痪。如果没有MMU,也会遇到内存碎片问题。为什么不看看TI Sitaras之一?它们仍然非常便宜,您可以在它们上运行完整的Linux,这将更加灵活。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.