关于QN9090 SDK2.6.3在现有工程添加OTA例程出错问题

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

关于QN9090 SDK2.6.3在现有工程添加OTA例程出错问题

6,603 Views
zxcv70644
Contributor I

Hi:

   查看map文件,INT_STORAGE_SIZE的值为0(不正常),如下截图:

   

zxcv70644_0-1629252809905.png

然后进到OTA_GetMaxAllowedArchSize函数打印出来,使得maxAllowedArchSize这个值正好为0(不正常),如下截图:

zxcv70644_1-1629252836284.png

把maxAllowedArchSize,gEepromParams_TotalSize_c改成常量,根据你前面截图的值0x0004dfff,如下截图:

zxcv70644_2-1629252882739.pngzxcv70644_3-1629252892157.png

 然后上传proximity reporter例程, 下载到6%就停掉了。如下截图:

zxcv70644_4-1629252911154.png

此时mcuxpresso debug 发现程序出错在这里,如下截图:

zxcv70644_5-1629252926520.png

我们项目代码的bin大小是363KB,如下截图:

 

zxcv70644_6-1629253039205.png

 

0 Kudos
Reply
27 Replies

5,427 Views
nxf56274
NXP Employee
NXP Employee

otap的ld文件跟你现在用的不太一样,NV_STORAGE_START_ ADDRESS的计算方式不同,应该要用otap的ld文件 

acda.PNG

 

0 Kudos
Reply

5,424 Views
zxcv70644
Contributor I

这个ld文件可以直接替换吗 ?   我们的项目代码之前是基于sdk2.6.3版本出来之前的版本。

0 Kudos
Reply

5,360 Views
nxf56274
NXP Employee
NXP Employee

工程发邮件到da.li@nxp.com

0 Kudos
Reply

5,357 Views
zxcv70644
Contributor I

刚发过去了。

0 Kudos
Reply

5,352 Views
nxf56274
NXP Employee
NXP Employee

问题比较复杂了,不能照ota去改,否则会有内存溢出的问题,需要调节一下内存分布了,我还在看

0 Kudos
Reply

5,350 Views
zxcv70644
Contributor I

好的,帮忙看怎么处理。

0 Kudos
Reply

5,420 Views
nxf56274
NXP Employee
NXP Employee

应该没太大问题,先保证编译后的map文件正确

0 Kudos
Reply

5,411 Views
zxcv70644
Contributor I

去掉了 fileno;  

然后编译还是有报错:

  

zxcv70644_0-1629259021713.png

 

0 Kudos
Reply

5,417 Views
zxcv70644
Contributor I

zxcv70644_3-1629257856661.png

 直接复制过来 编译报错

0 Kudos
Reply

5,380 Views
nxf56274
NXP Employee
NXP Employee

除了刚才说的,还有这个也要加--defsym=__app_stated_size__=294912,加完这两个,生成的map文件再看一下

 

0 Kudos
Reply

5,374 Views
zxcv70644
Contributor I

makefile 文件具体是需要怎么加呢?这里我不太明白, 

是把otap例程生成的这段

zxcv70644_0-1629266770534.png

 

   直接加进来还是?

0 Kudos
Reply

5,411 Views
nxf56274
NXP Employee
NXP Employee

换回去,查一下UseInternalStorageLink是否定义成1了,到debug/makefile里,查一下

azx.PNG

0 Kudos
Reply

5,409 Views
zxcv70644
Contributor I

zxcv70644_0-1629259744793.png

debug/makefile  里面没有找到这个 UseInternalStorageLink

0 Kudos
Reply

5,405 Views
nxf56274
NXP Employee
NXP Employee

我觉得问题之一就是这个ld文件造成的,otap移植到其他的例程里,没法使用otap的ld,所以导致内存分配出问题了,还有就是makefile也造成问题,这个UseInternalStorageLink在otap里就是有的,工程私信给我,我来改下ld还有makefile。

0 Kudos
Reply

5,404 Views
zxcv70644
Contributor I

是的, 我这边也看到OTAP例程debug里面的makefile文件里面有这个UseInternalStorageLink,

 另外私信怎么发呢?

0 Kudos
Reply

5,390 Views
nxf56274
NXP Employee
NXP Employee

先把你用的ld和map文件上传过来,makefile,那个你先自己加一下吧,加之前先右键工程到属性里,再到c/c++ build,把Generate Makefiles automatically取消勾选

0 Kudos
Reply

5,381 Views
zxcv70644
Contributor I

ld和map 已经私信给您了。

0 Kudos
Reply

5,372 Views
nxf56274
NXP Employee
NXP Employee

zxc.PNG

这不是有定义 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里都有参考

0 Kudos
Reply

5,364 Views
zxcv70644
Contributor I

makefile修改如下:

 

zxcv70644_0-1629269294444.png

 

您好, 你有微信或者QQ吗? 我发给你修改下吧

0 Kudos
Reply

5,369 Views
zxcv70644
Contributor I

zxcv70644_0-1629269004466.png

改完后编译报错如上图

改之前是把这个取消勾选 了的,

zxcv70644_1-1629269050189.png

 

0 Kudos
Reply