跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1L系列
  4. YTM32B1L1 boot跳转无法正常运行问题

YTM32B1L1 boot跳转无法正常运行问题

已定时 已固定 已锁定 已移动 已解决 YTM32B1L系列
9 帖子 5 发布者 3.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Jones_ChenJ 离线
    Jones_ChenJ 离线
    Jones_Chen
    写于 最后由 编辑
    #1

    ffc7e02f-2f6d-4b83-b64f-9cec091604f5-image.png
    boot程序,在main函数里面等待5S左右跳转
    1599981d-06e0-4de9-ba9b-43bdadf2f9f6-image.png
    d65b2402-e44c-4c64-9a02-3360e85410e2-image.png
    跳转程序,UPDATA_APP_START_ADDR地址值为0xA000
    af89eb9d-eed9-428b-8176-f3c3fa3bb867-image.png
    boot程序的ICF文件配置
    e8681af9-41b8-4404-8a8a-cae14d5cb795-image.png
    APP程序的ICF文件配置
    按照上面的代码和配置,我执行跳转后,APP程序没有运行起来,如果单独烧录APP程序的,是可以正常跑的。请大神帮忙看看,是不是什么地方还没有配置到,需要处理的??

    1 条回复 最后回复
    0
    • ganyongchaoG 离线
      ganyongchaoG 离线
      ganyongchao YunTu
      写于 最后由 编辑
      #4

      Jones_Chen zhangbo1 在boot跳转app之前,deinit boot工程初始化使用的驱动;关闭boot工程初始化使用的驱动的外设中断;如果有SysTick内核中断之类的也关闭一下中断;操作试试看

      1 条回复 最后回复
      0
      • Jones_ChenJ 离线
        Jones_ChenJ 离线
        Jones_Chen
        写于 最后由 编辑
        #2

        https://forum.ytmicro.com/topic/1200/ytm32b1le15-uds-can-fbl公版操作指南
        参考这份链接就可以了

        1 条回复 最后回复
        0
        • zhangbo1Z 离线
          zhangbo1Z 离线
          zhangbo1
          写于 最后由 编辑
          #3

          问题解决了吗,没有公版操作指南中的环境。我的也是跳转不到APP。有什么其他设置吗?

          1 条回复 最后回复
          0
          • ganyongchaoG 离线
            ganyongchaoG 离线
            ganyongchao YunTu
            写于 最后由 编辑
            #4

            Jones_Chen zhangbo1 在boot跳转app之前,deinit boot工程初始化使用的驱动;关闭boot工程初始化使用的驱动的外设中断;如果有SysTick内核中断之类的也关闭一下中断;操作试试看

            1 条回复 最后回复
            0
            • zhangbo1Z 离线
              zhangbo1Z 离线
              zhangbo1
              写于 最后由 编辑
              #5

              嗯,我看公版的源码只是关闭驱动和中断。我没有用什么驱动,只要禁止全局中断就可以吧。用jflash合并BOOT+APP成一个BIN文件,然后下载到芯片里,这样验证可以吗?
              void shutdown_drivers(void)
              {
              INT_SYS_DisableIRQGlobal();
              }
              哎,
              这个问题折腾快一两周了,一直找不到什么原因。有没有不用CAN升级的简易BOOT跳转APP的例子呀。

              HAIYANGH 1 条回复 最后回复
              0
              • HAIYANGH 离线
                HAIYANGH 离线
                HAIYANG YunTu
                在 回复了 zhangbo1 最后由 编辑
                #6

                zhangbo1 你可以在boot里初始化完时钟就直接跳转,不要初始化其它模块,然后用jflash下载合并的bin文件;attach进去看一下boot直接跳能不能成功跳转;

                1 条回复 最后回复
                0
                • zhangbo1Z 离线
                  zhangbo1Z 离线
                  zhangbo1
                  写于 最后由 编辑
                  #7

                  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 */

                  1 条回复 最后回复
                  0
                  • zhangbo1Z 离线
                    zhangbo1Z 离线
                    zhangbo1
                    写于 最后由 编辑
                    #8

                    这是应用程序,通过YTTOOLS生成LE04的框架,然后修改MAIN.C,PB13端口的LED闪烁。生成的BIN文件,使用JFLASH烧录到0地址,上电重启,可以看到LED灯变化。和BOOT合并在0x4000偏移,然后再烧录,就没有反映了。
                    /* 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 */

                    /*! @brief User configuration cfg InitConfigArr0 array /
                    const pin_settings_config_t g_pin_mux_InitConfigArr0[1] = {
                    /
                    PTB_13-32-GPIO- */
                    {
                    .base = PCTRLB,
                    .pinPortIdx = 13U,
                    .pullConfig = PCTRL_INTERNAL_PULL_NOT_ENABLED,
                    .rateSelect = PCTRL_FAST_SLEW_RATE,
                    .passiveFilter = false,
                    .driveSelect = PCTRL_LOW_DRIVE_STRENGTH,
                    .mux = PCTRL_MUX_AS_GPIO,
                    .intConfig = PCTRL_DMA_INT_DISABLED,
                    .clearIntFlag = false,
                    .digitalFilter = false,
                    .filterConfig ={
                    .width = 0
                    },
                    .gpioBase = GPIOB,
                    .direction = GPIO_OUTPUT_DIRECTION,
                    .initValue = 0,
                    },
                    };

                    #define LED_OUT_GPIO GPIOB
                    #define LED_OUT_PIN 13
                    #define LED_OUT_HIGH() PINS_DRV_WritePin(LED_OUT_GPIO, LED_OUT_PIN, HIGH)
                    #define LED_OUT_LOW() PINS_DRV_WritePin(LED_OUT_GPIO, LED_OUT_PIN, LOW)

                    #define NULL_PTR ((void *)0)

                    #define TRUE (1)
                    #define FALSE (0)

                    #define HIGH (1)
                    #define LOW (0)

                    /* USER CODE END Includes */

                    static void Board_Init(void);

                    void McuSystem_Init(void)
                    {
                    CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
                    CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
                    PINS_DRV_Init(1,g_pin_mux_InitConfigArr0);

                    }
                    /**

                    • @brief The application entry point.

                    • @retval int
                      */
                      int main(void)
                      {
                      long iIdx = 0;

                      /* USER CODE BEGIN 1 */
                      RCU->RSSR = 0x1;

                      McuSystem_Init();

                      while(1)
                      {
                      for(iIdx=0;iIdx<0xffff;iIdx++)
                      {
                      }
                      LED_OUT_LOW();
                      for(iIdx=0;iIdx<0xffff;iIdx++)
                      {
                      }
                      LED_OUT_HIGH();
                      }

                      /* USER CODE END 3 */
                      }

                    static void Board_Init(void)
                    {
                    }

                    /* USER CODE BEGIN 4 /
                    /
                    USER CODE END 4 */

                    PrinceWP 1 条回复 最后回复
                    0
                    • PrinceWP 离线
                      PrinceWP 离线
                      PrinceW
                      在 回复了 zhangbo1 最后由 编辑
                      #9

                      zhangbo1 请问问题解决了么,我也遇到了同样的问题

                      1 条回复 最后回复
                      0
                      • ,FrankieF Frankie 将这个主题转为问答主题
                      • ,FrankieF Frankie 将这个主题标记为已解决

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      25
                      demo
                      22
                      lin stack
                      13
                      uds
                      13
                      md14
                      6
                      yt-link
                      6
                      fbl
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门