求助RTX iap 跳转问题
本帖最后由 nstopb 于 2021-4-20 12:26 编辑boot程序跳转功能确认OK 跳转后无法进入main函数,查看内存停在了boot程序的hardfault函数中,于是把boot程序中跳转之前的__set_PRIMASK改为__set_FAULTMASK,跳转后现象变成了 停留在osKernelStart()函数的return __svcKernelStart();有大佬能帮忙吗~~
方便的话,参考我这个试试
分享个基于STM32H7的BOOT和APP代码都使用RTX5的案例,相互之间任意跳转
http://www.armbbs.cn/forum.php?mod=viewthread&tid=97247&fromuid=58
(出处: 硬汉嵌入式论坛)
eric2013 发表于 2021-4-20 15:27
方便的话,参考我这个试试
分享个基于STM32H7的BOOT和APP代码都使用RTX5的案例,相互之间任意跳转
我跳转的程序应该没有问题。似乎是停在了rtx内核启动函数中。请问__svcKernelStart()函数是做什么的, 右键找不到定义。我是在keil中直接启用的rtx,这部分不开源还是我少添加了文件吗。这个是接手了别人的项目之前的工程应该是keil4建立的, 并且是老版本的RTX,和我新建立的工程某些文件不一致,改了好几天了。rtx有些函数扒不到最底层,找原因实在太难了。。。 MDK5 的以太网组件用过没有 wlx18682353162 发表于 2021-4-20 16:30
MDK5 的以太网组件用过没有
额,没有。。。这和我的问题有关联吗:dizzy: 跳转前,修改为特权级,并清空RAM试试
__set_CONTROL(0); 昨天的问题 终于找到原因了, st和gd的库 定时器中断函数名不一样,本来以为启动文件是cmsis标准 应该统一的,兜兜转转了一天居然发现是这么个小问题。。。。现在任务终于跑起来了,但是os_idle_demon这个空闲中断,优先级却是255,这个会不会有什么问题,请大神或版主能够指导一下,是否需要修改,以及如何修改~~ 谢谢 apleilx 发表于 2021-4-20 16:56
跳转前,修改为特权级,并清空RAM试试
__set_CONTROL(0);
请问如何清空ram nstopb 发表于 2021-4-21 10:06
昨天的问题 终于找到原因了, st和gd的库 定时器中断函数名不一样,本来以为启动文件是cmsis标准 应该统一 ...
CMSIS-RTOS V2封装层空闲任务优先级是1
空闲任务优先级是:
/// Priority values.
typedef enum {
osPriorityNone =0, ///< No priority (not initialized).
osPriorityIdle =1, ///< Reserved for Idle thread.
osPriorityLow =8, ///< Priority: low
osPriorityLow1 =8+1, ///< Priority: low + 1
osPriorityLow2 =8+2, ///< Priority: low + 2
osPriorityLow3 =8+3, ///< Priority: low + 3
osPriorityLow4 =8+4, ///< Priority: low + 4
osPriorityLow5 =8+5, ///< Priority: low + 5
osPriorityLow6 =8+6, ///< Priority: low + 6
osPriorityLow7 =8+7, ///< Priority: low + 7
osPriorityBelowNormal = 16, ///< Priority: below normal
osPriorityBelowNormal1= 16+1, ///< Priority: below normal + 1
osPriorityBelowNormal2= 16+2, ///< Priority: below normal + 2
osPriorityBelowNormal3= 16+3, ///< Priority: below normal + 3
osPriorityBelowNormal4= 16+4, ///< Priority: below normal + 4
osPriorityBelowNormal5= 16+5, ///< Priority: below normal + 5
osPriorityBelowNormal6= 16+6, ///< Priority: below normal + 6
osPriorityBelowNormal7= 16+7, ///< Priority: below normal + 7
osPriorityNormal = 24, ///< Priority: normal
osPriorityNormal1 = 24+1, ///< Priority: normal + 1
osPriorityNormal2 = 24+2, ///< Priority: normal + 2
osPriorityNormal3 = 24+3, ///< Priority: normal + 3
osPriorityNormal4 = 24+4, ///< Priority: normal + 4
osPriorityNormal5 = 24+5, ///< Priority: normal + 5
osPriorityNormal6 = 24+6, ///< Priority: normal + 6
osPriorityNormal7 = 24+7, ///< Priority: normal + 7
osPriorityAboveNormal = 32, ///< Priority: above normal
osPriorityAboveNormal1= 32+1, ///< Priority: above normal + 1
osPriorityAboveNormal2= 32+2, ///< Priority: above normal + 2
osPriorityAboveNormal3= 32+3, ///< Priority: above normal + 3
osPriorityAboveNormal4= 32+4, ///< Priority: above normal + 4
osPriorityAboveNormal5= 32+5, ///< Priority: above normal + 5
osPriorityAboveNormal6= 32+6, ///< Priority: above normal + 6
osPriorityAboveNormal7= 32+7, ///< Priority: above normal + 7
osPriorityHigh = 40, ///< Priority: high
osPriorityHigh1 = 40+1, ///< Priority: high + 1
osPriorityHigh2 = 40+2, ///< Priority: high + 2
osPriorityHigh3 = 40+3, ///< Priority: high + 3
osPriorityHigh4 = 40+4, ///< Priority: high + 4
osPriorityHigh5 = 40+5, ///< Priority: high + 5
osPriorityHigh6 = 40+6, ///< Priority: high + 6
osPriorityHigh7 = 40+7, ///< Priority: high + 7
osPriorityRealtime = 48, ///< Priority: realtime
osPriorityRealtime1 = 48+1, ///< Priority: realtime + 1
osPriorityRealtime2 = 48+2, ///< Priority: realtime + 2
osPriorityRealtime3 = 48+3, ///< Priority: realtime + 3
osPriorityRealtime4 = 48+4, ///< Priority: realtime + 4
osPriorityRealtime5 = 48+5, ///< Priority: realtime + 5
osPriorityRealtime6 = 48+6, ///< Priority: realtime + 6
osPriorityRealtime7 = 48+7, ///< Priority: realtime + 7
osPriorityISR = 56, ///< Reserved for ISR deferred thread.
osPriorityError = -1, ///< System cannot determine priority or illegal priority.
osPriorityReserved = 0x7FFFFFFF///< Prevents enum down-size compiler optimization.
} osPriority_t; eric2013 发表于 2021-4-23 08:18
CMSIS-RTOS V2封装层空闲任务优先级是1
空闲任务优先级是:
谢谢版主。我后来仔细看了下, IDLE的任务优先级是0,我是看错了。之前跳转进hardfault的问题找到源头了,是我在boot里面启用了systick ,跳转前关闭就正常了。
页:
[1]