1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用CUBE IDE无法通过IAP跳转APP进行软件升级
本人使用的是cubeide 1.7.0版本,单片机是STM32F407VET6.在这个IDE工具下,成功实现STM32F103RCT6单片机的升级,却无法实现F407这款芯片的升级,我不确定问题出现在哪,我尝试使用KEIL进行软件编译,下载,在这个工具下F407也能实现IAP升级。 以下是我的IAP具体代码 int main(void) { HAL_Init(); //初始化HAL库 Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz delay_init(168); //初始化延时函数 LED_Init(); //初始化LED while(1){ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET); //PF9置1,默认初始化后灯灭 delay_ms(1000); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET); //PF10置1,默认初始化后灯灭 delay_ms(1000); iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码 }} 上面的引导代码使用两个一秒的闪灯进行识别, 我也尝试过直接跳转,代码如下,依然无效,无效说的是无法跳转到IDE生成的APP程序,可以成功跳转KEIL的APP程序。 int main(void) { while(1){ iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码 }} 上面的代码中跳转的地址定义的是 :#define FLASH_APP1_ADDR 0x08020000 //第一个应用程序起始地址(存放在FLASH)。代码源码来自正点原子开发板的IAP例程。其中我也尝试过在跳转前关闭全局中断,开启全局中断,或者关闭时钟等各种办法,均无法实现跳转。 //跳转到应用程序段 //appxaddr:用户代码起始地址. void iap_load_app(u32 appxaddr) { if(((*(vu32*)appxaddr) amp;0x2FF00000)==0x20000000) //检查栈顶地址是否合法.{ Systick- gt;CTRL = 0; //关键代码 HAL_DeInit(); //可选 HAL_NVIC_DisableIRQ(SysTick_IRQn); //可选 HAL_NVIC_ClearPendingIRQ(SysTick_IRQn); //可选 /* Jump to user application */ __disable_irq(); jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址) MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) jump2app(); //跳转到APP.}} 以下是我的APP具体代码 int main(void) { / USER CODE BEGIN 1 / __enable_irq();/ USER CODE END 1 / / MCU Configuration--------------------------------------------------------/ / Reset of all peripherals, Initializes the Flash interface and the Systick. / HAL_Init(); / USER CODE BEGIN Init / / USER CODE END Init / / Configure the system clock / SystemClock_Config(); / USER CODE BEGIN SysInit / / USER CODE END SysInit / / Initialize all configured peripherals / MX_GPIO_Init(); / USER CODE BEGIN 2 / / USER CODE END 2 / / Infinite loop / / USER CODE BEGIN WHILE / while (1) { /* USER CODE END WHILE *//* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET); //PF9�???1,默认初始化后灯�??? HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET); //PF10�???1,默认初始化后灯�??? HAL_Delay(500); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); //PF9�???1,默认初始化后灯�??? HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET); //PF10�???1,默认初始化后灯�??? HAL_Delay(500);} / USER CODE END 3 / } APP程序中只开启了两个闪灯,未使用FREERTOS系统,即使不开启SystemClock_Config();依然无法跳转。 相比直接生成的代码,我修改了以下三个地方: 第一,在main函数添加__enable_irq();,尝试开启或不使用,没有作用; 第二,在STM32F407VETX_FLASH.ld文件下修改起始地址和长度,原本是 MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K } 修改为 MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K FLASH (rx) : ORIGIN = 0x8020000, LENGTH = 384K } 第三,在system_stm32f4xx.c文件下修改偏移地址,修改后如下: { ........ define USER_VECT_TAB_ADDRESS if defined(USER_VECT_TAB_ADDRESS) /*! |
|
相关推荐
2个回答
|
|
请查看一下APP应用程序生成的HEX文件,里面有写实际的地址都是哪些。我怀疑是不是生成APP文件的使用地址是不对的,所以跳转不过去。
|
|
|
|
在STM32CubeIDE中无法通过IAP跳转APP进行软件升级的原因可能有以下几个方面:
1. IAP代码实现问题:请确保在F407芯片上正确地实现了IAP功能。可以通过打印调试信息等方法来确认代码是否正常执行。 2. 芯片硬件问题:F407芯片与F103芯片的硬件配置有所不同,可能会导致无法在F407上实现IAP升级。请参考F407芯片的参考手册,特别是与IAP相关的章节,确认芯片的硬件特性。 3. IAP升级过程中的中断问题:在执行IAP升级过程中,需要禁用所有的中断。请确保在IAP代码中正确地禁用了中断,并在IAP完成后重新使能中断。 4. IAP升级中的复位问题:在执行IAP升级完成后,需要进行系统的复位操作,以使新的应用程序生效。请确保在升级完成后正确地进行系统复位操作。 如果您在使用KEIL进行软件编译时,能够成功地实现F407芯片的IAP升级,说明问题可能出现在STM32CubeIDE的配置或者代码实现方面。请仔细对比两个开发环境下的代码及配置,查找差异之处。同时,您也可以尝试更新STM32CubeIDE的版本,以获取更好的兼容性和稳定性。 另外,如果您能提供更详细的错误信息或者具体的调试过程,将有助于更准确地确定问题所在。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1820 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1634 浏览 1 评论
1104 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
740 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
587浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
569浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 01:30 , Processed in 0.914099 second(s), Total 82, Slave 65 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号