ARM Cortex-M3 系列上的 Linux

电器工程 手臂 linux 皮质-m3
2022-01-23 12:17:07

我是 ARM 的新手,对所有不同的系列有点困惑。

我需要构建一个低功耗网关(以太网、wifi ......),所以我想 cortex-M 或 cortex-R 将是一个很好的起点。但是它没有找到任何支持 linux 的开发板,比如 cortex-m3(这似乎很流行)。

似乎可能是 linuxM3 ,所以我想知道为什么mbedLPCXpresso周围没有 linux 项目

谁能给我指点我寻找的开发板,或者解释一下为什么“cortex m”+linux 没有更多的答案?

4个回答

关于 ARM Cortex-M3:

Linux 需要一个 MMU(内存管理单元)。ARM Cortex-M3 没有。在 ARM Cortex-M3 上运行主线 Linux 内核是不可能的。

但是,有一个用于 MMUless 处理器的 Linux 内核变体,称为uCLinux

Linux on M3 指南

ST 在​​ uCLinux 上的应用说明

然而,正如其他人所指出的,Linux 不太可能在 M3 上实用。它不会在没有外部 RAM 的情况下运行。我相信即使是最大的 Cortex-M3 部件也只有 1MB 闪存,因此您可能也需要额外的存储空间。

Cortex-M 不能胜任,你需要 ARM926EJ-S

搜索“Cortex-M + Linux”并没有找到很多答案,因为 Cortex-M 不是为 Linux 设计的。通常认为能够运行像 Linux 这样的完整操作系统的最不强大的 ARM 是ARM926EJ-S 系列,它使用 ARMv5 架构。这是一款经典的处理器,被广泛采用(在许多 NAS 盒、旧智能手机和 Chumby Classic 中都可以找到)并且得到了很多支持,但它的效率比它的继任者要低一些。它具有 ARMv5 架构,运行频率为几百兆赫兹。

这是你真正想要的,但你得不到

我认为,您真正想要的处理器是 Cortex-A5:旨在取代 ARM11(并且比 ARM11 更强大一点),但更节能且采用更现代的工艺。(注:与 Apple 的 A5 无关,这是一个特殊的 Cortex-A9)它于 2009 年宣布,我们正在等待“任何一天”看到硅片。尚未有人为该处理器生产通用 SoC,因为智能手机推动了市场,而功能更强大的 A9 和较旧的 ARM11 之间的市场并不引人注目。有关更多详细信息,请参阅此讨论:http: //forum.beyond3d.com/archive/index.php/t-60145.html

更强大的选项

ARM11 中的 ARMv6 效率更高一些,但功能也更强大(因此您可能看不到任何功耗预算节省)。它为 iPhone 3G 等较旧的智能手机以及 iPod Touch、Kindle 和 Zune 供电,运行频率为 500-800 MHz。最新的架构 ARMv7 是 Cortex 系列。Cortex-A8 和 -A9 以 800MHz - 1.2GHz 为最新的智能手机和平板电脑提供动力,如果您的目标是极简设计,您可能希望坚持使用更小、更慢的处理器。这些处理器的每瓦性能数非常好,但仅使用 ARMv5 部件可能更安全(并且肯定会更简单)。

请查看此站点以获取一些支持 Linux (uClinux) 的 Cortex-M3 平台:

http://www.emcraft.com/

我们在以下 Cortex-M3 MCU 上成功运行 uClinux:NXP 的 LPC1788、STmicro 的 STM32F2、Actel 的 SmartFusion,并且正在添加对更多的支持:Freescale Kinetis、STM32F4(这两个是 Cortex-M4 而不是 Cortex-M3) .

确实,Linux(包括 uClinux)需要外部 RAM 才能运行 - Cortex-M 的集成 SRAM 即使对于超小型 Linux 配置也不够大;您需要至少 4MB 的外部 RAM 才能进行实际配置。事实上,越多越好 - 如果您的应用程序需要“功能”,Linux 几乎可以支持任何东西,您不会为您添加更多而不是更少的 RAM 而感到遗憾。

