RMT functions not in IRAM

szguyer
Posts: 19
Joined: Thu Jan 11, 2018 5:41 pm

RMT functions not in IRAM

Postby szguyer » Fri Dec 04, 2020 12:58 am

Hello,

I have been working on improvements to the FastLED driver for ESP32 based on the RMT device, and I've run into a problem when our code is run in conjunction with flash-based file systems. Users are reporting that their programs occasionally trigger a cache access failure when attempting to write out the LED data. You can see some of the discussion here: https://github.com/FastLED/FastLED/issues/1115

The problem is that our driver calls RMT functions (like rmt_tx_start) in the ESP-IDF library that are not in IRAM. So, when flash access occurs on the other core, these calls trigger a cache access failure. My stop-gap solution is to replace those calls with the underlying low-level code (direct access to the RMT memory-mapped registers), but that totally breaks the "hal" abstraction that the newer versions of ESP-IDF have been using.

Are there any other good solutions for this problem?

Who is online

Users browsing this forum: Baidu [Spider] and 160 guests