打印

发现MPLAB IDE+RTOS VIEWER的一个重大BUG,申请加精

[复制链接]
3749|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
headwolf_83|  楼主 | 2010-6-14 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在研究F*R*E*E*RTOS,同时看PIC32,PIC24F的官方PORT,经过分析,发现了MPLAB IDE的TOOL——RTOS VIEWER的一个大BUG,很容易误导初学者,特此立贴,申请加精。

RTOSVIEWER菜单,会列出已经创建的TASK,并列出栈顶,栈底地址,同时背后有一个“used”,这个值,简单来说就是栈顶地址减去栈底地址(注意进制转换)。
在MPLAB IDEV850以及以下版本,这个值,针对PIC24在内的16BIT的含义是,已经使用堆栈的空间大小。针对PIC32的含义是,还可以使用的堆栈空间的大小。由于PIC24在内的16BIT的堆栈方向是正方面,PIC32是负方向,MPLAB IDE并没有考虑此点。(因为used的含义,应该是已经使用的,即按照PIC24的结果显示才是比较合适的,PIC32的显示是错误的,本人先看PIC32的移植,因此被搞得一头雾水。)

PS:从精确的角度,简单的地址相减是不对的,还要考虑对齐问题,比如PIC32是按4个字节对齐,做一个定性分析,不考虑太细的几个字节的偏差。

最后一个问题,PIC18F的“used”到底是表示什么意思,是已经使用的还是还可以使用的。很简单,可以自行测试。方法大致如下:
在工具栏显示“debug”(PIC18F可能是添加带i的LKR文件,针对MCC18)时,编译文件,并用MPLAB SIM模拟。
在主文件中创建一个任务。通过断点,使xTaskCreate语句执行完毕后停止,先观察此时的used值,记录下来,随便运行一会,在观察used值。如果值增加(比如PIC24),则表示used值为已经使用掉的堆栈,如果减少(比如PIC32),则表示还可使用的堆栈空间。用这样的土办法,是最直观可可靠的。当然,最简单的方法,可以去观察堆栈生长方向的定义与PIC24一致,还是与PIC32一致。
沙发
headwolf_83|  楼主 | 2010-6-14 22:06 | 只看该作者
经过今天晚上的努力,F*R*E*E*RTOS+PIC的基础文档和基本问题基本算是摆平了。特此发贴庆祝下。:lol

使用特权

评论回复
板凳
lanyong| | 2010-6-18 09:46 | 只看该作者
值得鼓励.加油探索.

用arm的兄弟玩rtos的比较多.

使用特权

评论回复
地板
headwolf_83|  楼主 | 2010-6-20 22:54 | 只看该作者
看来感兴趣的人太少了,结贴要紧。本来还想把针对PIC18的移植文档给翻译一下,不过稍微看了一下,每个PIC18F芯片都要改一下默认的LKR,罢了,18F就不考虑搞RTOS了,劳民伤财。

使用特权

评论回复
5
e掾木| | 2010-6-21 07:45 | 只看该作者
狼头兄去不去群15689969?

使用特权

评论回复
6
headwolf_83|  楼主 | 2010-6-21 23:06 | 只看该作者
本帖最后由 headwolf_83 于 2010-6-21 23:16 编辑

刚才查了一下,这个群是PIC+RTOS的讨论群,我暂时没在这群里面哦。这阵子忙完,就进去转转。可惜现在没有第3个QQ,到时候申请一个,然后进去转转。

使用特权

评论回复
7
wuye1030| | 2010-7-17 09:34 | 只看该作者
大哥,你的网站怎么回事啊,根本进不去的,以前还常去看看,最近很久登陆不了了
我很想看看FREERTOS的一些文档,进不去也下不了。
能不能帮帮忙,发个我一份啊  282177480@qq.com

使用特权

评论回复
8
headwolf_83|  楼主 | 2010-7-18 08:57 | 只看该作者
应该可以登陆了。租赁的空间,质量一般般,偶尔进不去,多刷一下就可以了。资料太多,建议你还是上网站下。你是网通,教育网?还是什么情况。我先发一些资料给你算了,体力活啊。

使用特权

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

本版积分规则

个人签名:PIC24F/24H/32/18/16/dsPIC33/30实验板,核心模块,配套调试烧写工具。

13

主题

902

帖子

0

粉丝