vak: (Default)
[personal profile] vak
Считал содержимое машинных управляющих регистров микроконтроллера ESP32-C3.
ustatus    [000] = 00000001 mask 00000011 (max 00000011 min 00000000)
mstatus [300] = 00000089 mask 00201899 (max 00201899 min 00000000)
misa [301] = 40101104 mask 00000000 (max 40101104 min 40101104)
mtvec [305] = 40380001 mask ffffff00 (max ffffff01 min 00000001)
mscratch [340] = 00000000 mask ffffffff (max ffffffff min 00000000)
mepc [341] = 42001c06 mask fffffffe (max fffffffe min 00000000)
mcause [342] = 80000004 mask 8000001f (max 8000001f min 00000000)
mtval [343] = fef76ae3 mask ffffffff (max ffffffff min 00000000)
pmpcfg0 [3a0] = 89888f88 mask 00000000 (max 89888f88 min 89888f88)
pmpcfg1 [3a1] = 888d898b mask 00000000 (max 888d898b min 888d898b)
pmpcfg2 [3a2] = 8f888d8f mask 00000000 (max 8f888d8f min 8f888d8f)
pmpcfg3 [3a3] = 90888b88 mask 00000000 (max 90888b88 min 90888b88)
pmpaddr0 [3b0] = 08000000 mask 00000000 (max 08000000 min 08000000)
pmpaddr1 [3b1] = 0a000000 mask 00000000 (max 0a000000 min 0a000000)
pmpaddr2 [3b2] = 0f000000 mask 00000000 (max 0f000000 min 0f000000)
pmpaddr3 [3b3] = 0ff20000 mask 00000000 (max 0ff20000 min 0ff20000)
pmpaddr4 [3b4] = 0ff38000 mask 00000000 (max 0ff38000 min 0ff38000)
pmpaddr5 [3b5] = 0ffc8000 mask 00000000 (max 0ffc8000 min 0ffc8000)
pmpaddr6 [3b6] = 10018000 mask 00000000 (max 10018000 min 10018000)
pmpaddr7 [3b7] = 100df000 mask 00000000 (max 100df000 min 100df000)
pmpaddr8 [3b8] = 100f8000 mask 00000000 (max 100f8000 min 100f8000)
pmpaddr9 [3b9] = 10a00000 mask 00000000 (max 10a00000 min 10a00000)
pmpaddr10 [3ba] = 14000000 mask 00000000 (max 14000000 min 14000000)
pmpaddr11 [3bb] = 14000800 mask 00000000 (max 14000800 min 14000800)
pmpaddr12 [3bc] = 18000000 mask 00000000 (max 18000000 min 18000000)
pmpaddr13 [3bd] = 18040000 mask 00000000 (max 18040000 min 18040000)
pmpaddr14 [3be] = 3fffffff mask 00000000 (max 3fffffff min 3fffffff)
pmpaddr15 [3bf] = 3fffffff mask 00000000 (max 3fffffff min 3fffffff)
tselect [7a0] = 00000000 mask 00000007 (max 00000007 min 00000000)
tdata1 [7a1] = 23e00000 mask 001000cf (max 23f000cf min 23e00000)
tdata2 [7a2] = 00000000 mask ffffffff (max ffffffff min 00000000)
tcontrol [7a5] = 00000080 mask 00000088 (max 00000088 min 00000000)
mpcer [7e0] = 00000001 mask 00000fff (max 00000fff min 00000000)
mpcmr [7e1] = 00000001 mask 00000003 (max 00000003 min 00000000)
mpccr [7e2] = 048f67d3 mask ffffffff (max ffffffff min 00000000)
0x800 [800] = 00000001 mask 00000fff (max 00000fff min 00000000)
0x801 [801] = 00000001 mask 00000003 (max 00000003 min 00000000)
0x802 [802] = 04bc89aa mask ffffffff (max ffffffff min 00000000)
0x803 [803] = 00000000 mask 000000ff (max 000000ff min 00000000)
0x804 [804] = 00000000 mask 00000000 (max 00000000 min 00000000)
0x805 [805] = 00000000 mask 000000ff (max 000000ff min 00000000)
mvendorid [f11] = 00000612 read only
marchid [f12] = 80000001 read only
mimpid [f13] = 00000001 read only
mhartid [f14] = 00000000 read only
Несколько замечаний:
  • Регистр ustatus отсутствует в документации процессора ESP32-C3.
  • Регистры на адресах 0x800-x805 тоже не упоминаются, хотя код в ROM к ним обращается.
  • Попытка записи в регистры mvendorid, marchid, mimpid и mhartid не игнорируется как обычно, а вызывает исключение Illegal Instruction.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org