
一、freeRTOS比uCOS II优胜的地方:
1。 内核 ROM和耗费RAM都比uCOS 小,特别是RAM。 这在 单片机 里面是稀缺资源,uCOS至少要5K以上, 而freeOS用2~3K也可以跑的很好。
2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。
3。freeRTOS 可以有优先度一样的任务,这些任务是按 时间片 来轮流处理,uCOSII 每个任务都只有一个独一无二的 优先级 。因此, 理论 上讲,freeRTOS 可以管理超过64个任务,而uCOS只能管理64个。
4。freeRTOS 是在商业上免费应用。uCOS在商业上的应用是要付钱的。
二、freeRTOS 不如uCOS的地方:
1。比uSOS简单,任务间通讯freeRTOS只支持Queque, Semaphores, Mutex。 uCOS除这些外,还支持Flag, MailBox
2。uCOS的支持比freeRTOS 多。除 *** 作系统 外,freeRTOS只支持TCPIP, uCOS则有大量外延支持,比如FS, USB, GUI, CAN等的支持
3。uCOS可靠性更高,而且耐优化,freeRTOS 在我设置成中等优化的时候,就会出问题。
从别处看来的文章!
循环嵌套是不会跑飞程序的,合理并能成功编译的程序都能正常运行,当然要排除汇编程序一些不合理的堆栈的程序,比如移植 *** 作系统:ucos,稍稍不当就跑飞。
跑飞程序的主要因素是一些干扰,如电源的干扰:电压不稳定;电磁的干扰;静电干扰,以及一些IO口引入的信号幅值范围不当等等一些外部因素的干扰。
这是以前看到的保存一段文字,希望对你有所帮助、、
其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-—系统功能划分—— 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。
下面分别谈谈我对硬件和软件设计的感受
硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。
在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。
DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。54XX更像一个协处理器,其实高端产品5471就很好,功能完,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。
软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即 *** 作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有 *** 作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线 *** 作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。
现在发现用C构建程序的主体框架( *** 作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的 *** 作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB——C——ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。
其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。
最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透
获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。
加法运算应当也是在任务中或者在中断中,任务切换当然是执行完成后再切换,加法在切换前就执行了。如果是中断,会有进入中断的标志给OS,加法也就是在中断中执行完了。所以没必要保存A的数值,因为不可能在加法进行过程中进行任务切换。
这个问题太笼统,这个需要具体问题具体分析。多的就不说,以我的经验和一般情况说下面几点。
1、中断问题。
中断函数要写得尽量短,而且要保证是顺序执行,一定不能在中断中有等待的语句,比如在中断函数中要等待某个标识位置位while(Flag == 0);之类的语句是不可取的,因为会在中断中执行的时间过长导致长时间不能进入别的中断,程序会跑飞现象。
2、敏感代码问题。
可能某些代码的地方,我们不希望执行某部分代码过程被中断给打断,那么我们会在执行该部分代码时禁止中断,执行完毕后再开启中断。那么必须要保证该部分代码执行的时间要尽可能的短,保证短到什么程度由CPU特性决定。
3、阻塞问题。
如果应用比较大,要实现的功能和执行的任务很多,那么程序中尽量避免使用等待阻塞之类的语句,如while()判断标识位的语句,最好是用if()语句判断,如果if()条件不成立会接着往后执行,看有没有别的事情做,如果没有则再返回接着进行if判断。
4、中断优先级问题。
有些CPU支持中断嵌套,而有些CPU不支持中断嵌套,不管CPU支不支持中断嵌套,要合理安排中断优先级关系,比如51单片机中使用定时器中断刷新LED(或LCD)显示,同时串口中断接收数据,默认状态下定时器比串口中断优先级更高,那么最好把串口中断优先级设置得比定时器更高更保险一些,相比之下漏掉一个串口数据比少刷新一次LED(或LCD)后果更严重。
5、代码框架结构问题。
其实这才是最核心的问题,如果你的CPU要实现很庞大的功能,如CPU要完成串口收发、I2C数据存储、LCD显示、Flash读写、USB接口通讯、按键识别、IO口电平监测等等等等的功能,那么自己直接裸机写程序那是不太现实的,必须要选择移植一个成熟的代码架构或 *** 作系统,如选择状态机代码架构, *** 作系统如uCos、eCos、RT-thread等等。这种方法对CPU的处理速度、Flash空间、RAM空间的需求是挺高的,如果是51、52之类的单片机那就不要考虑算了。51、52之类的单片机那就根据自己的需要自己设计一个简单的代码架构即可。
UCOSII需要8K Flash
首先要移植 *** 作系统到这个单片机上,可以网上查找,一般都能找到。
移植成功后最好找成熟的例子即可,比如:《基于嵌入式实时 *** 作系统的程序设计技术》。
单片机:是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
以上就是关于free rtos和ucos的区别全部的内容,包括:free rtos和ucos的区别、单片机中,循环里面再套循环,是不是会容易把程序跑飞、设计dsp系统应考虑的问题有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)