我需要制作一个嵌入式ARM设计,它要求做很多嵌入式Linux的工作。然而,该设计对成本敏感,并且不需要大量的马力。主要是与串行接口交谈。理想情况下,我想使用其中一个低端ARM。您成功使用嵌入式Linux的ARM的最低配置是什么。
编辑:
应用程序需要在某种闪存设备上使用文件系统,并且能够运行应用程序来处理数据。有些应用程序可能是由我自己编写的。我还需要能够使用串行端口加载新应用程序或更新旧应用程序以接受应用程序。
当我查看其他嵌入式操作系统时,他们似乎更像是一个实时线程解决方案而不是运行应用程序的能力。我愿意完成任务。
答案 0 :(得分:13)
我认为你需要在这里权衡你的成本选择。
ARM + linux是一个选项,但是您将为这么简单(从您的描述)的一组功能支付非常高的操作开销。你不仅可以看看ARM芯片的成本,还必须考虑很可能需要的外部RAM以及闪存以获得足够的空间来运行内核+应用程序。
注意:您可以通过非常小的内核和简单的应用程序与具有大量内部资源的uC相结合来避免外部需求。
第二种选择是具有轻量级OS的更简单的微控制器。这将降低CPU上的硬件成本,你可以在没有外部RAM或闪存的情况下运行这样的东西(取决于应用程序RAM和程序空间要求)
第三种选择:我实际上并没有在您的要求中看到任何要求使用任何操作系统的内容。基本文件系统非常简单,例如,甚至有8位PIC的FAT驱动程序。连接到SD卡只需要一个SPI端口和最少的外部电路。
应用程序位可能简单或复杂。我建立了围绕PIC18微控制器的系统,它运行Web服务器并通过简单的上传屏幕允许程序更新,它只是将新程序存储到EEPROM或闪存中,重新启动到引导加载程序并将新程序复制到内部程序存储器中。您可以设计一种方法来实现此目的,而无需通过协作式多任务类型的体系结构重新启动。无论你如何编写应用程序的程序员都需要了解架构和访问你编写的库/驱动程序。最简单的方法是尽可能简单地提供API并尝试自动化它们的构建过程。
第三个选项在硬件方面将是“最便宜的”,因为处理应用程序的开销很小,可以让您以最小的处理能力和内存来逃避。它可能需要你更多的编程/软件架构,但除了学习在linux范例下编写所需的设备驱动程序外,几乎不需要你需要进行的研究来启动和运行linux。
与往常一样,您必须将软件开发成本包含在设备的构建成本中。如果您计划构建10,000多个这样的产品,那么最好不要降低硬件成本,并将更多的人力投入到设计允许硬件满足设计目标的软件解决方案中。如果您构建其中的10个,如果能够降低软件开发成本,最好还是花15到20美元购买硬件。例如,具有完整Linux内核支持的MMU的ARM和可用的设备驱动程序。
我觉得你现在选择了两个世界中最糟糕的一个,你付出额外的费用来获得你可以运行linux的uC但是这样你也选择了一个可能是最复杂的部分来获得linux启动并运行,特别是之前没有在嵌入式平台上使用过Linux。
答案 1 :(得分:2)
我甚至在ARM7TDMI上也取得了成功,所以我认为你不会有任何麻烦。如果你有一个低要求的系统,你可以使用任何类型的轻量级实时执行,并且比让你工作的Linux有更好的经验。
答案 2 :(得分:2)
我使用TS-7200大约五年来使用Debian GNU Linux运行Web服务器和邮件服务器。它是200 MHz并具有32 MB的RAM,并且非常适合这些任务。它内置了串行端口。它基于ARM920T。
这对你的工作来说太过分了;我提到它,所以你有另一个数据点。
答案 3 :(得分:2)
ucLinux专门针对资源受限制的目标而设计,但对于没有MMU的目标来说可能更为重要。
但是,您必须有充分的理由在这样的系统上使用Linux而不是小型的实时执行程序。开箱即用的网络,可用于复杂硬件的现成驱动程序和协议栈以及对现有POSIX传统或开源代码的支持也许是一些。但是,如果你不需要它,Linux仍然很大,你可能会浪费资源而没有真正的好处。在大多数情况下,如果你选择任何风格的Linux,你仍然需要片外SDRAM和Flash。
我不认为串行I / O是“复杂硬件”,因此除非您运行复杂但标准的协议,否则您的简要说明似乎并不保证使用Linux IMO
答案 4 :(得分:2)
几年来,我一直在使用a gumstix进行原型设计和测试,并且我已经用它做了很好的结果。我不知道他们使用的处理器(我的主板上的Intel PXA255)是否被认为是低成本的,但对于适应性强的设备,整个Verdex系列对我来说似乎相当便宜。
答案 5 :(得分:0)
我的DLINK DIR-320路由器在内部运行Linux。
我知道一些杂工,用Optware闪存并连接USB集线器,硬盘驱动器,USB闪存等等。
这是低成本的即用型“平台”。 (如果你不需要大规模生产)。但也许比你需要的更强大。
此外,它甚至可以通过您的pda通过网络界面进行无线配置:)