Less than 30% of appliction partition size is free(215,968 of 1,048,576 bytes),would you like to increase it?

jungle
Posts: 1
Joined: Fri Jul 29, 2022 4:26 pm

Less than 30% of appliction partition size is free(215,968 of 1,048,576 bytes),would you like to increase it?

Postby jungle » Fri Jul 29, 2022 5:04 pm

各位专家好,请教一个诡异问题:

我在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;
}

ESP_Gargamel
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?

Postby ESP_Gargamel » Tue Aug 02, 2022 1:09 am

那你查一下这个:

Code: Select all

message->base.descriptor 的地址,在多次(出错)重启程序执行之间,会在 0x3f404000 和 0x3f4040a4 两者之间变化.
若为0x3f404000,则程序assert失败而出错。
是否有多个 message?

Who is online

Users browsing this forum: No registered users and 109 guests