打印
[应用相关]

大家来献策, 为STM32打造一个高效精炼的RTOS

[复制链接]
楼主: airwill
手机看帖
扫描二维码
随时随地手机跟帖
61
i55| | 2014-2-23 14:51 | 只看该作者 回帖奖励 |倒序浏览
我发现一个真理,就是发帖人用的字体大小跟他的智商呈反比。

使用特权

评论回复
评论
jlwg 2014-2-23 19:42 回复TA
跟着瞎起哄的人,基本上都没啥智商,这个不用你发现,大家都知道. 
62
lxyppc| | 2014-2-23 17:55 | 只看该作者
手机党,不懂如何设置字体

使用特权

评论回复
63
lxyppc| | 2014-2-23 18:09 | 只看该作者
jlwg 发表于 2014-2-23 11:38
不是什么决定不决定,,无论你想不想用,只要用操作系统,就会有tick这么简单的道理还需要辩来辩去,真是无聊. ...

tick的作用是周期性的产生一次调度请求以及为一些超时机制服务
如果不需要,去掉有何不可
rtos的实时性是靠他的抢占机制来实现的
与tick的存在与否没有太多关系

使用特权

评论回复
64
jlwg| | 2014-2-23 18:41 | 只看该作者
lxyppc 发表于 2014-2-23 18:09
tick的作用是周期性的产生一次调度请求以及为一些超时机制服务
如果不需要,去掉有何不可
rtos的实时性是 ...

实时性是一个相对性的概念,和蜗牛比起来,前后台系统也可以说有实时性.非抢占的rtos ,相对来说,也具有一定的实时性.这篇主题,包括我一直谈论的,也是rtos以及由此引出的tick,没有说tick和实时性的关系.我只是说,只要叫一个操作系统,都会有tick,晓得不? 话说回来,你们研究把tick去掉,那其实研究出来的结果,就不是rtos了.没有tick,确实相对来说,也就没有多少实时性了.你们议论那个话题,有一些工程经验,做过一些项目的,就会知道,都是废话.

使用特权

评论回复
65
lxyppc| | 2014-2-23 20:27 | 只看该作者
实时性不是相对概念,是绝对概念
和你说的正好相反
如果蜗牛说他一直爬,无论风雨两天一定能爬到树顶,那么蜗牛是实时的
如果兔子说他一分钟能跑到终点,但是遇到吹风要跑两分钟,遇到下雨要跑三分钟,那么尽管他很快,但是兔子不是实时的

使用特权

评论回复
评论
jlwg 2014-2-23 20:54 回复TA
别把简单的东西说的复杂了,实时性,简短一句话概括,,就是在预想的时间内完成预定的任务.这比您的那个比喻明晰多了. 
66
i55| | 2014-2-23 20:56 | 只看该作者
jlwg 发表于 2014-2-23 18:41
实时性是一个相对性的概念,和蜗牛比起来,前后台系统也可以说有实时性.非抢占的rtos ,相对来说,也具有一定 ...

“没有tick,确实相对来说,也就没有多少实时性了.”这种蠢话你也说得出来?

使用特权

评论回复
评论
jlwg 2014-2-23 21:03 回复TA
这么正确的话倪都理解不了?不可想象. 
67
dbayj| | 2014-2-23 21:00 | 只看该作者
coos不是针对M系列ARM做的么。

使用特权

评论回复
68
i55| | 2014-2-23 23:01 | 只看该作者
那个不敢正面回复只敢用点评回复我的狗苟蝇营的东西你自己撸出高潮吧,爷没空搭理你。

使用特权

评论回复
评论
jlwg 2014-2-24 07:06 回复TA
弱智,看看你自己说了几个有价值的技术话题,点评你,是不想在你身上浪费文字. 
69
rtgchym| | 2014-2-24 09:07 | 只看该作者
jlwg 发表于 2014-2-20 12:21
除非您的裸机功能完全基于中断的前后台方式,否则,裸机系统,别谈事实性.非前后台的裸机,哪有事实性可言. ...

确实如此。。

使用特权

评论回复
70
airwill|  楼主 | 2014-2-24 19:59 | 只看该作者
今天又翻出 CoOS 看看里面的任务结构

typedef  struct TCB
{
    OS_STK      *stkPtr;                /*!< The current point of task.       */
    U8          prio;                   /*!< Task priority.                   */
    U8          state;                  /*!< TaSk status.                     */
    OS_TID      taskID;                 /*!< Task ID.                         */

#if CFG_MUTEX_EN > 0
    OS_MutexID  mutexID;                /*!< Mutex ID.                        */
#endif
   
#if CFG_EVENT_EN > 0
    OS_EventID  eventID;                /*!< Event ID.                        */
#endif
   
#if CFG_ROBIN_EN >0
    U16         timeSlice;              /*!< Task time slice                  */
#endif
   
#if CFG_STK_CHECKOUT_EN >0
    OS_STK      *stack;                 /*!< The top point of task.           */
#endif
   
#if CFG_EVENT_EN > 0
    void*       pmail;                  /*!< Mail to task.                    */
    struct TCB  *waitNext;  /*!< Point to next TCB in the Event waitting list.*/
    struct TCB  *waitPrev;  /*!< Point to prev TCB in the Event waitting list.*/
#endif

#if CFG_TASK_SCHEDULE_EN == 0
        FUNCPtr     taskFuc;
        OS_STK      *taskStk;
#endif  

   
#if CFG_FLAG_EN > 0
    void*       pnode;                  /*!< Pointer to node of event flag.   */
#endif   

#if CFG_TASK_WAITTING_EN >0
    U32         delayTick;              /*!< The number of ticks which delay. */
#endif   
    struct TCB  *TCBnext;               /*!< The pointer to next TCB.         */
    struct TCB  *TCBprev;               /*!< The pointer to prev TCB.         */

}OSTCB,*P_OSTCB;

