搜索
bottom↓
回复: 17

ucos2.52怎么移植IAR EWAVR?

[复制链接]

出0入0汤圆

发表于 2008-3-29 09:15:22 | 显示全部楼层 |阅读模式
ucos2.52怎么移植IAR EWAVR?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-3-29 09:21:05 | 显示全部楼层
2.76版或最新的版本

出0入0汤圆

 楼主| 发表于 2008-3-29 10:31:43 | 显示全部楼层
IAR有两个堆栈,CSTACK和RSTACK,切换任务,堆栈是怎么处理的?

出0入0汤圆

发表于 2008-3-29 11:01:26 | 显示全部楼层
ucos的官方网站上有现成的。

出0入0汤圆

发表于 2008-3-29 12:04:17 | 显示全部楼层
IARAVR工作方式和51工作有点类似

当CALL 函数的时候,系统硬件会自动压栈函数返回地址,这就是所谓的硬件栈RSTACK,指针用SP

当产生调用后进入子函数,函数需要用到到寄存器和变量,这些变量就需要保护,那么IAR就用了一个模拟栈来保存这些东西,这就是所谓的CSTACK,指针用Y

给每个任务分配一段RAM,这个RAM区域,前一段给软堆栈用,后半段给硬件用,硬件栈的尺寸设置大小就要看函数调用的层数了,若果你函数最大调用层数是32层,那么硬件栈的尺寸大于32X2 =64Bytes就可以了

出0入0汤圆

发表于 2008-3-29 12:21:07 | 显示全部楼层
标记!

出0入0汤圆

 楼主| 发表于 2008-3-29 17:39:03 | 显示全部楼层
不太好移植。还是先在LM3S上ucos,又现成移植好的。

出0入0汤圆

 楼主| 发表于 2008-3-30 13:32:01 | 显示全部楼层
移植UCOS比想象中的要难。

出0入0汤圆

 楼主| 发表于 2008-3-30 19:12:16 | 显示全部楼层
总算是有点眉目了。

UCOS的中断写法太过麻烦,且IAR实现裸中断也不方便。

不如将OSCtxSw代替OSIntCtxSw合并,不区分中断切换和任务中切换。
这样移植起来也方便些,中断写法也方便(中断写法不必用汇编),只不过多占用一些堆栈。

出0入0汤圆

发表于 2008-3-30 20:14:06 | 显示全部楼层
你用的是EWAVR的什么版本不可以写裸中断?
EWAVR 4.20A以后都可以写裸中断,写法如下:
__nested __interrupt void your_interrupt_function()

试试!

出0入0汤圆

 楼主| 发表于 2008-3-30 20:25:57 | 显示全部楼层
多谢楼上。__nested __interrupt是嵌套中断。

__nested __interrupt void your_interrupt_function()
不是裸中断,是中断中快速开中断,类似GCC的INTERRUPT()宏。

出0入0汤圆

发表于 2008-4-2 09:14:02 | 显示全部楼层
是不是要求中断编译器不要自动保护寄存器器?
如果是这样那你可以这样
#pragma type_attribute=__raw
__interrupt void Your_Interrupt_Handler(void)
{

}

__raw __interrupt void Your_Interrupt_Handler(void)
{

}

试试!

出0入0汤圆

 楼主| 发表于 2008-4-2 09:21:35 | 显示全部楼层
多谢楼上。

出0入0汤圆

发表于 2008-4-2 11:47:16 | 显示全部楼层
试试楼上的楼上的方法 测试测试

出0入0汤圆

发表于 2008-4-2 11:52:11 | 显示全部楼层
好像报错的 兄弟

出0入0汤圆

发表于 2008-4-2 12:03:59 | 显示全部楼层
【9楼】 korren   是南昌的吗?我现在也在南昌

出0入0汤圆

 楼主| 发表于 2008-4-2 12:05:00 | 显示全部楼层
IAR中断写法:SIGNAL(),INTERRUPT(),SIGNAL_NAKED(),INTERRUPT_NAKED()
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=963867&bbs_page_no=1&bbs_id=1000

第一次移植UCOS2,ATMEGA16,一个歌曲实验
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=963191&bbs_page_no=2&bbs_id=1000

出0入0汤圆

发表于 2008-4-2 13:09:23 | 显示全部楼层
to sciencehero,
我是南昌的,现在在广东.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 19:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表