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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1ME05 UDS CAN FBL公版操作指南

YTM32B1ME05 UDS CAN FBL公版操作指南

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

    本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;基于Demo板硬件搭建实施;使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件。
    ef6fee85-1fcc-4a93-9ee1-2ce15af1891b-image.png

    1. 烧录Bootloader
      新建YTM32B1ME05的JFLASH工程
      bb461804-ef97-4a53-a355-3e5207e163c5-image.png
      找到Bootloader编译的烧程文件
      文件路径:
      .\uds_can_fbl_me05_release_20250730\uds_can_bootloader\build\uds_can_bootloader.s19
      5ffee699-aa4e-4d4c-85b3-2431c6ae7474-image.png
      加载Bootloader文件
      b2df279f-fbb5-4b9d-9e43-c49206d1cb35-image.png
      擦除芯片(或者快捷键F4)
      7265c86f-9fca-4b38-b8fd-a500c19a3336-image.png
      fcdbab1a-dcd2-443e-b0f3-097d0cbf959c-image.png
      烧录程序(或者快捷键F6)
      e60dd1ce-e8c0-4500-a80c-09d67d0c3cb5-image.png
      47deeac3-4018-410f-9ed7-f2524cdff762-image.png
    2. 上下电运行Bootloader
      拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。
    3. 升级上位机配置
      将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
      文件路径:.\uds_can_fbl_me05_release_20250730\UDS_CanFbl_TsMaster
      55a30316-22cb-4f15-a0a9-f892288898d6-image.png
      打开升级上位机工程(如上图中.TSProj_x86文件)配置收发ID
      9a909b8d-a2d8-40c5-a3d6-658967a9dfaf-image.png
      配置TP时间参数,配置加密dll
      f2076298-285e-4a78-b54c-3bae6e13338c-image.png
      配置FlashDriver和Application和校验方式
      8d884654-ced9-4988-9074-f41de501f671-image.png
      若是修改 flashdriver/app 文件命名,需要修改对应校验的请求值
      e8f40f9d-87a2-4ff0-af11-f0873b208c27-image.png
      配置自动诊断流程
      2f5c0311-349c-4cf7-981d-cbc503403d8a-image.png
    4. 执行升级
      4.1 从Bootloader升级
      1b781e1b-68b3-4387-89ab-605010aabcc6-image.png
      升级完成后,LED灯1000ms闪烁,运行在Application程序中(Bootloader程序中LED灯100m闪烁)。
      4.2 从Application升级
      从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
      de87b80e-cd0a-4111-853a-8ebdff2b6776-image.png
      升级过程中,运行在Bootloader程序中,LED灯100ms闪烁,升级完成后,LED灯1000ms闪烁,运行在Application程序中。

    4.3 StayInBoot升级
    从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
    本方案设计上认为:
    运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
    4.3.1 未发生升级流程请求
    升级一半,拔掉CAN线模拟通讯断开,升级失败
    0319dbad-2707-46f8-acdd-431fd4c42852-image.png
    通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯1000ms闪烁。
    4.3.2 已发生升级流程请求
    执行到升级流程后,拔掉CAN线模拟通讯断开,升级失败
    aaf00cee-307b-41b2-bdc3-33b8b39b374b-image.png
    通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot)。
    重新执行升级
    80306f67-cb08-4064-898d-e1dd627e6118-image.png
    升级成功,Demo板上LED灯1000ms闪烁。
    5. 附件代码
    uds_can_fbl_me05_release_20250730.zip

    1 条回复 最后回复
    0
    • ganyongchaoG ganyongchao 在 中 引用了 这个主题
    • HEXH 离线
      HEXH 离线
      HEX
      在 回复了 carpe 最后由 编辑
      #4

      carpe
      请问下在那里可以找到FlashDriver工程?

      carpeC 1 条回复 最后回复
      0
      • wuxuedongW 离线
        wuxuedongW 离线
        wuxuedong
        写于 最后由 编辑
        #2

        有图莫斯TCANLINPro作为上位机的版本吗

        carpeC 1 条回复 最后回复
        0
        • carpeC 离线
          carpeC 离线
          carpe YunTu
          在 回复了 wuxuedong 最后由 编辑
          #3

          wuxuedong 暂没有适配该工具链上位机,UDS 诊断为公开通用协议,可以根据我们 TSMaster 上位机工程中诊断流程的服务,在图莫斯工具的添加自行测试适配

          HEXH 1 条回复 最后回复
          0
          • HEXH 离线
            HEXH 离线
            HEX
            在 回复了 carpe 最后由 编辑
            #4

            carpe
            请问下在那里可以找到FlashDriver工程?

            carpeC 1 条回复 最后回复
            0
            • carpeC 离线
              carpeC 离线
              carpe YunTu
              在 回复了 HEX 最后由 编辑
              #5

              HEX 参考下论坛这个帖子,按照这个帖子的操作下
              452e76c8-37b6-4977-84bf-03d7de92ba05-image.png
              https://forum.ytmicro.com/topic/164/ytm32mc03-有没有ram-flashdriver的案例-做boot用的/14?_=1754292813937

              1 条回复 最后回复
              0
              • ganyongchaoG ganyongchao 在 中 引用了 这个主题
              • JCJ 离线
                JCJ 离线
                JC
                写于 最后由 编辑
                #6

                请问,以上工程,切换到SDK1.40版本后,独立的flashdriver工程下载后无法使用是什么原因呢。 driver多了instance参数以及增加了在调用擦写前的init逻辑。ld文件和__attribute__((section (".fls_drv_tbl")))、attribute((section (".fls_drv")))需要变更么,二进制码完全相同。在flashdriver工程中测试可以通过,下载到固定地址,如:20003000之后就失败了。

                carpeC 1 条回复 最后回复
                0
                • JCJ 离线
                  JCJ 离线
                  JC
                  写于 最后由 编辑
                  #7

                  还有就是,boot中IVT占用0x400空间,生成bin文件之后,下载flashdriver到0x20003000,调用时是不是要从0x20003400开始,还是有什么生成方法可以去掉IVT的空间。

                  1 条回复 最后回复
                  0
                  • carpeC 离线
                    carpeC 离线
                    carpe YunTu
                    在 回复了 JC 最后由 编辑
                    #8

                    JC flashdrv 是固定在 ram 0x20003000 的位置
                    ScreenShot_2025-11-10_141311_076.png

                    JCJ 1 条回复 最后回复
                    0
                    • JCJ 离线
                      JCJ 离线
                      JC
                      在 回复了 carpe 最后由 编辑
                      #9

                      carpe 您好,这个flashdrv是flashdriver生成的hex文件还是bin文件。 是在ld文件中已经去掉了IVT么,不然IVT的0x400空间编译完不能不算吧。这个具体编译的时候是怎么配置内存空间的呢?

                      D 1 条回复 最后回复
                      0
                      • D 离线
                        D 离线
                        Derrick YunTu
                        在 回复了 JC 最后由 编辑
                        #10

                        JC 我们一般用的是S19文件。
                        Flashdriver是不包含IVT的,Flashdriver是下载到MCU的RAM中,供Boot调用擦写和编程app的Flash分区。
                        IVT包含在Flash程序的前面,第一个字节是栈顶指针,后面跟随的是所有中断的中断向量表。
                        我们的IVT再YT_link里默认是0x400字节,实际用不到这么多,可根据实际应用情况调整。

                        JCJ 1 条回复 最后回复
                        0
                        • JCJ 离线
                          JCJ 离线
                          JC
                          在 回复了 Derrick 最后由 编辑
                          #11

                          Derrick S19文件,用cmake生成时,会自动剔除IVT部分么?还是生成之后手动修改,或者在flashdriver中划分内存的时候,用我们ytconfig工具,关闭device。不划分ivt。直接从0开始TEXT部分

                          D 1 条回复 最后回复
                          0
                          • D 离线
                            D 离线
                            Derrick YunTu
                            在 回复了 JC 最后由 编辑
                            #12

                            JC 不要去除IVT部分,这和MCU的启动流程紧密相关。下载flashdriver到0x20003000,调用时不需要从0x20003400开始,flashdriver不包含IVT,flashdriver和IVT也没有直接联系。

                            JCJ 1 条回复 最后回复
                            0
                            • JCJ 离线
                              JCJ 离线
                              JC
                              在 回复了 Derrick 最后由 编辑
                              #13

                              Derrick 11ad77bc-f634-41b9-9dce-da10b03ef380-image.png e043e18d-33f1-4299-bd69-3777fe22b116-image.png 您好,S19下载的时候,只选数据块1,驱动会有问题。 但是要是下载bin文件格式,将整个bin下载到20003000地址,之后从20003400开始调用就没问题。

                              D 1 条回复 最后回复
                              0
                              • D 离线
                                D 离线
                                Derrick YunTu
                                在 回复了 JC 最后由 编辑
                                #14

                                JC 为啥要分一段FLS_DRV_TEXT,用来存放Flashdriver吗?我们的flashdriver是下载在ram里,像下图这样:
                                c14e46a5-10ce-4d8e-84e6-5e031918cdda-image.png
                                然后app程序下载如下图,0xA000之前是boot,
                                17653256-30b0-4b69-9696-96b826a95290-image.png
                                如果app的S19文件分了很多段,下载时可能校验出错,可以使用脚本填充。
                                如果你下载Flashdriver的bin文件到20003000,可以看一下实际下载的bin文件长度,20003000到20003400这段是否有填充,也可以去看MCU的内存,Flashdriver_bin到底是存放在20003000还是20003400

                                JCJ 1 条回复 最后回复
                                0
                                • JCJ 离线
                                  JCJ 离线
                                  JC
                                  在 回复了 Derrick 最后由 编辑
                                  #15

                                  Derrick 是flashdriver的代码中的ld文件,用__attribute__((section (".fls_drv_tbl")))固定驱动函数到FLS_DRV_TEXT,使其从偏移0x400开始,还有其他方法,使得直接读取0x20003000处的代码就是driver吗? 我这边当前操作没有做填充

                                  D 2 条回复 最后回复
                                  0
                                  • D 离线
                                    D 离线
                                    Derrick YunTu
                                    在 回复了 JC 最后由 Derrick 编辑
                                    #16
                                    此主題已被删除!
                                    1 条回复 最后回复
                                    0
                                    • D 离线
                                      D 离线
                                      Derrick YunTu
                                      在 回复了 JC 最后由 编辑
                                      #17

                                      JC 这个是flash里的flashdriver,没必要这么搞,这么做还不如直接使用SDK的flash驱动。正常的流程是上位机通过34/36/37服务把flashdriver下载到指定地址(0x20003000),MCU再从这个地址去调用。等到对app分区的擦写和编程完成之后跳转app,重新执行ram初始化,这段flashdriver就丢失了,MCU的flash就没有被误擦的风险。
                                      建议参考本帖子例程的升级流程去适配你们的需求。

                                      JCJ 1 条回复 最后回复
                                      0
                                      • JCJ 离线
                                        JCJ 离线
                                        JC
                                        在 回复了 Derrick 最后由 编辑
                                        #18

                                        Derrick 好的,方便分享以下您的flashdriver内存分配么,(flashdriver代码的ld文件)

                                        D 1 条回复 最后回复
                                        0
                                        • D 离线
                                          D 离线
                                          Derrick YunTu
                                          在 回复了 JC 最后由 编辑
                                          #19

                                          JC flashdriver可以用做好的,比如说本例程,直接用flashdriver_0x20003000.S19通过上位机刷写下载到指定位置。
                                          也可以先参考下面这篇文章,去复制相应的bin数组到0x20003000,按照接口定义调用,在现有工程上验证。
                                          https://forum.ytmicro.com/topic/164/ytm32mc03-有没有ram-flashdriver的案例-做boot用的?_=1762745176836

                                          1 条回复 最后回复
                                          0
                                          • kid_liK 离线
                                            kid_liK 离线
                                            kid_li
                                            写于 最后由 编辑
                                            #20

                                            将application起始地址改为pflash1的0x00080000,bootloader也将APP_IMAGE_START改为0x00080000,测试第一次下载提示crc错误,第二次擦除flash后只传了一包数据就失败了,第三次擦除flash就失败,请问是什么原因呢?P.S. 我在bootloader尝试写pflash1是可以的,只是0xfffff最后一个扇区的2KB不能写。
                                            Derrick

                                            1 条回复 最后回复
                                            0

                                          • 云途开发生态介绍

                                            快速上手云途开发生态

                                          • 云途论坛规则/Yuntu Forum Rules

                                            发帖前请查看

                                          • YT CONFIG TOOL调查问卷

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

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

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