2021-06-30
Проблема отсутствия ROM для ESP32-C3 успешно решена. Обещаного файла от Espressif я не дождался, но смог считать содержимое ROM0 и ROM1 из самого чипа. Делается это на удивление просто: в состав официального Development Kit входит утилитка, умеющая вычитывать память в файл.

Обозначенные сиреневым регистры ucustom0 и ucustom1 на адресах 0x800-0x801 соответствуют диапазону Custom User CSRs:

Там дальше есть ещё обращения к ucustom2 на адресе 0x802. Судя по всему, это какой-то быстрый счётчик времени. Используется в ROM для ожидания в пределах десятков и сотен микросекунд. Оно бы и ладно, но наличие регистров, отсутствующих в документации, настораживает.
Засунул я эти бинарники в симулятор и запустил. Тут же среди первых команд обнаружились обращения к недокументированным регистрам процессора.esptool.py dump_mem 0x40000000 262144 irom0.bin
esptool.py dump_mem 0x3ff00000 131072 drom1.bin

Обозначенные сиреневым регистры ucustom0 и ucustom1 на адресах 0x800-0x801 соответствуют диапазону Custom User CSRs:

Там дальше есть ещё обращения к ucustom2 на адресе 0x802. Судя по всему, это какой-то быстрый счётчик времени. Используется в ROM для ожидания в пределах десятков и сотен микросекунд. Оно бы и ладно, но наличие регистров, отсутствующих в документации, настораживает.
Служба поддержки ответила на мой запрос и выложила бинарник ROM: esp32c3_rev3_rom.elf
Для удобства я положил дизассемблированный вариант здесь: esp32c3_rev3_rom.dis
Для удобства я положил дизассемблированный вариант здесь: esp32c3_rev3_rom.dis
