YTM32B1L1 boot跳转无法正常运行问题
-
boot程序,在main函数里面等待5S左右跳转
跳转程序,UPDATA_APP_START_ADDR地址值为0xA000
boot程序的ICF文件配置
APP程序的ICF文件配置
按照上面的代码和配置,我执行跳转后,APP程序没有运行起来,如果单独烧录APP程序的,是可以正常跑的。请大神帮忙看看,是不是什么地方还没有配置到,需要处理的?? -
-
Jones_Chen zhangbo1 在boot跳转app之前,deinit boot工程初始化使用的驱动;关闭boot工程初始化使用的驱动的外设中断;如果有SysTick内核中断之类的也关闭一下中断;操作试试看
-
HAIYANG 我就是初始化晚就跳转。工程是用YT-TOOL重新创建的LE04的自动源码生成,然后按照官方LE05-FBL修改的。用JFLASH和APP合并MERGE后,断电再上电没反应。你提到的attach是使用那个工具呀,jflash没有找到attach的菜单选项呀。
/* USER CODE BEGIN Header /
/ you can remove the copyright /
/- Copyright 2020-2025 Yuntu Microelectronics Co., Ltd.
- All rights reserved.
- SPDX-License-Identifier: BSD-3-Clause
- @file main.c
- @brief
*/
/* USER CODE END Header /
#include "sdk_project_config.h"
/ Includes ------------------------------------------------------------------*//* Private includes ----------------------------------------------------------/
/ USER CODE BEGIN Includes /
/ USER CODE END Includes *//* Private typedef -----------------------------------------------------------/
/ USER CODE BEGIN PTD /
/ USER CODE END PTD *//* Private define ------------------------------------------------------------/
/ USER CODE BEGIN PD /
/ USER CODE END PD *//* Private macro -------------------------------------------------------------/
/ USER CODE BEGIN PM /
/ USER CODE END PM *//* Private variables ---------------------------------------------------------/
/ USER CODE BEGIN PV /
/ USER CODE END PV */#define APP_IMAGE_START 0x4000
/* Private variables ---------------------------------------------------------/
/ USER CODE BEGIN PV /
/ USER CODE END PV */volatile uint32_t appEntry, appStack;
/* Private function declare --------------------------------------------------/
/ USER CODE BEGIN PFDC /
/ USER CODE END PFDC */
static void Board_Init(void);/* Private user code ---------------------------------------------------------/
/ USER CODE BEGIN 0 /
/ USER CODE END 0 */void shutdown_drivers(void)
{
//lpTMR_DRV_Deinit(0);
//FLEXCAN_DRV_Deinit(0);
//INT_SYS_DisableIRQ(lpTMR0_IRQn);
INT_SYS_DisableIRQGlobal();
}void bootup_application(uint32_t appEntry, uint32_t appStack)
{
static void (jump_to_application)(void);
static uint32_t stack_pointer;
jump_to_application = (void ()(void))appEntry;
stack_pointer = appStack;SCB->VTOR = APP_IMAGE_START; __set_PSP(stack_pointer); __set_MSP(stack_pointer); jump_to_application();
}
void JumpTo_Application(void)
{
shutdown_drivers();
appStack = (volatile uint32_t) APP_IMAGE_START; /* setup app jump */
appEntry = (volatile uint32_t)(APP_IMAGE_START + 4);
bootup_application(appEntry,appStack);while(1){};
}
/**
-
@brief The application entry point.
-
@retval int
/
int main(void)
{
/ USER CODE BEGIN 1 */
RCU->RSSR = 0x1;SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk;
/* USER CODE END 1 */
Board_Init();
//StayInBoot_Init();//INT_SYS_EnableIRQ(lpTMR0_IRQn);
JumpTo_Application();
while (1)
{
//StayInBoot_Task();
}
}
static void Board_Init(void)
{
}/* USER CODE BEGIN 4 /
/ USER CODE END 4 */
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...