根据官方资料,esp32和stm32h7的硬件crc32使用了同一个多项式。但是我实际测试发现,比如一个uint32_t类型的数组,需要把每个uint32_t数据先byteswap,然后再使用crc32_be api,两者才能算得一致的结果,而且esp32的初始值和结果还需要位反转(~),具体的,比如stm32上
static uint32_t chunk[5] =
{ 0x12345678, 0x9ABCDEF0, 0x12345678, 0x00000000, 0xffffffff };
printf("[0x00000000]: 0x%08lx\r\n", HAL_CRC ...
Search found 8 matches
- Wed Jul 20, 2022 12:26 pm
- Forum: ESP-IDF 中文讨论版
- Topic: [已解决] assert failed: heap_caps_free, and panic
- Replies: 3
- Views: 6033
Re: assert failed: heap_caps_free, and panic
最终我找到了问题,和esp-idf无关,是我自己的代码在switch之后又free了一次内存,free了两次所以错了。I am stupid。谢谢你的建议。free 的地址不对了,一种可能是你哪个任务的 stack 太小了。
- Wed Jul 20, 2022 12:17 pm
- Forum: ESP-IDF 中文讨论版
- Topic: [已解决] assert failed: heap_caps_free, and panic
- Replies: 3
- Views: 6033
Re: assert failed: heap_caps_free, and panic
谢谢你的建议,我增加了stack,拿掉了所有malloc/free代码,之后看到确实是可以工作的。
我现在缩小了问题范围;我发现只要我在一个任务里malloc过内存,即使立刻free,什么也不做;最终也会引起(另一个任务里)esp_http_client发生错误,有时候是在open时,有时候时cleanup时;都和堆内存相关。
是直接用malloc/free不行吗?需要用特别的malloc/free函数?还是需要什么配置?
我现在缩小了问题范围;我发现只要我在一个任务里malloc过内存,即使立刻free,什么也不做;最终也会引起(另一个任务里)esp_http_client发生错误,有时候是在open时,有时候时cleanup时;都和堆内存相关。
是直接用malloc/free不行吗?需要用特别的malloc/free函数?还是需要什么配置?
- Wed Jul 20, 2022 4:04 am
- Forum: ESP-IDF 中文讨论版
- Topic: [已解决] assert failed: heap_caps_free, and panic
- Replies: 3
- Views: 6033
[已解决] assert failed: heap_caps_free, and panic
我的应用启动后总是遇到相似的错误,然后发生重启,不知道怎么debug。因为这个错误我重新安装了esp-idf, 4.4.x版本。但没能消除错误。同样的代码几个月之前是工作的。我想问一下可能是什么原因?
每次不完全一样但是经常看到这句:
assert failed: heap_caps_free heap_caps.c:339 (heap != NULL && "free() target pointer is outside heap areas")
每次不完全一样但是经常看到这句:
assert failed: heap_caps_free heap_caps.c:339 (heap != NULL && "free() target pointer is outside heap areas")
- Thu Feb 24, 2022 6:10 am
- Forum: ESP-IDF
- Topic: SD card write speed
- Replies: 9
- Views: 32767
Re: SD card write speed
Also, read 64MB data took around 50s in 1bit mode and 40s in 4bit mode. No idea why.
The code are simple and straightforward:
```
sdmmc_card_t card;
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
host.max_freq_khz = SDMMC_FREQ_HIGHSPEED;
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT ...
The code are simple and straightforward:
```
sdmmc_card_t card;
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
host.max_freq_khz = SDMMC_FREQ_HIGHSPEED;
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT ...
- Thu Feb 24, 2022 5:57 am
- Forum: ESP-IDF
- Topic: SD card write speed
- Replies: 9
- Views: 32767
Re: SD card write speed
I encountered the same problem on the same board, lyrat 4.3. Writing 64MB data took over 150 seconds on a sandisk 32GB card in 1bit mode. and Changing to 4bit mode does not help at all. Also, using the sdmm_write_sectors() without fatfs got a similar result, which is very weird.
- Fri Nov 26, 2021 4:28 am
- Forum: ESP-ADF 中文讨论版
- Topic: Downmix的噪音问题
- Replies: 2
- Views: 13663
Re: Downmix的噪音问题
我把整个链路上能增加ringbuffer大小的地方都做了相应的调整,把能设置stack_in_ext的element都设置成false;解码音质出现显著改善。
我使用的是LyraT板子,起码对于这块板子,Downmix的例子里mp3 decoder缺省使用stack_in_ext=true是不对的,严重恶化音质,修改为false是最能提高音质的设置。
我使用的是LyraT板子,起码对于这块板子,Downmix的例子里mp3 decoder缺省使用stack_in_ext=true是不对的,严重恶化音质,修改为false是最能提高音质的设置。
- Thu Nov 25, 2021 11:00 am
- Forum: ESP-ADF 中文讨论版
- Topic: Downmix的噪音问题
- Replies: 2
- Views: 13663
Downmix的噪音问题
使用esp-adf里advanced_examples/downmix_pipeline例程,完全不改动代码;使用官方提供的音频样本
https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/audio-samples.html
使用这个文件 ff-16b-2c-44100hz.mp3 作为例子里base_file,newcome可以随便找个符合码率要求的文件,而且实际可以不使用,即不去按下mode键,也不会播放第二个文件。
单单播放第一个文件就已经能听到明显的音质显著下降和噪音,尤其是在低音开始的时候 ...
https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/audio-samples.html
使用这个文件 ff-16b-2c-44100hz.mp3 作为例子里base_file,newcome可以随便找个符合码率要求的文件,而且实际可以不使用,即不去按下mode键,也不会播放第二个文件。
单单播放第一个文件就已经能听到明显的音质显著下降和噪音,尤其是在低音开始的时候 ...