你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32进行IAP跳转死机在FREEOS经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-16 17:47
现象:9 u: M4 ?! g, Q" h% k0 `
STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。5 m9 t. G3 T) v4 f
IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。' {9 @3 |. i7 L% g+ t# N/ U, T
1 }. C4 b% F7 ?; e
+ T( i4 t3 A4 \3 ^; E
FREEOS的程序在main函数开始就进行了开启中断和复位向量表。7 j" R7 Z. F5 O" b9 y
int main(void)6 o! {1 S9 |, e6 e/ I  b& q
{
3 c  n: S4 Q2 o# d/* USER CODE BEGIN 1 /
0 P  n5 M( v, f/ D__enable_irq();( [  b  R2 i  X2 \( o
SCB->VTOR = FLASH_BASE | 0X00004000;6 \/ f6 H8 V) @8 N; N2 F8 c
/ USER CODE END 1 */; D: u( I$ I5 I4 E
/…略…
8 V6 \- e' B& @) w" ~$ L
0 ^( `. O, X. x
0 v9 c1 {% V8 z2 @: M" `
方案:
2 d5 e# L) C2 u7 F% J) z! X1 @经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。  [. ]" q6 T7 |2 _2 }% v# J

* i' e) |& {# L2 K

+ a2 ?8 h% _  q2 _/* Call init function for freertos objects (in freertos.c) /
  `( T* X4 F/ y# ~0 t/ OMX_FREERTOS_Init();
/ m9 u0 D) N9 L$ g5 O/ Start scheduler */
! z6 t: L: a+ N- \2 vosKernelStart();9 }8 N6 }/ I) K3 g
__enable_irq();- q& X# a$ P) Y1 T) z- Z
1 F. z; u2 m* f0 S
+ D+ h8 j" w2 [7 t; ~0 |2 U' j
/* We should never get here as control is now taken by the scheduler /
9 G. p; O1 x' V. o6 }3 O& i/ Infinite loop /. J; T  ^! U3 @
/ USER CODE BEGIN WHILE /) P5 y* F' s2 w( S' M
while (1)+ S. N! c! y2 m
{1 m) i4 \5 D2 m* K' `
/ USER CODE END WHILE */' D" Y5 h  f* p; ]
+ C- Y1 I5 D7 z2 F
; ?: F1 l$ Z# j) `5 c
/* USER CODE BEGIN 3 */
9 S$ {: ?- O# x6 I6 A}
3 n' \' Y9 T: G6 @: W( d4 |4 q5 j2 W/* USER CODE END 3 */
2 E0 A, w3 k8 c————————————————5 _& j1 ~) N. R2 v. u
版权声明:路过羊圈的狼
, [& z/ e0 i+ A9 S2 c& v- B. v3 R1 m4 O# y8 n% L
如有侵权请联系删除0 k' i3 H' H! y; w/ A

+ P8 s# U( E) l/ y2 m; _' `
# j8 x& ]+ s4 i& _" h4 p
收藏 评论0 发布时间:2023-4-16 17:47

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版