Hi:
查看map文件,INT_STORAGE_SIZE的值为0(不正常),如下截图:
然后进到OTA_GetMaxAllowedArchSize函数打印出来,使得maxAllowedArchSize这个值正好为0(不正常),如下截图:
把maxAllowedArchSize,gEepromParams_TotalSize_c改成常量,根据你前面截图的值0x0004dfff,如下截图:
然后上传proximity reporter例程, 下载到6%就停掉了。如下截图:
此时mcuxpresso debug 发现程序出错在这里,如下截图:
我们项目代码的bin大小是363KB,如下截图:
otap的ld文件跟你现在用的不太一样,NV_STORAGE_START_ ADDRESS的计算方式不同,应该要用otap的ld文件
这个ld文件可以直接替换吗 ? 我们的项目代码之前是基于sdk2.6.3版本出来之前的版本。
工程发邮件到da.li@nxp.com
刚发过去了。
问题比较复杂了,不能照ota去改,否则会有内存溢出的问题,需要调节一下内存分布了,我还在看
好的,帮忙看怎么处理。
应该没太大问题,先保证编译后的map文件正确
去掉了 fileno;
然后编译还是有报错:
直接复制过来 编译报错
除了刚才说的,还有这个也要加--defsym=__app_stated_size__=294912,加完这两个,生成的map文件再看一下
makefile 文件具体是需要怎么加呢?这里我不太明白,
是把otap例程生成的这段
直接加进来还是?
换回去,查一下UseInternalStorageLink是否定义成1了,到debug/makefile里,查一下
在debug/makefile 里面没有找到这个 UseInternalStorageLink
我觉得问题之一就是这个ld文件造成的,otap移植到其他的例程里,没法使用otap的ld,所以导致内存分配出问题了,还有就是makefile也造成问题,这个UseInternalStorageLink在otap里就是有的,工程私信给我,我来改下ld还有makefile。
是的, 我这边也看到OTAP例程debug里面的makefile文件里面有这个UseInternalStorageLink,
另外私信怎么发呢?
先把你用的ld和map文件上传过来,makefile,那个你先自己加一下吧,加之前先右键工程到属性里,再到c/c++ build,把Generate Makefiles automatically取消勾选
ld和map 已经私信给您了。
这不是有定义 UseInternalStorageLink,加到现在工程的makefile里,改makefile之前先按我之前说的修改ide设置,否则改makefile没有任何效果
目前看有三个地方修改,修改之前别忘备份一下。
1 makefile里要定义 UseInternalStorageLink
2 makefile还要定义__app_stated_size__
这两个都可以参考ota的makefile怎么定义
3 ld文件的NVMSectorCountLink = DEFINED(gNVMSectorCountLink_d) ? gNVMSectorCountLink_d : ( DEFINED(gUseNVMLink_d) ? 32 : 0 );
最后的32:0改成gUseNVMLink_d*63:0
这些修改ota里都有参考
makefile修改如下:
您好, 你有微信或者QQ吗? 我发给你修改下吧
改完后编译报错如上图
改之前是把这个取消勾选 了的,