现在32单片机的价格已经很有优势,也让使用量开始越来越广。但是既然用32位单片机有很多复杂项目于会使用RTOS系统。但是使用RTOS也会有利也有弊。
首先要知道我们使用RTOS的用处是什么?它主要解决多任务以及实时性的问题。它把单片机模拟出来多任务同时运行的效果,实际上每一次还是只运行一个任务。所以RTOS就存在多任务切换,任务间通信,以及每个任务堆栈空间大小分配的问题。
所以可以说使用RTOS解决了一些问题,简化开发,但是也会带来一些使用的挑战。如果一不小心就容易出现程序跑死的问题。但是对于有经验得工程师会知使用多任务RTOS时候哪些地方要避免。
我在项目里面现在也基本上都会用RTOS的,我的感受就是用起来不难,用的好避免这些坑还是需要多多使用,多踩踩坑就慢慢知道哪里容易出问题。这样RTOS才能成为项目开发的利器!
引入RTOS(实时操作系统)优缺:
主要优点:
1.并发性:CPU利用率高,多任务同步执行
2.模块化:独立模块编程,方便管理和维护
3.生态化:很多软件组件是基于RTOS的,如FreeModbus,Lwip(主要还是基于操作系统应用)
4.实时行:避免了裸机一个while(1)大循环内,嵌套了一个(或多个)延时函数,导致的整个系统实时变差。
主要缺点:
1.程序运行时序可能不能精准操控,导致会出现一些异常bug,也不容易定位问题。
2.共享资源若未进行互斥锁保护,容易导致多个任务访问时变量的不确定性引起的bug
3. 容易触发段错误,导致系统崩溃: 当多任务存在申请内存,释放内存时,容易出现内存泄露,释放已释放过的旧内存等等