查看ESP8266 Debug Notes的源代码
←
ESP8266 Debug Notes
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Fatal exception 0 == === 现象 === <source lang=bash> ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 29588, room 16 tail 4 chksum 0x1e load 0x3ffe8000, len 944, room 4 tail 12 chksum 0x11 ho 0 tail 12 room 4 load 0x3ffe83b0, len 7120, room 12 tail 4 chksum 0xe2 csum 0xe2 don't use rtc mem data r\0x18\0x02S System started ... mode : sta(18:fe:34:fe:62:4a) + softAP(1a:fe:34:fe:62:4a) add if0 add if1 dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1) bcn 100 f r0, => Simple POST mjyun_wan_init: init scandone state: 0 -> 2 (b0) state: 2 -> 3 (0) state: 3 -> 5 (10) add 0 aid 7 connected with GAGA-comcat, channel 7 dhcp client start... cnt ip:192.168.1.80,mask:255.255.255.0,gw:192.168.1.1 mjyun_wan_delete: delete mjyun_wan_create: create Platform: MJYUN_CONNECTING mjyun_wan_check_ip: check product ID mjyun_wan_check_ip: try create device mjyun_wan_device_create: request mjyun_wan_device_create: memory left=41128 Fatal exception 0(IllegalInstructionCause): epc1=0x4027d41c, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000 ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 29588, room 16 tail 4 chksum 0x1e load 0x3ffe8000, len 944, room 4 ...... ...... </source> <br> === 分析 === 多次尝试发现都在 0x4027d41c 这个地址出异常,那就看看这个地址的指令是个什么: <source lang=bash> comcat@jackslab:/work/xwifi/noduino-sdk/sketch/mjyun$ ../../toolchain/xtensa-lx106-elf/bin/xtensa-lx106-elf-objdump -S build/app.out >app.s comcat@jackslab:/work/xwifi/noduino-sdk/sketch/mjyun$ vim app.s </source> 0x4027d41c 处,是函数 http_post 的入口: <source lang=bash> 4027d41c <http_post>: * <port> is optional */ void ICACHE_FLASH_ATTR http_post(const char *url, const char *headers, const char *post_data, http_callback_t callback_handle) { 4027d41c: e0c112 addi a1, a1, -32 4027d41f: 7109 s32i.n a0, a1, 28 4027d421: 61f9 s32i.n a15, a1, 24 </source> 并无异常,单独验证 http_post,也没有问题。于是改成直接用 http_request 则出错地址依然一样;初始化的时候 http_post() 请求一下,发现出错地址往后移动了一点 晚上 DDD 回去试了,用老 SDK 的编译环境验证了一下,确认是 ld 链接脚本不一致引起的 很快发现,链接脚本里把 irom 段都放在 0x4028 0000 之前,就没问题了 <br> === 解决 === 进一步判断,是 mjyun_config.h 的这个: <source lang=bash> /* * SPI flash settings * NOTICE---this is for 512KB spi flash. * you can change to other sector if you use other size spi flash. */ #define MJYUN_STORAGE_SECTOR (0x7C) </source> 我们都用的 4MB 的flash 。。。,4MB Flash 正确的用户参数地址应该在 0x3FC000 开始处 因此改为 0x3FC 问题解决 <br>
返回到
ESP8266 Debug Notes
。
个人工具
3.144.38.24
该IP地址的讨论
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面