R5F10Pgg OTA via UART bin文件传输失败

请教一下,在ota升级  传输app的bin文件过程中出现下述情况,是不是因为  app  bin文件有128k  ,codeflash总共为128k    但是写入起始位置为0x4000,所以app  的数据还没写完  codeflash'空间就用完了,才导致这样?

  • 上面packet = 897, 每一个包是128byte, 也就是 897 * 128 = 1C080H, 写入的首地址是4000H,所以

    4000H + 1C080H = 20080H > 128K

    当然写不进去了,

    不是另外一个帖子和你说过吗, 你要写入的bin文件是4000H - 1FFFFH 这个空间的, 你在编译App时候, 要把这个空间的数据分离出来. 只有112K, 不可能有128K这么大. 128K是 0-1FFFFH这么大的空间.

    另外再仿真的时候, 由于仿真器的firmware需要占用一定的ROM空间, 一般在最后的xxxE00H-xxxFFFH, 所以你仿真的时候, 的bin文件还没有112K这么大.

    做Xmodem 传送的bin文件最大只能是112K,

  • 不好意思,请问把4000H - 1FFFFH这个空间的数据分离出来要怎么做呢

  • 详细参考样例程序, 下图是把2000H-FBFFH分离出来, 格式是hex, 如果你要的格式是bin, 就要修改格式为bin.

  • 这个我已经设置过了。这是我的appbin文件 您可以帮忙看一下吗

    uart3.zip

  • 我这样设置出来是119K, 前面0-2000H是8K, 你搞不定就把工程发给我

    你分离出来的文件名是flash4000-1FFFF.bin, 你给我的是uart3.bin, 两个文件不是一码事.

    你用xmodem传输的文件应该是flash4000-1FFFF.bin, 这个才是app的数据, 用错文件了!!!

  • Thumbsup非常感谢   黄工,crc校验  output address  我设置的   FBF4,target range  是4000 - FBF3

    然后裁剪了4000 - FFBF的数据(大小有48K),数据可以正常传输,但是 Update flash  area  :Failed

    请问我这样裁剪app  有问题吗?

  • 首先按照你的要求我们划分ROM 空间, boot = 0- 3FFFH, App = 4000H-1FFFFH. 那么所有的都是基于这个大的框架.从而定义 FLASH_TABLE = 4000H.

    下面是你的工程的主要问题.

    1 先说Boot 区: user_def.h里面相应地都要跟着改. FLASH_AREA 就不可能是2200H, 虽然boot 和app是独立的工程, 但空间分配上是相互关联的, 应该设置为4000H. 这个在Xmodem写flash时是需要用到的. 地址不对, 也就出现错误了.

    2 App工程, 原样例程序APP是2000H-FFFFH, 其中在2000H放置映射的向量表FLASH_TABLE, 而程序入口是在2200H, 这个设置是在section里面的.

    按照你的工程总体设置, App是4000H- 1FFFFH, 那么这个入口地址应该设置成4200H. 而不是3000H, 这个和整个空间划分不符.

    boot 和 app 空间上没有重叠, 它们就是通过中断向量表做映射而已. 

    所以建议你还是把原来的样例工程吃透, 其实并没有什么复杂, 不同MCU的ROM或大或小, 只是做一下地址偏移就行了. 你这个两个程序空间分配比较乱.

  • 不好意思  黄工,再打扰一下,首先,抱歉,我的工程发错了,出现update  failed  这个结果是基于  图123的设置下发生的。 

                                             图1

            

                                 图2     boot                                               图3  app

     

    通过查看源码我发现