见 CoOS V1.1.5 的 OsTask.h
   

使用特权

评论回复
71
myxiaonia| | 2014-2-25 13:27 | 只看该作者
airwill 发表于 2014-2-22 15:58
是啊, 真是一个新奇的想法. 也是我从来都没有想到过的.

再有: to 51 楼.

说到键盘扫描这个问题,实际用通信的方法更加合适嘛

使用特权

评论回复
72
airwill|  楼主 | 2014-2-25 17:14 | 只看该作者
myxiaonia 发表于 2014-2-25 13:27
说到键盘扫描这个问题,实际用通信的方法更加合适嘛

键盘扫描,用通信的方法:
    没有看明白, 不知道可否抽空铺开来详细讲讲?

使用特权

评论回复
73
lxyppc| | 2014-2-26 09:33 | 只看该作者
持续关注,帖子都到后面了
c语言的裁剪和配置看着就是一堆的宏定义,没有向导看着就晕

使用特权

评论回复
74
wallace_tsou| | 2014-2-26 09:42 | 只看该作者
本帖最后由 wallace_tsou 于 2014-2-26 11:12 编辑

RTOS的tick確實可以省去。只要CPU有支援Timer事件的方法就可行。
在CPU設計時,以往因為RTOS是以C語言為主的設計。
而C語言對於CPU中斷的支援必須經過組合語言,造成不易對CPU新增事件處理。
所以時間性延遲只好由RTOS的tick功能來做。

但...ARM Cortex系統打破了一個限制,使得RTOS是可能完全脫離tick這個功能。
那就是C語言可以直接支援中斷函式。
這個功能使得事件設定可以由C語言直接完成。
也就是可以設計一個Timer具有多個user可以自由設置的中斷向量。
可以對每一個中斷設定等於Timer Counter相等時產生事件。
因為User可以自由設定時間及事件。
這樣RTOS完全不再使用tick管理。
也就是tick管理已由新硬體Timer去做。

觀念上可行,再下來的問題是,有多少RTOS功能要硬體化。
因為RTOS管理方式並沒有完全確定。所以目前CPU設計並未放入。
若是RTOS已經確定管理的功能,就可能出硬體化tick能力的CPU。
於是tick這個功能就移到硬體,不會再出現於軟體中。

以STM32系統來說,新的RTOS用的system_tick和Timer Compare類似。
故可以利用32位元TIM2的CC1~CC4做為無tick RTOS的模擬。
以實用來看,只有4個事件是太少了。而以Cortex M的sys_tick延伸Compare功能在硬體上應是不難。相信不久將來會出現。

使用特权

评论回复
75
outstanding| | 2014-2-26 10:10 | 只看该作者
不错 期待

使用特权

评论回复
76
wakojosin| | 2014-2-26 11:19 | 只看该作者
如果有好想法就直接动手做 带起大家的脚步就行了 这种讨论时最不利于你的创新

使用特权

评论回复
77
myxiaonia| | 2014-2-27 14:36 | 只看该作者
airwill 发表于 2014-2-25 17:14
键盘扫描,用通信的方法:
    没有看明白, 不知道可否抽空铺开来详细讲讲? ...

我的意思是用个小mcu把这些慢速的基本io都搞定了,然后主mcu和他通信来获得这些事件,不知你觉得如何

现在lpc都出2、3个核的mcu,我觉得确实挺合适啊

使用特权

评论回复
78
csxyll| | 2014-2-27 14:48 | 只看该作者
谁能来比较一下各种操作系统的优劣哦 大家觉得FreeRTOS做产品怎么样 有木有用过做产品的了

使用特权

评论回复
79
airwill|  楼主 | 2014-2-28 12:07 | 只看该作者
myxiaonia 发表于 2014-2-27 14:36
我的意思是用个小mcu把这些慢速的基本io都搞定了,然后主mcu和他通信来获得这些事件,不知你觉得如何

现 ...

道理上可以, 不过现在 MCU 这么强大了,还要拖个小 MCU 做协处理,某些场合不太接受吧

使用特权

评论回复
80
myxiaonia| | 2014-3-1 12:45 | 只看该作者
airwill 发表于 2014-2-28 12:07
道理上可以, 不过现在 MCU 这么强大了,还要拖个小 MCU 做协处理,某些场合不太接受吧 ...

mcu越强大,这种基本io如此慢,问题就更明显

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则