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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. OTA 升级 bootload 跳转后(在APP做地址偏移)APP启动异常

OTA 升级 bootload 跳转后(在APP做地址偏移)APP启动异常

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

    1、问题:
    8cd613af-f399-40db-af3e-cb19baa96ca7-61120d41fcb69a4633ea860186e84c5.png

    使用 YTM32B1MC03 SDK 1_3_1
    我创建一个bootload工程,并集成了OTA升级功能,在升级完成后执行跳转APP操作,但APP无法正常启动,单步调试APP发现程序卡在了SPI Master初始化里不出来了

    2、配置如下:
    boot:
    144423cd-d5d1-4b86-acb4-c3da6c24225d-6299e211d1c76e033e19a1985fc438e0_.png
    06cadc11-2895-491d-af64-2a7f00a728fa-269d6a21873411c782f732b49a0207b0_.png

    3、补充:
    A、屏蔽掉无法初始化的外设,启动定时器,启动RTOS task,分别在两个位置操作IO翻转,示波器观察到,bootload升级完APP 跳转至APP后,IO一直在翻转,可以确定升级跳转都没问题。

    B、在APP做地址偏移之前 程序所有功能都能正常执行。

    C、另外,在修改APP的偏移地址后,编译出现下面图片中的信息
    f9003ffb-6934-4cf6-8efb-247dc5812334-image.png

    1 条回复 最后回复
    0
    • zhaodong1Z 离线
      zhaodong1Z 离线
      zhaodong1
      写于 最后由 编辑
      #10

      您好,我在使用YTM32MB105的BT的demo工程时,可以正常刷写和跳转APP,跳转后运行正常,,,我在我新的BT工程里现在可以正常刷写app工程,但是刷写完的BT执行跳转APP函数会进入故障,app也没有正常运行,这个跳转函数执行有什么依赖前置项吗

      KirkK 1 条回复 最后回复
      0
      • DigaD 离线
        DigaD 离线
        Diga
        写于 最后由 编辑
        #2

        具体卡死在哪一步

        RyanGR 1 条回复 最后回复
        0
        • RyanGR 离线
          RyanGR 离线
          RyanG
          在 回复了 Diga 最后由 编辑
          #3

          Diga 你好,串口、SPI master 、SPI slave 都起不来
          RTOS TIMER IO 都正常,
          其中SPI master 卡死在这部分了:
          7c593364-e4d9-4b28-9e7b-967b4e1b0605-image.png

          1 条回复 最后回复
          0
          • DigaD 离线
            DigaD 离线
            Diga
            写于 最后由 编辑
            #4

            我看了这个函数,应该没有卡死的可能性。
            是不是 boot 里有产生过 SPI 的中断,但没有处理

            RyanGR 1 条回复 最后回复
            0
            • ws420115W 离线
              ws420115W 离线
              ws420115
              写于 最后由 编辑
              #5

              BOOT 里面只有串口和flash,并且在跳转前都卸载了并禁用了中断

              1 条回复 最后回复
              0
              • RyanGR 离线
                RyanGR 离线
                RyanG
                在 回复了 Diga 最后由 编辑
                #6

                Diga 请参考ws420115的消息,这是客户的技术工程师。感谢Diga。

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

                  d1932543131f11035c778a8c0638fdc.png
                  图片是我手动修改.SCF文件的截图,只有头两处地方改了,且只改了这个文件,是否是我哪里没改全?

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

                    这个可能得配合具体工程才好分析,建议先联系 FAE 咨询一下

                    ws420115W 1 条回复 最后回复
                    0
                    • ws420115W 离线
                      ws420115W 离线
                      ws420115
                      在 回复了 Diga 最后由 编辑
                      #9

                      Diga 问题解决了,就是.scf文件修改不全,因为不知道YCT工具里link选项不知道怎么修改地址,最后手动修改.scf文件,没改全造成的跳转成功但是运行异常

                      1 条回复 最后回复
                      0
                      • zhaodong1Z 离线
                        zhaodong1Z 离线
                        zhaodong1
                        写于 最后由 编辑
                        #10

                        您好,我在使用YTM32MB105的BT的demo工程时,可以正常刷写和跳转APP,跳转后运行正常,,,我在我新的BT工程里现在可以正常刷写app工程,但是刷写完的BT执行跳转APP函数会进入故障,app也没有正常运行,这个跳转函数执行有什么依赖前置项吗

                        KirkK 1 条回复 最后回复
                        0
                        • KirkK 离线
                          KirkK 离线
                          Kirk YunTu
                          在 回复了 zhaodong1 最后由 编辑
                          #11

                          zhaodong1 跳转前要反初始化 Boot 里使用到的外设,同时关闭所有中断。可以在 APP main 开头加上 while(1) 卡住,定位是跳转 APP 成功,但 APP 代码运行失败,还是跳转 APP 失败。

                          1 条回复 最后回复
                          0
                          • zhaodong1Z 离线
                            zhaodong1Z 离线
                            zhaodong1
                            写于 最后由 编辑
                            #12

                            1、我已经通过你们提供的BT的demo工程验证APP程序运行没有问题,可以正常跳转运行2、我已经将所有的外设反初始化,并且下图所示哪一行调用会报错,我在demo里测试了这一行屏蔽不会影响跳转,跳转函数执行前除了外设初始化还需要有哪些操作吗
                            image.png

                            KirkK zhaodong1Z 2 条回复 最后回复
                            0
                            • KirkK 离线
                              KirkK 离线
                              Kirk YunTu
                              在 回复了 zhaodong1 最后由 编辑
                              #13

                              zhaodong1 SCB->VTOR = APP_IMAGE_START; 这个传的是 APP 起始地址呀,这个就是跳转的目标地址呀,这个注释后怎么确认不影响跳转的了

                              1 条回复 最后回复
                              0
                              • zhaodong1Z 离线
                                zhaodong1Z 离线
                                zhaodong1
                                写于 最后由 编辑
                                #14

                                我用你们提供的demo工程,屏蔽掉这里后也可以正常跳转,只要传入的appentry是app的启动地址就能跳转过去,,我自己的BT工程现在执行这一行会报错,我不清楚是什么原因导致的

                                KirkK 1 条回复 最后回复
                                0
                                • KirkK 离线
                                  KirkK 离线
                                  Kirk YunTu
                                  在 回复了 zhaodong1 最后由 编辑
                                  #15

                                  zhaodong1 方便截图或者直接发一下你 APP 工程的 YCT 配置文件吗 c101def2-8e30-415e-9a71-73f0fe641fc4-image.png

                                  1 条回复 最后回复
                                  0
                                  • zhaodong1Z 离线
                                    zhaodong1Z 离线
                                    zhaodong1
                                    写于 最后由 编辑
                                    #16

                                    image.pnglink文件我用的默认配置,生成后手动修改的

                                    zhaodong1Z 1 条回复 最后回复
                                    0
                                    • zhaodong1Z 离线
                                      zhaodong1Z 离线
                                      zhaodong1
                                      在 回复了 zhaodong1 最后由 编辑
                                      #17

                                      zhaodong1 The target stopped in MemManage exception state.

                                      Reason: Unknown at 0x0001235E.

                                      For more information about analyzing faults on Cortex-M, refer to:
                                      https://wiki.segger.com/Cortex-M_Fault.我执行跳转后报错是这样的,,现在看起来能跳转到APP,但是APP不能正常运行,,,同样的APP 工程我用你们的demo跳转后是可以正常运行的0eb3249f-462e-4612-98c6-ca1ccc3932e4-image.png

                                      1 条回复 最后回复
                                      0
                                      • zhaodong1Z 离线
                                        zhaodong1Z 离线
                                        zhaodong1
                                        在 回复了 zhaodong1 最后由 编辑
                                        #18

                                        我的APP单独运行,或者用你们的BTdemo都可以正常运行,我感觉核心原因还是我的BT这一行无法正常通过导致的,我想知道这一行和什么有关,需要做哪些配置才能正常使用19caac7a-f23c-4028-b174-9a8c5efe0dff-image.png

                                        yishui66Y 1 条回复 最后回复
                                        0
                                        • yishui66Y 离线
                                          yishui66Y 离线
                                          yishui66
                                          在 回复了 zhaodong1 最后由 yishui66 编辑
                                          #19

                                          背景: 在Cortex-M33中,用户模式(非特权模式)无法直接操作多数SCB寄存器。非特权访问尝试将触发故障(如MemManage故障或HardFault)。只有特权代码(如操作系统内核或异常处理程序)才能安全地配置这些寄存器。

                                          **分析:**SCB->VTOR赋值属于内核操作,故需要使用特权模式。且YTMEVB_Demo_RevC 这个demo是启用了非特权模式的

                                          方法一: 修改YCT工程配置并重新生成工程
                                          ①YCT工具配置删除以下宏
                                          9adbec80-997d-472c-a1c5-d87f56fa09c4-0c96960d-76ed-4a57-8329-6b9d20ef7e26.png

                                          ②确认所有外设均取消勾选EnableUserModeSupport
                                          948970a8-c564-4f9f-b233-ec430b994889-57bda4e2-4527-4f5b-9ba2-2f09d9b0a9ba.png

                                          方法二: 在代码中直接增加进入特权模式,无需修改YCT配置
                                          69cbb451-1ca9-4af1-9298-ba595f90785b-2e2cf0070fad973803cb915adb976ba9.png

                                          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
                                          • 版块
                                          • 最新
                                          • 标签
                                          • 热门