How to access "tools/sdk/ld/esp32.peripherals.ld"?

Good afternoon !

I want to use the P3RGB64x32MatrixPanel library for ESP32.

Under Installation is says:

You should patch the tools/sdk/ld/esp32.peripherals.ld to avoid random pixel noise on the display as following:

/* PROVIDE ( GPIO = 0x3ff44000 ); */
PROVIDE ( GPIO = 0x60004000 );

Please refer section 3.3. in https://www.espressif.com/sites/default/files/documentation/eco_and_workarounds_for_bugs_in_esp32_en.pdf for more details.

tools/sdk/ld/esp32.peripherals.ld is easy to find when using Arduino IDE, but not so when using VSC and PlatformIO IDE.

Under section 3.3 of the .pdf it says:

This issue is automatically worked around in the drivers of ESP-IDF V1.0 and newer.

This is what’s inside my platformio.ini:

[env:esp32doit-devkit-v1]
platform = https://github.com/platformio/platform-espressif32.git#feature/stage
board = esp32dev
framework = arduino

In the February 22 release we got ESP-IDF framework updated to 3.1.3.

Is it safe to assume that the issue found with the GPIO is fixed now and I don’t have to go look around for tools/sdk/ld/esp32.peripherals.ld and modify the aforementioned values ?
Or do I still have to get in there and change those values ?

Thank you !

The workaround seems to be to write to the different series of addresses, if the issue wasn’t resolved in your ESP32’s silicon revision. I can’t comment as to whether the issue is fixed or not, or still relevant.

However, the path to tools/sdk/ld/esp32.peripherals.ld using your platformio.ini config on windows is (just add %localappdata%\.platformio\packages\framework-arduinoespressif32 to what you had before):

%localappdata%\.platformio\packages\framework-arduinoespressif32\tools\sdk\ld\esp32.peripherals.ld

I don’t know if the issue was resolved. Also I am using Linux and I have a hard time finding .platformio\packages\framework-arduinoespressif32\tools\sdk\ld\esp32.peripherals.ld

On Linux, you’ll want the ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/ld folder… :wink: Sorry, for some reason I thought you were on Windows so gave you the Windows-style path… :laughing:

1 Like

Thank you !
It’s my fault for not specifying what OS I’m using.

It hasn’t been fixed ! You still have to replace PROVIDE ( GPIO = 0x3ff44000 ); with PROVIDE ( GPIO = 0x60004000 );.

1 Like

No problem :slight_smile:

If I’m reading the errata right, the fix would mean that this workaround would not need to be applied… but it is board specific because it is a update to the actual processor revision.

Hence

Fixes: This issue is fixed in silicon revision 1.

1 Like

I really don’t know which revision I have.
I found PROVIDE ( GPIO = 0x3ff44000 ); and I thought that the correct value should be PROVIDE ( GPIO = 0x60004000 ); and so I changed it accordingly.

1 Like

You can follow this if you want to find out which revision you have … 0, or 1… but if you need that workaround, it’s most likely you have revision 0.

1 Like

I can’t check the revision as in that tutorial because I can’t upload anything to the ESP right now. I think it’s broken.

Please read here for more info: