完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前做了一个IAP程序,bootloader使用裸机,APP使用ucos2系统,IAP可以互相跳转
程序如下: [C] 纯文本查看 复制代码 void iap_load_app(u32 appxaddr){if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.{ jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址) __set_PSP(*(volatile unsigned int*) appxaddr); //重新设置进程PSP堆栈地址 __set_CONTROL(0); //设置为MSP __set_MSP(*(volatile unsigned int*) appxaddr); //重新设置进程MSP堆栈地址 jump2app(); //跳转到APP.}}现在学习FreeRTOS,就把bootloader程序改为了FreeRTOS,但是在jump2app()跳转的时候进入到了HardFault_Handler 尝试在设置堆栈和跳转前,关闭调度器vPortEndScheduler()和挂起调度vTaskSuspendAll()都没有效果。 然后又尝试把所有任务都注释掉,就添加一个任务,就是跳转,然后启用调度,也是不行。 不打开任务和调度,就可以跳转。 感觉是堆栈没设置好,不知道各位有没有试过在FreeRTOS程序跳转或有什么思路? 谢谢! |
|
相关推荐
13个回答
|
|
参考我们使用的跳转。
[C] 纯文本查看 复制代码 /* * File : rbl_jump_stm32f2_f4.c.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Change Logs: * Date Author Notes * 2014-03-12 aozima first version. * 2015-09-22 aozima disable and clean up all interrupts. */#include rbl_jump_stm32f2_f4.c (3.29 KB ) |
|
|
|
|
|
|
|
用jtag仿真看看?然后,你那个栈顶地址检查不合法的,至少应该给个死循环吧?
|
|
|
|
我公司的项目也是用FreeRTOS,前段时间也弄完了IAP在线升级,没发现你所说的问题,我用的单片机是STM32F051,IAP过程比103的复杂一些,需要手动拷贝向量表到SRAM的起始地址并作映射,但这些问题都解决了,祝你好运!
|
|
|
|
请问,这个从APP跳转到IAP,是怎么弄的?谢谢!
|
|
|
|
多谢楼上
|
|
|
|
我遇到一个问题跳转APP之前加延时就无法运行,用你这个也是一样。
|
|
|
|
多谢,我就是这个问题引起的,关了中断就可以了!!谢谢
|
|
|
|
学习了,多谢
|
|
|
|
为什么我的IAP 裸机, APP UCOS2跳转不行呢?该如何调试?
|
|
|
|
好东西,解决问题了,收藏
|
|
|
|
你那iap用裸程序,app用ucosii可以相互跳转的工程文件能上传一份吗
|
|
|
|
关键在于跳转前关闭并清除已用到的中断就可以相互跳转了
|
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:13 , Processed in 1.363773 second(s), Total 103, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号