硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4686|回复: 13
收起左侧

[RL-RTX] 【解决】Bootloader使用RTX无法跳转应用

  [复制链接]

5

主题

179

回帖

194

积分

初级会员

积分
194
发表于 2019-5-27 15:46:47 | 显示全部楼层 |阅读模式
本帖最后由 soga238 于 2019-6-9 22:24 编辑

为了方便我在bootloader中使用了rtx系统,但是发现传输完app文件后,无论如何也无法进入app(已经关闭了用到的外设,清了中断)。无奈用裸机实现,一次性通过。RTX内部会修改什么,或者控制中断吗。

关闭滴答定时器systick解决,不知道为啥裸机时没出问题。
update: 跳转之前关闭全局中断,手动关闭PendSV,SVC和Systick中断以及其它开启的中断没有效果。跳转前关闭全局中断,在进入调试APP代码的一开始,会触发 osRtxErrorClibMutex(标准C/C++库互斥初始化失败)异常。原因是关闭全局中断,rtx无法申请互斥锁。在执行RTX代码前,我已经开启了全局中断,不知道为什么仍然触发异常。底层编译有调用?

解决办法1、boot跳转app前,不关闭全局中断 2、在app代码调用SystemInit()前开启全局中断

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2019-5-27 17:30:03 | 显示全部楼层
跳转前关闭全局中断,并且手动关闭PendSV,SVC和Systick中断以及其它你开启的中断,最后就是设置CONTROL寄存器为0
回复

使用道具 举报

3

主题

1223

回帖

1232

积分

至尊会员

积分
1232
发表于 2019-5-27 21:01:40 | 显示全部楼层
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-5-27 22:29:08 | 显示全部楼层
你的APP用了操作系统吧?理论上在操作系统启动前,不能开滴答定时器的。你看看是不是这个原因
回复

使用道具 举报

10

主题

33

回帖

63

积分

初级会员

积分
63
发表于 2019-8-16 21:53:29 | 显示全部楼层
我也遇到楼主同样的问题,rtx5会在进入main函数前创建5个互斥量Mutex(不知道做什么用的?),创建失败就触发osRtxErrorClibMutex错误进入死循环。最后用楼主的解决办法1解决了。谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2019-8-16 23:32:00 | 显示全部楼层
younew 发表于 2019-8-16 21:53
我也遇到楼主同样的问题,rtx5会在进入main函数前创建5个互斥量Mutex(不知道做什么用的?),创建失败就触 ...

那时因为你未使用微库,使用C标准库的互斥是基于RTX5的互斥信号量实现的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2019-8-17 00:19:46 | 显示全部楼层
QQ截图20190817001918.jpg
回复

使用道具 举报

10

主题

33

回帖

63

积分

初级会员

积分
63
发表于 2019-8-19 13:57:29 | 显示全部楼层
原来是这样啊。谢谢!
我使用了RTX的文件系统,编译出错,提示不能用微库了
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

one is enough

积分
38
发表于 2019-11-25 23:42:46 | 显示全部楼层
多谢分析~学习了~
回复

使用道具 举报

6

主题

35

回帖

53

积分

初级会员

积分
53
发表于 2020-2-26 13:45:04 | 显示全部楼层
eric2013 发表于 2019-5-27 17:30
跳转前关闭全局中断,并且手动关闭PendSV,SVC和Systick中断以及其它你开启的中断,最后就是设置CONTROL寄 ...

你好 如何手动关闭pencv  svc?没找到
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2020-2-26 14:17:21 | 显示全部楼层
zz1179842922 发表于 2020-2-26 13:45
你好 如何手动关闭pencv  svc?没找到

不用管。pendsv和svc每次使用是每次手动使能。
回复

使用道具 举报

6

主题

35

回帖

53

积分

初级会员

积分
53
发表于 2020-2-26 15:18:32 | 显示全部楼层
eric2013 发表于 2020-2-26 14:17
不用管。pendsv和svc每次使用是每次手动使能。

好的                      谢谢
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
QQ
发表于 2020-11-30 15:46:20 | 显示全部楼层
我用的NXP的LPC4078芯片,按照以上方法没解决。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2020-11-30 16:28:33 | 显示全部楼层
zenghouyun 发表于 2020-11-30 15:46
我用的NXP的LPC4078芯片,按照以上方法没解决。

分享个基于STM32H7的BOOT和APP代码都使用RTX5的案例,相互之间任意跳转
http://www.armbbs.cn/forum.php?m ... 7247&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 08:03 , Processed in 0.312061 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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