OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5643|回复: 7

UCOSIII API 移植后 UCOSIII不执行开始任务

[复制链接]

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
发表于 2017-12-12 21:55:24 | 显示全部楼层 |阅读模式
25金钱
API跳转成功没问题,MAIN函数 初始化也一路通过,但是在创建完任务后,        OSStart(&err);   程序就死在这里面了,情况
如下

任务切换时入栈出栈都有处理,中断入口也有处理,但执行OSStart(&err)时,执行完OSStartHighRdy函数就直接跳到OSStartHang,一直在这两个函数中循环执行,其它的代码均不执行了。请各位大神支招啊,急!!!!
(以前有LZ说是KILE设置问题?)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-12-12 21:56:00 | 显示全部楼层

API跳转成功没问题,MAIN函数 初始化也一路通过,但是在创建完任务后,        OSStart(&err);   程序就死在这里面了,情况
如下

任务切换时入栈出栈都有处理,中断入口也有处理,但执行OSStart(&err)时,执行完OSStartHighRdy函数就直接跳到OSStartHang,一直在这两个函数中循环执行,其它的代码均不执行了。请各位大神支招啊,急!!!!
(以前有LZ说是KILE设置问题?)
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-12-12 21:59:14 | 显示全部楼层
void  OS_IntQTask (void  *p_arg)  一直占用这个任务中断管理
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-13 00:40:29 | 显示全部楼层
不IAP,代码成功么
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-12-13 08:40:52 | 显示全部楼层

成功,  而且 裸跑 IPA也成功, 中断向量偏移也做了的,APP代码起始0X08010000,偏移量也设置好了的,可是为什么就是跑起来,程序一直在void  OS_IntQTask (void  *p_arg)  这个任务里面死循环,开始任务也不执行???
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-12-13 08:42:27 | 显示全部楼层

原子哥,求帮助,买的你们的开发板学习移植的 ,老师要求的作业搞不完呜呜呜呜??
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2017-12-13 09:03:53 | 显示全部楼层
OPenXC 发表于 2017-12-13 08:40
成功,  而且 裸跑 IPA也成功, 中断向量偏移也做了的,APP代码起始0X08010000,偏移量也设置好了的,可是 ...

bootloader里跳转之前关闭总中断,到APP程序的时候开启总中断
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-12-13 09:36:25 | 显示全部楼层

void iap_load_app(u32 appxaddr)
{
         temp=*(vu32*)appxaddr;
         temp=((*(vu32*)appxaddr)&0x2FFD0000);//0x2FFE0000---128k   0x2FFD0000-190K  
      //下载APP程序后,返回来跑LODAER的仿真,发现地址大于了0X1FFFF这个值正常吗?(STM32F429--APP代码比较多)
导致不更改这个 0x2FFE0000,检查栈顶合法if语句通不过!!!

        if(((*(vu32*)appxaddr)&0x2FFD0000)==0x20000000)       
        {                                        
                 jump2app=(iapfun)*(vu32*)(appxaddr+4);                        
                __set_PSP(*(volatile unsigned int*) appxaddr);               
                __set_CONTROL(0);                                                         
                __set_MSP(*(volatile unsigned int*) appxaddr);                  
                __disable_irq();   
                __set_FAULTMASK(1);
                jump2app();
        }
}                 
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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