对于用于外部 RAM 的特定设备,这一切都是由特定 MCU 提供的外部存储器接口定义的。STM32F 和 SmartFusion 仅支持 SRAM;您将能够以 6-7 美元的价格获得 16MB 70ns PSRAM(具有页面模式以加快操作);LPC1788 支持更快的 SDRAM 存储器;Kinetis K70 支持 DDR2(64MB 设备 5 美元)等。所有这些内存在静态时间仅消耗 uA 级别的功率。

你需要一些东西来加载可启动的 Linux,但这可以是任何东西——网络、SD 卡、SPI EEPROM、NOR 或 NAND 闪存等。

总的来说,我敢说 Linux 对于 Cortex-M3 设计来说是一个完全实用的选择。

更新

有很多对功耗敏感的应用程序,您的设备大部分时间都处于空闲状态,但是,在运行时,它需要能够执行许多使用较小的 RTOS 不容易实现的事情。安全连接、VLAN、TCP/IP 隧道、SNMP、SD 卡、USB 设备/主机、WiFI 等,以及一系列需求。

对于较小的 RTOS,其中一些功能将可用,有些则不可用,但这只是故事的一部分。我们越来越多地从客户那里看到,使用 Cortex-M3 的嵌入式设计不仅需要其中的 1 或 2 个高级功能,还需要单个设备中的许多功能。即使 RTOS 提供了设计所需的所有现成功能,将其全部塞进片上存储器也将是一个挑战。不管有没有 uClinux,我的猜测是,越来越多的基于 Cortex-M 的设计将使用外部存储器。当然,一旦你在设计中使用了外部 RAM,uClinux 就开始变得更有意义了。

关于 Cortex-M 提供的低处理能力(根据 Linux 内核的要求来衡量),作为最近的经验,我们刚刚在 Freescale K70 MCU 上启用了 uClinux。这是一个 Cortex-M4(与 Cortex-M3 加硬件 FP 和 DSP 单元相同);与高密度 RAM (DDR2) 和闪存 (NAND) 的片上接口,具有 2x8KB 片上缓存。120Mhz Cortex-M 内核,即将推出 150Mhz 部件。

Linux (uClinux) 在这个设备上运行得很好。使用“dhrystone”,我们获得了大约 50% 的性能,我们在 250Mhz 飞思卡尔 PowerPC 机器上获得了性能。快速启动、大量 RAM(TWR-K70 模块提供 128MB 的 RAM 和 256MB 的 NAND 闪存)、网络、JFFS2、帧缓冲区、SSH、HTTPD、Qt/E - 所有这些在 K70 上运行良好。总体用户体验是您在 MMU 完整微处理器上的常规“嵌入式 Linux”。

以下是在飞思卡尔 Kinetis K70 Cortex-M4 MCU 上运行的实时 uClinux 会话视频的指针:

http://www.youtube.com/watch?v=UZjJrLG9CeA

如果没有对外部存储器(RAM 和闪存)的某种支持,即使是最小的 linux 发行版(比如 uclinux)也不可能适合上述设备的内置资源。

这通常意味着暴露 32 位总线以连接额外的芯片。这就是为什么更常见的 linux 单板计算机 (SBC) 带有用于运行 linux 的兆字节范围内的额外 RAM 和闪存芯片。您列出的微控制器不提供此功能。在我看来,cortex-m0/m3 更适用于 8 位微无法(或勉强)足够的应用 - 因此您需要的所有资源都内置在芯片中。

为了更好地回答这个问题,明智的做法是分析嵌入式 linux 的需求。这通常意味着能够适应引导加载程序、内核和文件系统——当然还有运行它所需的实际用户应用程序和库。把这些加起来,你很快就会发现你可能需要几兆字节的 RAM 和闪存来做任何有用的事情。