搜索
bottom↓
回复: 12

我的ucos在用IAP下载到mega32后为什么不工作了?

[复制链接]

出0入0汤圆

发表于 2006-2-18 10:55:34 | 显示全部楼层 |阅读模式
我的ucos在用IAP下载到mega32后为什么不工作了?

我在bootload程序中用到了定时器0,ucos负责任务切换的是定时器2。哪位高手分析一下会是什么问题。谢谢!!

出0入0汤圆

发表于 2006-2-18 11:36:03 | 显示全部楼层
直接烧录时UCOS行不行?



可以读出FLASH里面的内容对比看看IAP是否正确。

出0入0汤圆

 楼主| 发表于 2006-2-18 11:41:35 | 显示全部楼层
直接烧录ucos工作正常

出0入0汤圆

 楼主| 发表于 2006-2-18 11:45:57 | 显示全部楼层
读出的IAP没有变化,而且开机可以提示下载,也能下载

出0入0汤圆

发表于 2006-2-18 11:52:52 | 显示全部楼层
是对比编译UCOS生成的BIN文件,不是HEX文件。

读出FLASH里面的内容和BIN文件对比,看看数据是否匹配。

出0入0汤圆

 楼主| 发表于 2006-2-18 11:56:53 | 显示全部楼层
好,我试试 谢谢!

出0入0汤圆

 楼主| 发表于 2006-2-18 12:07:20 | 显示全部楼层
HJJourAVR您好!我将读出的文件存为bin格式,然后与烧录的bin文件对比,并没有变化。是不是我的程序本身有问题,是否与堆栈设置有关?

出0入0汤圆

发表于 2006-2-18 12:17:05 | 显示全部楼层
确认IAP的最后动作是 JMP 0x0000H 而且 中断向量位于应用程序库区 ?

出0入0汤圆

 楼主| 发表于 2006-2-18 12:21:17 | 显示全部楼层
我的quit程序如下:

void quit(void)

{

   uart_putchar('O');

   uart_putchar('K');

   uart_putchar(0x0d);

   uart_putchar(0x0a);

   while(!(UCSRA & 0x20)); //等待结束提示信息回送完成

   MCUCR = 0x01;

   MCUCR = 0x00;            //将中断向量表迁移到应用程序区头部

//   RAMPZ = 0x00;            //RAMPZ清零初始化

   asm("jmp 0x0000
");                //跳转到Flash的0x0000处,执行用户的应用程序

}

出0入0汤圆

 楼主| 发表于 2006-2-18 12:24:19 | 显示全部楼层
下载后能显示任务1的初始画面,但是不能任务切换

出0入0汤圆

 楼主| 发表于 2006-2-18 13:28:44 | 显示全部楼层
HJJourAVR 您好!我测试了几次发现当我配置BOOTRST=1时,即复位从程序区运行,ucos工作是正常的,当我配置BOOTRST=0时ucos就不切换了。ucos是用IAP下载的.想请教HJJourAVR这会是什么造成的。谢谢!

出0入0汤圆

发表于 2006-2-18 13:40:45 | 显示全部楼层
应用程序(ucos)需要把所有外设的功能寄存器重新赋初值。

你的UCOS没有考虑所有外设的[上电初始化值]已经可能被IAP所更改。

出0入0汤圆

 楼主| 发表于 2006-2-18 21:47:54 | 显示全部楼层
终于调出来了!!

我在主程序开头加入了如下代码

main ()

{

        ///-------------------------

        PORTA=0;

        DDRA =0;

        PORTB=0;

        DDRB =0;

        PORTC=0;

        DDRC =0;

        PORTD=0;

        DDRD =0;

        UDR  =0;

        UCSRA=0x20;

        UCSRB=0;

        UCSRC=0x86;

        UBRRH=0;

        UBRRL=0;

        SFIOR=0;

       

        TIMSK=0;

        TCNT2=0;

        TCCR2=0;

        ///-------------------------

        OSInit();                // OS init

......

}

即将端口寄存器和串口和管任务切换定时器2的寄存器都作了初始化,问题解决。谢谢HJJourAVR 的指点!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 17:08

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

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