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

YunTu Forum

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

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

已定时 已固定 已锁定 已移动 YTM32B1L系列
7 帖子 4 发布者 158 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
    • 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

              • 云途开发生态介绍

                快速上手云途开发生态

              • 云途论坛规则/Yuntu Forum Rules

                发帖前请查看

              • YT CONFIG TOOL调查问卷

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

              • can
                19
                demo
                19
                uds
                11
                lin stack
                7
                fbl
                5
                yt-link
                5
                adc模块
                4
                md14
                4
                Online Users
                runR
                run
                ZoneZ
                Zone
                LCZOUYIWENL
                LCZOUYIWEN
                Tiger987T
                Tiger987
                majorM
                major
                zhangbo1Z
                zhangbo1
                • 登录

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