SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Tue Feb 23, 2016 8:05 pm

我的flash为 1024kbyte,支持 OTA,
以前程序在sdk1.3.0版本时,运行正常,但升级到 1.5.2后,运行异常。
现象为: 开机正常运行,但写flash后,重启,异常,log如后。
查好像是 写flash ”user param“区出错。我的一些参数 想保存在 16kb的 ”user param“区:
struct device_param {
uint16 a;
uint16 b;
uint16 c;
uint8 pad[2];//填充, 4字节对齐
};

#define USER_PARAM_START_ADDR (0x7C)
int ret = spi_flash_write(USER_PARAM_START_ADDR * SPI_FLASH_SEC_SIZE, (uint32 *) p, sizeof(struct device_param));
查ret为0,
写完后重启,就出现异常。
请帮助,谢谢!

------------------------------------------------------------------------------------------
ets Jan 8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79

2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : DOUT
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000054, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000054, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000054, depc=0x00000000
。。。
。。。
Attachments
烧录配置_截图_20160224101219.png

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Thu Feb 25, 2016 10:37 am

问题很急啊,怎么没人回复呢?还在放假中,或别的什么情况?

wuhan
Posts: 1
Joined: Thu Feb 25, 2016 11:14 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby wuhan » Thu Feb 25, 2016 11:23 am

maybe you can try to erase the sector , then write it again?...

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Mon Feb 29, 2016 11:04 am

谢谢回复,已经试过erase整个flash,无效

ESP_Faye
Posts: 1646
Joined: Mon Oct 27, 2014 11:08 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby ESP_Faye » Wed Mar 02, 2016 5:25 pm

您好,

能否提供您的测试代码?我们将协助您进行查证。

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Wed Mar 02, 2016 5:57 pm

谢谢,整理测试代码中。。。
有点奇怪,我只保留了测试代码,去掉一些业务逻辑后,这个问题不出现了,
另一个问题 ”微信airkiss配网、内网发现“ 也不出现了。
我再看看代码,
去掉了 几个 timer, 写 rtc-memory,。。。
请给点提示建议呢?谢谢!

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Fri Mar 11, 2016 4:44 pm

您好,如上,加入业务逻辑后,跟踪了一下代码,发现在user_webserver.c中, webserver_recv()函数里, POST,
进入 1573行: “ } else if (os_strcmp(pURL_Frame->pFilename, "wifi") == 0) { ”
......
json_parse(&js, pParseBuffer);
在这行之前 调用 system_restart(), 重启正常,
在这行之后 调用 system_restart(), 打印乱码,重启异常,
......
会不会是在libjson.a里 ram 不够引起的问题?(同样的代码在sdk1.3.0版本运行正常)
在 json_parse() 前 用 system_print_meminfo()打印的 信息如下:
data : 0x3ffe8000 ~ 0x3ffe8b54, len: 2900
rodata: 0x3ffe8b60 ~ 0x3ffe9888, len: 3368
bss : 0x3ffe9888 ~ 0x3fff0048, len: 26560
heap : 0x3fff0048 ~ 0x3fffc000, len: 49080
system_get_free_heap_size()打印为: 43896

急,请帮助分析,谢谢!

ESP_Faye
Posts: 1646
Joined: Mon Oct 27, 2014 11:08 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby ESP_Faye » Tue Mar 15, 2016 11:00 am

您好,

system_restart() 并不会立即重启,而是到系统的 idle task 中才执行重启,也就是要等系统完成一些重启前的准备,才会重启。
但 system_restart 中会做清除状态的动作,也就是重启前的准备。因此不建议在它之后继续做其他操作,直接 return 即可。
例如:

Code: Select all

json_parse(&js, pParseBuffer);
system_restart();
return;

Goland
Posts: 28
Joined: Fri Oct 23, 2015 10:45 am

Re: SDK从1.3.0, 升级到1.5.2版本后,flash “user param”区 写出错?

Postby Goland » Fri Mar 18, 2016 8:49 am

加了return还是一样的现象,问题没解决。
更确切的地方是user_json.c中,json_parse()函数中, c->set(json, &js); 这行出错,
在这行之前 调用 system_restart(),;return;重启正常,
在这行之后 调用 system_restart(),return; 打印乱码,重启异常,

Who is online

Users browsing this forum: No registered users and 14 guests