在 ARM 处理器上运行嵌入式 Linux 的最低配置是什么?
我需要制作一个嵌入式 ARM 设计,该设计需要完成嵌入式 Linux 可以完成的许多事情。然而,该设计对成本敏感,并且不需要大量的马力。主要是与串行接口通信。理想情况下,我想使用低端 ARM 之一。您已成功使用嵌入式 Linux 的 ARM 的最低配置是多少?
编辑:
应用程序需要某种闪存设备上的文件系统以及运行应用程序来处理数据的能力。有些应用程序可能是由我以外的其他人编写的。我还需要能够使用串行端口加载新应用程序或更新旧应用程序以接受应用程序。
当我查看其他嵌入式操作系统时,它们似乎更像是实时线程解决方案,而不是具有运行应用程序的能力。我对任何能完成工作的事情都持开放态度。
I need to produce an embedded ARM design that has requirements to do many things that embedded Linux would do. However the design is cost sensitive and does not need huge amounts of horse power. Mostly will be talking to serial interfaces. Ideally I would like to use one of the low end ARMs. What is the lowest configuration of an ARM that you have successfully used embedded Linux on.
Edit:
The application needs a file system on some kind of flash device and the ability to run applications for processing the data. Some of the applications might be written by others than myself. I also need to ability to load new applications or update old apps using the serial ports to accept the apps.
When I have looked at other embedded OSes they seem to be more of a real time threading solution than having the ability to run applications. I am open to what ever will get the job done.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为您需要在这里权衡您的成本选择。
ARM + linux 是一种选择,但您将为这样一组简单的(根据您的描述)功能付出非常高的操作开销。您不能只考虑 ARM 芯片的成本,还必须考虑很可能需要外部 RAM 以及闪存,以获得足够的空间来运行内核 + 应用程序。
注意:您可以使用非常小的内核和简单的应用程序以及具有大量内部资源的 uC 来避免外部要求。
第二种选择是更简单的微控制器和轻量级操作系统。这将降低 CPU 上的硬件成本,并且您可能可以在没有外部 RAM 或闪存的情况下运行类似的东西(取决于应用程序 RAM 和程序空间要求)
第三个选项:我实际上没有看到您的要求中有任何需要任何操作系统的内容都可以使用。基本文件系统非常简单,例如甚至有用于 8 位 PIC 的 FAT 驱动程序。与 SD 卡的接口仅需要一个 SPI 端口和最少的外部电路。
应用程序位可以很简单也可以很复杂。我围绕 PIC18 微控制器构建了系统,该系统运行 Web 服务器并允许通过简单的上传屏幕更新程序,它只是将新程序存储到 EEPROM 或闪存中,重新启动到引导加载程序并将新程序复制到内部程序存储器中。您可以设计一种无需通过协作多任务类型的架构重新启动即可实现此目的的方法。无论如何,编写应用程序的程序员都需要了解架构并访问您编写的库/驱动程序。简化此过程的最佳选择是提供尽可能简单的 API 并尝试自动化它们的构建过程。
第三个选项将是硬件方面“最便宜”的,因为处理应用程序的开销非常小,使您可以使用最少的处理能力和内存。它可能需要您进行更多的编程/软件架构,但除了学习在 Linux 范例下编写所需的设备驱动程序之外,几乎不需要您进行启动和运行 Linux 所需的研究。
与往常一样,您必须将软件开发成本包含在设备的构建成本中。如果您计划构建 10,000 多个此类设备,那么您可能最好降低硬件成本,并投入更多人力来设计软件解决方案,使硬件能够满足设计目标。如果您要构建 10 个这样的设备,如果可以降低软件开发成本,您最好在硬件上额外花费 15-20 美元。例如,带有 MMU 的 ARM,具有完整的 Linux 内核支持和可用的设备驱动程序。
我觉得你目前选择了两全其美,你付出了额外的代价来获得一个可以运行linux的uC,但这样做你也选择了一个可能是启动和运行linux最复杂的部分上,尤其是以前没有在嵌入式平台上使用过 Linux。
I think you need to weigh your cost options here.
ARM + linux is an option but you will be paying a very high operating overhead for such a simple (from your description) set of features. You can't just look at the cost of the ARM chip but must also consider external RAM which will very likely be required as well as flash to get enough space available to run the kernel + apps.
NOTE: you may be able to avoid the external requirements with a very minimal kernel and simple apps combined with a uC with large internal resources.
A second option is a much simpler microcontroller with a light weight OS. This will cut your hardware costs on the CPU and you can likely run something like this without external RAM or flash (dependent on application RAM and program space requirement)
third option: I don't actually see anything in your requirements that demands any OS at all be used. Basic file systems are very simple, for instance there are even FAT drivers out there for 8 bit PIC's. Interfacing to an SD card only requires a SPI port and minimal external circuitry.
The application bit could be simple or complex. I've built systems around PIC18 microcontollers that run a web server and allow program updates via a simple upload screen, it just stores the new program into an EEPROM or flash, reboots into a bootloader and copies the new program into internal program memory. You could likely design a way to do this without the reboot via a cooperative multitasking type of architecture. Any way you go the programmers writing the apps are going to need to have knowledge of the architecture and access to libraries / driver you write. Your best bet to simplify this is to provide as simple an API as possible and to try to automate the build process for them.
The third option will be the "cheapest" in terms of hardware as there will be very little overhead in the processing of your applications allowing you to get away with minimal processing power and memory. It likely will require some more programming/software architecting on your part but won't require nearly the research you will need to undertake to get linux up and running in addition to learning to write the needed device drivers under a linux paradigm.
As always you have to include the software development costs in the build cost of the device. If you plan to build 10,000+ of these your likely better off keeping hardware costs down and putting more man power into designing a software solution that allows that hardware to meet the design goals. If your building 10 of them, your better off spending an extra $15-20 on hardware if it can cut down on your software development costs. For example an ARM with MMU with full linux kernel support and available device drivers.
I kind of feel that your selecting the worst of both worlds at the moment, your paying extra to get a uC you can run linux on but by doing so your also selecting a part that will likely be the most complex to get linux up and running on, especially having not worked with linux on embedded platforms before.
我什至在 ARM7TDMI 上也取得了成功,所以我认为您不会遇到任何麻烦。如果您的系统要求较低,您可以使用任何类型的轻量级实时执行程序,并且获得比使用 Linux 更好的体验。
I've had success even on ARM7TDMI, so I don't think you're going to have any trouble. If you have a low-requirements system, you could use any kind of lightweight real-time executive and have a lot better experience than you would getting Linux to work.
我使用 TS-7200 大约使用 Debian GNU Linux 运行 Web 服务器和邮件服务器五年。它的频率为 200 MHz,具有 32 MB RAM,对于这些任务来说已经足够了。它内置串口。它基于ARM920T。
这对你的工作来说太过分了;我提到它是为了让你有另一个数据点。
I've used a TS-7200 for about five years to run a web server and mail server, using Debian GNU Linux. It is 200 MHz and has 32 MB of RAM, and is quite adequate for these tasks. It has serial port built in. It's based on a ARM920T.
This would be overkill for your job; I mention it so you have another data point.
几年来,我一直使用 gumstix 进行原型设计和测试,并取得了良好的效果。我不知道他们使用的处理器(我的主板上的 Intel PXA255)是否被认为是低成本的,但对于我来说,对于适应性强的设备来说,整个 Verdex 系列似乎相当便宜。
For several years I've been using a gumstix to do prototyping and testing and I've had good results with it. I don't know if the processor they are using (Intel PXA255 on my board) is considered low-cost, but the entire Verdex line seems pretty cheap to me for an adaptable device.
ucLinux 是专门为资源受限的目标而设计的,但也许更重要的是针对没有 MMU 的目标。
然而,您必须有充分的理由在这样的系统上使用 Linux 而不是小型实时执行程序。开箱即用的网络、适用于复杂硬件的现成驱动程序和协议栈以及对现有 POSIX 遗留或开源代码的支持只是其中的一部分。然而,如果您不需要它,Linux 仍然很大,您可能会浪费资源而没有真正的好处。在大多数情况下,如果您选择任何风格的 Linux,您仍然需要片外 SDRAM 和闪存。
我不会将串行 I/O 视为“复杂的硬件”,因此除非您正在运行复杂但标准的协议,否则您的简短描述似乎并不能保证使用 Linux IMO
ucLinux is designed specifically for resource constrained targets, but perhaps more importantly for targets without an MMU.
However you have to have a good reason to use Linux on such a system rather than a small real-time executive. Out-of-the-box networking, readily available drivers and protocol stacks for complex hardware and support for existing POSIX legacy or open source code are a few perhaps. However if you don't need that, Linux is still large, and you may be squandering resources for no real benefit. In most cases you will still need off-chip SDRAM and Flash if you choose Linux of any flavour.
I would not regard serial I/O as 'complex hardware', so unless you are running a complex, but standard protocol, your brief description does not appear to warrant the use of Linux IMO
我的 DLINK DIR-320 路由器内部运行 Linux。
我认识一些勤杂工,使用 Optware 对其进行刷新并连接 USB 集线器、HDD、USB 闪存等。
它是低成本的现成可用“平台”。 (如果不需要批量生产)。但也许比你需要的更强大。
此外,它甚至可以通过您的 PDA 通过网络界面进行无线配置:)
My DLINK DIR-320 router runs Linux inside.
And I know some handymen, flashing it with Optware and connecting USB-hub, HDDs, USB-flash, and much more.
It's low-cost ready for use "platform". (If you don't need mass production). But maybe more powerful than you need.
Additionally, it can be configured wirelessly via web-interface even through your pda :)