各位专家好,请教一个诡异问题:
我在Eclipse中编译我的ESP-IDF架构demo程序时,IDE报一个提示信息:
Less than 30% of appliction partition size is free(215,968 of 1,048,576 bytes),would you like to increase it?
不过随后的编译,下载bin,启动运行等等步骤都是正常。目前唯一遇到的一个问题是:
assert failed: cn__test__iot__msg__get_packed_size test_iot.pb-c.c:64 (message->base.descriptor == &cn__test__iot__msg__descriptor)
1)我用到protobuf-c,在执行:
cn__test__iot__msg__get_packed_size(&msg);
时报出的错误。反复测试发现,偶尔又能正常运行;
2)进一步看protobuf-c 编译器生成的消息源码,问题出在下列assert的失败:
assert(message->base.descriptor == &cn__test__iot__msg__descriptor)
调试发现:
&cn__test__iot__msg__descriptor是一个固定地址值,我的是: 0x3f4040a4
但
message->base.descriptor 的地址,在多次(出错)重启程序执行之间,会在 0x3f404000 和 0x3f4040a4 两者之间变化.
若为0x3f404000,则程序assert失败而出错。
3)我的ESP32板子是:ESP-WROOM-32D, 购买自:https://item.taobao.com/item.htm?id=647802028587
4)我的的protobuf消息定义如下:
syntax = "proto3";
package cn.test.iot;
option java_package = "cn.test.iot.proto";
option java_outer_classname = "TestIoT";
message Item {
int32 key = 1;
oneof oneof_field {
uint32 d_uint32 = 2;
string d_string = 3;
bytes d_bytes = 4;
bool d_bool = 5;
uint64 d_uint64 = 6;
float d_float = 7;
double d_double = 8;
}
}
message Msg {
repeated Item items = 9;
}
Less than 30% of appliction partition size is free(215,968 of 1,048,576 bytes),would you like to increase it?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: Less than 30% of appliction partition size is free(215,968 of 1,048,576 bytes),would you like to increase it?
那你查一下这个:
是否有多个 message?
Code: Select all
message->base.descriptor 的地址,在多次(出错)重启程序执行之间,会在 0x3f404000 和 0x3f4040a4 两者之间变化.
若为0x3f404000,则程序assert失败而出错。
Who is online
Users browsing this forum: No registered users and 50 guests