RTOS和嵌入式Linux用于嵌入式系统编程.嵌入式Linux本身是RTOS吗?有人可以列出比较或差异吗?
什么时候应该使用轮询方法什么时候应该使用基于中断的方法?是否存在可以使用两者的情况?
有没有人对以下任何嵌入式TCP/IP堆栈有特别好(或坏)的经验?
我的需求是一个坚固,易于端口的堆栈.代码大小并不十分重要,性能相对重要,但易用性和移植非常重要.
系统可能会使用尚未确定的RTOS,但根据我的经验,大多数堆栈可以在有或没有RTOS的情况下使用.该平台很可能是ARM变体(很可能是ARM7或CM3).
不太关心将堆栈连接到以太网驱动程序,因此这不是选择中的重中之重.
我对从Linux,RTEMS等操作系统中提取堆栈并不十分感兴趣.
我也对Interniche,Micrium等商业产品不感兴趣......
堆栈不需要各种各样的铃声和口哨,不需要IPv6,我不需要任何东西(Web服务器,FTP服务器等).事实上,我可能会只使用UDP,虽然我可以设想一些优先使用TCP的方案.
我错过的其他筹码经验当然也非常有趣.
感谢您的时间和意见.
首先是我的问题的背景,具体细节如下:
我在平台上工作的公司目前是使用MPLAB IDE作为开发环境的Microchip PIC32系列.此前,我们还为同一应用编写了Microchip dsPIC和TI MSP系列的固件.固件非常简单,因为代码分为三个主要模块:设备控制,数据采样和用户通信(通常是用户PC).器件控制是通过GPIO总线和至少一部分需要SPI或I2C控制的部分组合实现的.使用定时器模块中断数据采样以保持采样频率,使用更多SPI/I2C和GPIO总线来控制采样硬件(即ADC).用户通信目前通过USB使用Microchip App Framework实现.
那么现在的问题是:鉴于我上面所描述的内容,我会考虑在什么时候为我的项目使用RTOS?目前我正在考虑将这些可能的触发点作为使用RTOS的理由:
您认为我应该考虑哪些其他方面?根据您的经验,您认为(或强迫)您考虑使用RTOS而不是仅仅在基本运行时运行代码?关于为RTOS设计/编程的其他资源的指针也非常受欢迎.
我的意思是实时操作系统如何以及为什么能够满足最后期限而不会错过它们?或者这只是一个神话(他们不会错过最后期限)?它们与常规操作系统有何不同,以及是什么阻止了常规操作系统成为RTOS?
我计划在RTOS平台上实现一个小规模的数据采集系统.(在QNX或RT-Linux系统上.)
据我所知,这些作业是使用C/C++执行的,以充分利用系统.然而,我很想知道并且想要学习一些经验丰富的人的意见,然后我盲目地进入编码行动,是否可行且更明智地用Python编写所有内容(从低级仪器通过闪亮的图形用户界面连接).如果没有,将设计的时序关键部分与"C"混合,或者用C编写所有内容,甚至不用一行Python代码.
或者至少使用Python包装C代码以便更容易地访问系统.
你建议我以哪种方式工作?如果你指出一些类似的设计案例和进一步的阅读材料,我会很高兴的.
谢谢
注1:强调QNX的原因是我们已经有一个基于QNX 4.25的数据采集系统(M300)用于我们的大气测量实验.这是一个专有系统,我们无法访问它的内部.进一步研究QNX可能对我们有利,因为6.4有免费的学术许可选项,Python 2.5附带,以及最近的GCC版本.我从未测试过RT-Linux系统,不知道它在稳定性和效率方面与QNX有多大可比性,但我知道Python系统的所有成员和非Python工具(如Google Earth)的新系统可以在大多数情况下开箱即用.
那里有没有开源的实时操作系统?我听说过实时Linux,但大多数实现似乎都是一个专有的RTOS(你需要付费),它将Linux作为一个过程运行 - 就像Ardence的RTX实时系统适用于Windows一样.
编辑:我应该澄清一点,我正在寻找RTOS来使用多核x86系列CPU.
我正在寻找最常用的5个实时操作系统.我在Google上搜索过,维基百科有一个RTOS列表,但它们是随机排列的,我也不相信所有这些都是实时运行的.
还有一个问题:我们可以包含Windows 7吗?当我们设置5个任务的优先级时,例如实时.
我正在使用RTOS编程用于RAM有限的嵌入式微控制器.
我经常将我的代码分解为短函数,但每个函数调用都需要更多的堆栈内存.每个任务都需要他的堆栈,这是项目中重要的内存消费者之一.
是否有替代方法可以使代码保持良好的组织和可读性,仍保留内存?
假设我在嵌入式环境中有一个协作调度程序.我有很多进程在运行.我想利用看门狗定时器,以便我可以检测进程何时因任何原因停止运行并重置处理器.
在没有RTOS的简单应用程序中,我总是会从主循环接触看门狗,这总是足够的.但是,在这里,有许多进程可能会挂起.什么是定期触摸看门狗定时器的清洁方法,同时确保每个过程都处于良好状态?
我想我可以为每个进程提供一个回调函数,这样它就可以让另一个监督所有进程的函数知道它仍然存在.回调将传递一个参数,该参数将是任务唯一ID,因此监督者可以确定谁正在回叫.