OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 520|回复: 7

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

[复制链接]

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

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

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

回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

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

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

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

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

485

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

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

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

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

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

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

使用道具 举报

  离线 

0

主题

148

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
12
金钱
12
注册时间
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();
        }
}                 
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-22 12:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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