Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: mhi 18. 10. 2021, 17:19:54
-
Potreboval bych na ESP32 SoC v zakladni verzi (LX6), pripadne -S2 (LX7) a -C3 (Risc-V) udelat detekci zapisu do nekolika stranek (pametovych rozsahu). Jsem obeznamen s tim, jak funguje ARM MPU, Tensilica/Cadence LX6/LX7 by mely mit neco podobneho. V datasheetu je to nejak popsane, ale moc moudry z toho nejsem. RISC-V by taky neco mel mit, ale opet me zkusenosti jsou nulove. A navic si nejsem jist jak je to u toho ESP, protoze na foru pisou ze "neni otestovano"...
Tusite tu nekdo jak se LX6/7 MMU(MPU) da pouzit na detekci toho zapisu? Predstava je, ze budu mit pro N stranek definovane radky v MPU, ktere povoli cteni, ale faultnou pri zapisu. Ve fault handleru pak udelam pres tyto data invalidate a povolim zapis.
A jeste navic ... potrebuju aby to u ESP32-WROVER chodilo nad externi PSRAM :). To uz jsem z datasheetu nevycetl vubec, jestli je takhle mozne.
-
Ja ti nevim, ale do TRM jsi se dival?
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
na strane 600 to zacina..
V kratkosti: zvolit granularitu (prilis mala znamena managed jen spodni cast pameti), pak nastavit 16 bitu masky kdy to ma udelat catch, a pro jaky PID se to aktivuje (asi smesna snaha o privilege level). V handleru se bud zmeni PID (nebo to udela interrupt controller sam, takze bys tim "privilegovanym" procesem mel byt schopen delat pristupy bez double-faultu.
Ale nikde tam nepisou, co za preruseni to dela.. find na MPU nachazi APP_MMU_IA_INT / APP_MPU_IA_INT ... a ani jak udelat restart operace. Podle me to udela jen indikaci zakazaneho pristupu a tim to hasne.. neni to jako u x86 s restartem instrukce.
-
Do "TRM" jsem koukal. Ja tam tech nejasnosti vidim celou radu, popravde jich je spis vic nez tech jasnych veci :).