查看: 2566|回复: 8

[已解决] kea28 移植ucosii的几个问题

[复制链接]

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
发表于 2017-9-26 10:42:47 | 显示全部楼层 |阅读模式
1,移植过程当中,我发现PendSV_Handler  这个中断  如何与os的OS_CPU_PendSVHandler()关联起来,我看过stm32的ucosii代码,是有PendSV_Handler  函数定义的,但是为什么CM0却没有呢?
2,现在因为没有PendSV_Handler  函数定义导致程序 一启动就进到default_isr

3,我查了进入default_isr函数的相关资料,说
[size=13.3333px]“中断向量入口地址未定义,所以产生中断以后进入VECTORNUM函数。”
[size=13.3333px]

[size=13.3333px]4,那么我想问下CM0内核为什么没有对PendSV_Handler函数进行定义呢?那么如果我要移植OS系统的话,如何去自定义这部分代码?

最佳答案

这是移植uC/OS 的总结帖,希望对你有帮助 http://community.nxp.com/docs/DOC-306517
回复

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-26 11:55:23 | 显示全部楼层
我找到了

OS_CPU_PendSVHandler函数在os_cpu_a.s文件当中

但是我现在  在isr文件里面对VECTOR_014进行定义
#undef  VECTOR_032
#define VECTOR_032 OS_CPU_PendSVHandler

但是还是进到default_isr函数里面停下来了!

回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-26 11:56:28 | 显示全部楼层
本帖最后由 yangganglone 于 2017-9-26 13:50 编辑

希望这个帖子能够引起大家重视,我现在就卡在pendsvhandler函数这里,我要把OS_CPU_PendSVHandler与底层的pendsvhandler替换掉!
但是现在不知道为什么会进入到default_isr函数里面去,是我中断函数写错了?
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-26 16:43:28 | 显示全部楼层
现在发现    其实是hardfault 中断导致的

   #define VECTORNUM                     (*(volatile uint32_t*)(0xE000ED04))

  //printf("\n****default_isr entered on vector %d*****\r\n\n",VECTORNUM);
   return;

我吧VECTORNUM  的值打印出来是3,我看向量表对应HardFault_Handler

目前不知道是什么配置导致进入到hardfault?            
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24875
最后登录
2025-7-18
发表于 2017-9-27 09:41:46 | 显示全部楼层
这是移植uC/OS 的总结帖,希望对你有帮助
http://community.nxp.com/docs/DOC-306517
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-27 11:44:46 | 显示全部楼层
小恩GG 发表于 2017-9-27 09:41
这是移植uC/OS 的总结帖,希望对你有帮助
http://community.nxp.com/docs/DOC-306517

谢谢,我昨天已经解决了,我吧任务的堆栈设置太小了,现在基本上能【跑了】但是还是要测试稳定性!
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-27 11:53:33 | 显示全部楼层
小恩GG 发表于 2017-9-27 09:41
这是移植uC/OS 的总结帖,希望对你有帮助
http://community.nxp.com/docs/DOC-306517

我把我昨天调试的几点经验在这里跟大家做个分享

1,昨天调试的时候,我发现程序一运行起来,就跑到
void default_isr(void)
{
   #define VECTORNUM                     (*(volatile uint32_t*)(0xE000ED04))

  //printf("\n****default_isr entered on vector %d*****\r\n\n",VECTORNUM);
   return;
}

2,后来我查了资料,对这块中断向量表的入口函数进行分析
   a, VECTORNUM   这个宏  是对应到M0内核的NVIC_INT_CTRL      
   b,我在memory 找到该地址的值是3,于是我分析,对应的中断函数
#define VECTOR_003      default_isr     // 0x0000_000C 3 -          ARM core        Hard Fault

3,我分析为什么会导致hardfault,经过分析M0内核的一些堆栈,我发现我任务其实第一次是进去了的,但是后面就跑到hardfault了,所以我判定是我的任务函数导致程序跑飞,后来我吧任务函数 一步步去掉,才发现是

static  OS_STK          AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE];
static  OS_STK          AppTaskLED2Stk[APP_CFG_TASK_LED2_STK_SIZE];
static  OS_STK          AppTaskLED3Stk[APP_CFG_TASK_LED3_STK_SIZE];

#define  APP_CFG_TASK_START_STK_SIZE                    16u//256u

#define  APP_CFG_TASK_LED1_STK_SIZE                     16u//128u
#define  APP_CFG_TASK_LED2_STK_SIZE                     16u//128u
#define  APP_CFG_TASK_LED3_STK_SIZE                     16u//128u
#define  APP_CFG_TASK_LED4_STK_SIZE                     16u//128u



总结,在调试的时候  我一直查M0内核权威指南,里面有很多比较有经验的东西值得借鉴!
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

64

帖子

0

注册会员

Rank: 2

积分
189
最后登录
2019-5-21
 楼主| 发表于 2017-9-27 11:54:53 | 显示全部楼层
yangganglone 发表于 2017-9-27 11:53
我把我昨天调试的几点经验在这里跟大家做个分享

1,昨天调试的时候,我发现程序一运行起来,就跑到

其实在ld文件里面也有堆栈设置

我设置的是
/* Generate a link error if heap and stack don't fit into RAM */
__heap_size = 0x400;                                /* required amount of heap  */
__stack_size = 0x400;                                 /* required amount of stack */
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24875
最后登录
2025-7-18
发表于 2017-9-27 15:56:42 | 显示全部楼层
yangganglone 发表于 2017-9-27 11:44
谢谢,我昨天已经解决了,我吧任务的堆栈设置太小了,现在基本上能【跑了】但是还是要测试稳定性! ...

好的,解决就好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 08:01 , Processed in 0.106828 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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