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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. 使用云途uds_pc_tool对单片机进行升级,在DownloadFile最后一包数据时报错

使用云途uds_pc_tool对单片机进行升级,在DownloadFile最后一包数据时报错

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

    使用云途uds_pc_tool对单片机进行升级,在DownloadFile最后一包数据时报错。报错信息如下:
    p1.jpg
    我在uds_can的代码中插入打印信息,证实了确实是在最后一包数据写FLASH时返回了-1。打印信息如下:
    p2.jpg
    我将0x21400地址的数据读出来和BIN文件对比,发现数据是写入成功了的。请问我应该如何解决这个问题?

    1 条回复 最后回复
    0
    • jiankang_wangJ 离线
      jiankang_wangJ 离线
      jiankang_wang YunTu
      写于 最后由 编辑
      #10

      ⚠️问题出在你的配置上。
      你修改了writeAppInfo服务的地址到flash上,并且将App的起始地址改为了 0xB600
      但是并没有修改Flash擦除的地址,这就导致在进行下载App的时候,指擦除了 0xB400~0xB400 + AppSize区间的 flash。但是实际下载App的时候是写入到 0xB600~0xB600 + AppSize。所以最后一帧没有擦到,导致写的时候失败了。


      ✅解决方式
      方式一:可以通过新增一个服务,擦除AppInfo区域的flash,起始地址为0xB400,大小可以简单的设置为0x0200。然后修改擦除AppFlash区域的服务起始地址为0xB600。测试是可以正常下载了
      方式二:可以通过修改脚本,增加flash地址擦除的大小:
      a37013d9-7df1-4e9b-a32d-8ceab7d57bbf-image.png


      前面提到的数据写入是成功了的,是由于第一次写入了App的数据,这一次是擦除了芯片的,所以是可以正常写入。第二次下载的时候,由于第一次写入的数据还在,所以看起来是写入成功了

      1 条回复 最后回复
      1
      • jiankang_wangJ 离线
        jiankang_wangJ 离线
        jiankang_wang YunTu
        写于 最后由 编辑
        #2

        看起来是在这一行返回的负响应,打个断点调试一下看看,前面的写flash操作为什么失败了:
        ce18f56a-d21c-471d-a9ea-0bdf850d567a-image.png

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

          是的,程序是在这一行返回了负响应。我查看了FLASH的内容,数据写入是成功了的。我的板子硬件是5V供电的,还有一些外部电源和隔离的扩展接口,没法打断点调这部分代码。请问这个问题是pc_tool还是uds_can引起的?

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

            前面写flash的参数提供一下勒。用到是什么系列的芯片,编译器和优化等级也最好提供一下

            1 条回复 最后回复
            0
            • jiankang_wangJ 离线
              jiankang_wangJ 离线
              jiankang_wang YunTu
              写于 最后由 编辑
              #5

              不能打断点意思是不能debug?这个问题看起来不太像是pc_tool的问题,不过需要根据调用flash driver的参数才能进一步确认。

              yanjun1972Y 1 条回复 最后回复
              0
              • yanjun1972Y 离线
                yanjun1972Y 离线
                yanjun1972
                写于 最后由 yanjun1972 编辑
                #6

                我们这个项目是使用的YTM32B1MC0ЗH0MLHT芯片。用的是GCC+VS+JLINK开发环境。我打印信息是加在这里的:
                image.png
                我把调用FLASH写入函数时把输入的参数打印出来了的。

                1 条回复 最后回复
                0
                • jiankang_wangJ 离线
                  jiankang_wangJ 离线
                  jiankang_wang YunTu
                  写于 最后由 jiankang_wang 编辑
                  #7

                  flash driver的bin文件发来对比一下.还有uds的版本提供一下

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

                    这是我的uds_can版本:
                    image.png
                    这是我的代码:
                    uds_can.zip
                    由于bootloader增加了功能,因此我改动了FLASH的布局。pc_tool我也重新进行了配置,请帮忙看看是不是改对了的。flash driver在这个压缩文件里。

                    1 条回复 最后回复
                    0
                    • yanjun1972Y 离线
                      yanjun1972Y 离线
                      yanjun1972
                      在 回复了 jiankang_wang 最后由 编辑
                      #9

                      jiankang_wang 在 使用云途uds_pc_tool对单片机进行升级,在DownloadFile最后一包数据时报错 中说:

                      不能打断点意思是不能debug?这个问题看起来不太像是pc_tool的问题,不过需要根据调用flash driver的参数才能进一步确认。

                      是的,因为要板子是5V供电,并且5V上还有隔离电源供给隔离CAN。用JLINK的3.3V供电CAN的收发器不能运行,所以不能debug。

                      1 条回复 最后回复
                      0
                      • jiankang_wangJ 离线
                        jiankang_wangJ 离线
                        jiankang_wang YunTu
                        写于 最后由 编辑
                        #10

                        ⚠️问题出在你的配置上。
                        你修改了writeAppInfo服务的地址到flash上,并且将App的起始地址改为了 0xB600
                        但是并没有修改Flash擦除的地址,这就导致在进行下载App的时候,指擦除了 0xB400~0xB400 + AppSize区间的 flash。但是实际下载App的时候是写入到 0xB600~0xB600 + AppSize。所以最后一帧没有擦到,导致写的时候失败了。


                        ✅解决方式
                        方式一:可以通过新增一个服务,擦除AppInfo区域的flash,起始地址为0xB400,大小可以简单的设置为0x0200。然后修改擦除AppFlash区域的服务起始地址为0xB600。测试是可以正常下载了
                        方式二:可以通过修改脚本,增加flash地址擦除的大小:
                        a37013d9-7df1-4e9b-a32d-8ceab7d57bbf-image.png


                        前面提到的数据写入是成功了的,是由于第一次写入了App的数据,这一次是擦除了芯片的,所以是可以正常写入。第二次下载的时候,由于第一次写入的数据还在,所以看起来是写入成功了

                        1 条回复 最后回复
                        1
                        • jiankang_wangJ jiankang_wang 在 中 引用了 这个主题
                        • jiankang_wangJ jiankang_wang 在 中 引用了 这个主题
                        • ,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
                        • 版块
                        • 最新
                        • 标签
                        • 热门