请教一下,在ota升级 传输app的bin文件过程中出现下述情况,是不是因为 app bin文件有128k ,codeflash总共为128k 但是写入起始位置为0x4000,所以app 的数据还没写完 codeflash'空间就用完了,才导致这样?
我这样设置出来是119K, 前面0-2000H是8K, 你搞不定就把工程发给我
你分离出来的文件名是flash4000-1FFFF.bin, 你给我的是uart3.bin, 两个文件不是一码事.
你用xmodem传输的文件应该是flash4000-1FFFF.bin, 这个才是app的数据, 用错文件了!!!
上面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
非常感谢 黄工,crc校验 output address 我设置的 FBF4,target range 是4000 - FBF3
然后裁剪了4000 - FFBF的数据(大小有48K),数据可以正常传输,但是 Update flash area :Failed
请问我这样裁剪app 有问题吗?
uart3_app.zip
boot.zip
首先按照你的要求我们划分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
通过查看源码我发现