原创 学习protothread(-)

2008-12-10 09:19 4099 13 10 分类: MCU/ 嵌入式
protothread的C文件:https://static.assets-stash.eet-china.com/album/old-resources/2008/12/9/bc839c3c-9f6a-4a26-8778-2d694a5b488e.rar
参考链接:http://www.mesnet.com.cn/htm/article_view.asp?id=2581
参考链接的文件中源程序有缺少部分,已经添加,如有错误请给我留言,谢谢!

用该文件理解protothread的运行方式。

系统要求:

TaskA实时任务,30 ms内响应,运行时间<20 ms;
TaskB实时任务,200 ms内响应,运行时间<40 ms;
TaskC非实时任务,响应时间无要求,运行时间>30 ms。

设计思路:

  将TaskB和TaskC分成若干步,每步运行时间不超过10 ms(这个时间可视系统需求而定,例如TaskA若为40
ms内响应,则每步可扩至20
ms)。任务以3个Protothread的方式运行。首先执行TaskA,在TaskA执行完成1次后,释放执行权限,让TaskB和TaskC执行。
TaskB或TaskC在每执行1步之前检查运行时间,一旦发现30
ms内不够执行1步时,阻塞运行,让出执行权限给TaskA。同样,TaskB和TaskC的调度关系也类似,先运行TaskB,完成时释放执行权限,让
TaskC执行;TaskC在每执行1步之前检查运行时间,若发现200 ms内不够执行1步时,阻塞运行,让出执行权限重新交给TaskB。

软件模拟晶振为12M,但定义的定时中断不是12M晶振的1ms,是22.1184M晶振的1ms。
使用keil C 6.23a 默认编译选项。编译后:Program Size: data=45.0 xdata=0 code=1279
断点位置:
226e7059-aa6d-4511-9fdd-df2bfe35bcc3.jpg
软件仿真性能分析:
点击开大图
TaskA
点击开大图
TaskB1
点击开大图
TaskB2
点击开大图
TaskB3
点击开大图
TaskC1
点击开大图
TaskC2
点击开大图
TaskC3
点击开大图
TaskC4
点击开大图


软件模拟晶振为12M,定时中断为12M晶振的1ms。
模拟运行分析:

任务程序运行时刻运行时长30ms计数器200ms计数器
Ta0.49518.4521818
Tb119.0979.8562810
Ta29.19818.4521828
Tb247.7329.8562839
Ta57.79518.4731957
Tb376.3569.8562967
Ta86.40318.4741885
Tc1105.0379.8562895
Ta115.05918.47619114
Tc2133.6819.83428123
Ta143.70318.45218142
Tc3162.3039.85628152
Ta172.55518.4741919
Tb1191.1089.8342828
Ta201.17118.4521847
Tb2219.7059.8562857
Ta229.76618.4521875
Tb3248.3059.8562885
Ta258.3518.47419104
Tc4277.0069.85629114
Ta287.19518.45218132
Tc1305.7959.85628142
Ta315.81718.47419161
Tc2334.4399.83428170
Ta344.69318.4521818
Tb1363.2249.8562828
Ta373.28918.4741947
Tb2391.8459.8342856
Ta401.90818.4521875
Tb3420.4479.8562885
Ta430.49418.45218103
Tc3449.1289.85628113
Ta459.14818.47419132
Tc4477.779.85629142


问题:
1.按照源文件需要12字节的RAM:
  2    +   2   +   2   +     2     +     2     +        1       +       1=12 TaskAPt+TaskBPt+TaskCPt+SemRunTaskA+SemRunTaskB+Task0TimeCounter+Task1TimeCounter
而我的Task0TimeCounter,Task1TimeCounter均为int型,再加上我定义的变量,多出的RAM数量为:45-8*2-1*2-14=13个,用到哪里了呢?












文章评论1条评论)

登录后参与讨论

用户377235 2014-6-5 11:13

看了您的简历~和freecode!大赞~

想问问~您在dwt上有很深理解,想问问sadwt肿么样?有没有实践过写成m文件呢

 

用户1370039 2011-8-4 21:17

可以运行,正在学习,多谢了

tengjingshu_112148725 2009-9-18 11:40

是你的图没有传上网站,你可以看看图片的属性 file:///Z:/lyz/lyzwavelet.png

用户1359682 2009-5-14 23:17

这是因为本网站屏蔽了!不知道为什么,可能论坛的服务器不够用了!

tengjingshu_112148725 2009-5-4 19:50

看不到图
相关推荐阅读
用户132023 2011-05-12 13:00
AVR GCC中 ISR 与 SIGNAL 的关系
在 interrupt.h中(Copyright (c) 2007)有:#if defined(__DOXYGEN__)/** \def ISR(vector [, attributes])    \...
用户132023 2011-05-12 12:47
透析avr-gcc的中断处理原理
引用自http://home.eeworld.com.cn/my/space.php?uid=49577&do=blog&id=36499作者 : Etual邮箱 : Etual@16...
用户132023 2010-12-16 12:34
口腔溃疡
口腔溃疡名曰口糜也,脏腑积热则口糜。    实证:        心热亦口糜,口疮多赤;        肺热亦口糜,口疮多白;        脾胃湿热亦口糜,疮布满口而糜烂;        膀胱移热于...
用户132023 2010-12-16 09:45
贡献祖传秘方:白芷汤一出,痔疮尽消无形
痔疮,中医认为是由于湿热而成,虽有内、外痔之别,理则一也。用白芷等活血化瘀之药外洗,内外痔同治,痔消无形。方用:白芷    川芎    青黛    红花。白芷,味辛,可外治各疮痈痔漏,消毒生肌;川芎,...
用户132023 2010-11-19 12:50
脉象十三种:(录自《中医学新编》P51,广州中医学院编,1972年版)
1、浮脉:[脉象]用轻指力按就可察觉清楚,稍微重按则略微减弱,但没有空虚的感觉。[主病]表证。浮而有力为表实,无力为表虚。2、沉脉:[脉象]用轻指力力按觉察不到,重指力按才能清楚。[主病]里证。有力为...
用户132023 2010-11-19 12:26
寒咳汤
此贴仅本人爱好而已,放在此处作为备份。请不要使用。对治少阴、太阴两经并证王牌方——打遍天下无敌手那方子是:《伤寒论》的麻黄附子细辛汤、通脉四逆汤等方的合剂,是笔者数年前精心开发的伤寒通用方:寒咳汤:麻...
我要评论
1
13
关闭 站长推荐上一条 /2 下一条