"可能是你那边ETH+BLE内存用超了导致的卡死" -- 请问上限内存是多少?另外有什么方法可以知道是否超过了?
ble.map文件如下,要检查哪一个是否超过了上限?谢谢!
"可能是你那边ETH+BLE内存用超了导致的卡死" -- 请问上限内存是多少?另外有什么方法可以知道是否超过了?
ble.map文件如下,要检查哪一个是否超过了上限?谢谢!
FLASH内存倒是剩不少,问题主要应该在您的RAM区,最大是32K,您这边已经用了将近31K
我配置的是IRAM1 0x20000000, 大小是0x4000 (16K), IRAM2 0x20004000,大小也是0x4000(16K),请问IRAM1还是IRAM2超过了,怎么判断?
这种情况下,flash代码增加后,蓝牙都无法搜索到。不知道如何debug?怎么知道是IRAM1不够了,还是IRAM2不够了?
一般的程序RAM使用量建议控制在95%以下,尽量给栈留出2KB以上的空间。
如果您坚持需要用这么大的ram内存,建议您更换CH32V208系列单片机使用。
CH32V208同样支持BLE+ETH,同时RAM为64KB
如果上面Total RW size我们控制BLE.map里编译后显示在30K以内,那么是否会IRAM1或者IRAM2满了,总的没有满?此时是否也会有异常?能否知道IRAM1和IRAM2实际各占了多少k?
实际上IRAM1和IRAM2是按照顺序填充的,只有IRAM1填满了,才会顺着地址填充至IRAM2,因此假设您的RAM如果使用量为30K,那么IRAM1必定为16K,IRAM2为30-16=14K。
谢谢!BLE_MEMHEAP_SIZE我看到config.h里有这个定义,缺省是6K,请问这个是从哪个地址开始的?
这个BLE的内存如果你不指定它从哪里开始的话,它会自己随机找个地址作为它的起始地址的
请问这个BLE_MEMHEAP_SIZE选多少比较合适,根据什么来选择比较合理?
一般地,平常使用,如果连接的蓝牙设备为一个的情况下,程序中所设定的6K是能满足大部分场景下的使用需求的,如果设备增加至3-4个的时候,可以适量将该大小增加至8K左右。