我正在努力寻找一种免费/廉价的RTOS,其他人已经发现它能很好地与NXP LPC1788微控制器配合使用。我最初计划使用FreeRTOS,但它似乎不支持那个特定的处理器;最接近支持的核心是LPC1768。ThreadX可以使用LPC1788,但它的许可证将花费数千英镑。建议?
第1版:我忘了提一下,我正在使用IAR Embedded Workbench。
编辑2:我想我还应该指出,我对嵌入式编程还相当陌生,更不用说使用RTOS了。FreeRTOS和ThreadX似乎都非常相似,而且都有相当直观的API。另一个RTOS的API与这些类型的API匹配得越多,我想就越好。
编辑3:我一直在研究一个名为embOS的RTO。它看起来很专业,API看起来很好,它们支持大量的处理器/IDE组合(包括我的),我已经有一个示例项目运行良好。它不是免费的,许可证的费用约为2500欧元,但仍比threadX许可证便宜约3倍。谢谢你的建议,我觉得有点糟糕,因为我不能选择一个公认的答案。
我最初计划使用FreeRTOS,但它似乎没有支持特定的处理器
实际上,FreeRTOS支持所有带有GCC、IAR和Keil的Cortex-M3和Cortex-M4处理器。仅仅因为没有一个特定的预先配置的演示项目并不意味着它不受支持。
FreeRTOS不依赖Cortex-M内核之外的任何东西,因为定时器生成和中断控制器是内核本身的一部分。
您可以从FreeRTOS发行版中获取现有的官方LPCxx IAR演示项目,只需为芯片设置正确的链接器脚本即可重新定位。任何使用特定硬件上可能不同的IO的演示任务(用于LED输出的端口等)都可以修改为适合您的IO端口分配,或者直接删除。
例如,Atollic
有55个FreeRTOS
项目在55个不同的硬件平台上运行,所有这些项目实际上都使用相同的C源文件——只有启动文件和链接器脚本不同。
我专门评估了Cortex-M3上的FreeRTOS、embOS和Keil RTX。在三个FreeRTOS中,上下文切换时间肯定是最慢的,而RTX的上下文切换时间是最快的,但范围是5us到15us,所以除了最硬的实时应用程序之外,这可能对所有应用程序都不重要(然而,在我的情况下,情况有所不同)。
RTX当然是Keil特有的,你正在使用IAR,它的API不如embOS复杂,而且当时它在CM3上有一些bug,并且不完全支持NVIC中断优先级方案。我相信这些问题已经解决了。在API和体系结构方面,FreeRTOS可能是这三个系统中最不传统的,广泛使用了embOS和VxWorks以及类似的"传统"RTOS系统,我对此并不完全满意
embOS可以很好地与IAR及其调试器配合使用,具有一定程度的RTOS意识的调试非常有用。许可是每个开发人员/每个处理器/每个工具链,但在其他方面是免费的,并且可以在使用相同架构和工具链的许多项目中使用。Segger的支持非常好,文档也是如此,我建议对于一个有足够数量和利润的商业产品来说,这将是非常值得的
您也可以考虑eCos——这是一个更全面的解决方案,提供对USB、网络连接、文件系统等以及调度和IPC的支持。LPC1766有一个端口,它可能相对容易移植。然而,最有可能的是,您必须使用GNU工具链进行开发,这可能会影响您对现有工具(如JTAG调试器)的使用。
我知道Keil mVision IDE有NXP芯片的RTOS,它在24xx上100%工作。但是这个RTOS并不是开源的,只有IDE所有者才能使用它。
你可以尝试用任何linux内核编译RTAI。可能需要一些工作,但应该是可行的(免费的)
Linux,它的uClinux形式,在LPC1788上运行得很好。看看这个视频,例如:
http://www.youtube.com/watch?v=VTemb8P1doI
如以上评论中所述,LPC1788的内部SRAM不足以运行Linux,但是LPC1788提供了SDRAM接口,从而可以添加外部RAM。
Unison RTOS提供了与Linux相同的POSIX调用,包括一组完整的I/O调用,这些调用在freertos之类的东西中是缺失的。这种商业模式对DIY是免费的,对商业产品是基于版税的。在开始使用串行I/O和文件系统时,它往往只是竞争对手999美元价格的一小部分。详情请访问www.rowebots.com。
我正在RTOS工作,如果你愿意的话,你可以在github上找到
http://www.github.com/geppo12/YasminOS
(路径区分大小写)
作为一个简单的调度器,我将尽快引入任务优先级。我创建YasminOS是因为其他操作系统太复杂或太昂贵事实上,我开发YasminOS只有一个愿景:简单
有许多应用程序不需要非常强大的操作系统,只需要简单的调度程序。事实上,它已经在Spansion FM3架构或NXP lpc800上进行了测试(是的,也适用于cortex m0),不久的将来我将在NXP 4088上进行测试…