Mikroprocesor WH V3
Specifikace
- Model mikroprocesoru: QingKeV3
- Verze: V1.2
- Vlastnosti ISA:
- FPU potrubí
- Predikce větve
- Přerušit podporu
- Ochrana fyzické paměti HPE (PMP)
- Režim nízké spotřeby energie
- Ladění rozšířené instrukční sady
Návod k použití produktu
Nadview mikroprocesoru QingKe V3
Mikroprocesory řady QingKe V3 zahrnují modely V3A, V3B a V3C. Každý model má specifické vlastnosti a rozdíly založené na jeho použití.
Instrukční sada
Instrukční sada RV32I obsahuje 32 sad registrů od x0 do x31. Řada V3 nepodporuje rozšíření s plovoucí desetinnou čárkou (F). Každý registr má velikost 32 bitů.
Registrovat Set
Sada registrů RV32I se skládá z následujících registrů.
- x0: Pevně zakódovaná 0
- x1: Zpáteční adresa
- x2: Ukazatel zásobníku
- x3: Globální ukazatel
- x4: Ukazatel vlákna
- x5-x7: Dočasné registry
- x8: Uložit ukazatel registru/rámce
- x9: Uložte parametry registru/funkcí/návratové hodnoty
- x10-x11: parametry funkce
- x12-x17: Uložit registry
- x18-x27: Dočasné registry
- x28-x31: Registruje se volající/volaný
Režim Privilege
Standardní architektura RISC-V zahrnuje tři privilegované režimy: režim stroje, režim správce a režim uživatele. Mikroprocesory řady QingKe V3 podporují režim Machine a Supervisor mode.
Často kladené otázky
Otázka: Jaké jsou různé modely mikroprocesorů řady QingKe V3?
A: Řada QingKe V3 zahrnuje modely V3A, V3B a V3C, každý se specifickými funkcemi a rozdíly podrobně popsanými v uživatelské příručce.
Otázka: Kolik sad registrů je dostupných v instrukční sadě RV32I?
A: Instrukční sada RV32I poskytuje 32 sad registrů od x0 do x31.
Otázka: Které privilegované režimy podporuje mikroprocesor QingKe V3?
A: Mikroprocesory řady QingKe V3 podporují režim Machine a Supervisor mode jako součást architektury RISC-V.
Nadview
Mikroprocesory řady QingKe V3 jsou samostatně vyvinuté 32bitové univerzální mikroprocesory MCU založené na standardní architektuře instrukční sady RISC-V. Tato řada zahrnuje V3A, V3B a V3C, z nichž V3A podporuje rozšíření standardní instrukční sady RV32IMAC a V3B/C podporuje rozšíření standardní instrukční sady RV32IMCB a přizpůsobené rozšíření instrukční sady XW. Oba podporují jednocyklové násobení a hardwarové dělení, kromě hardwarového tlakového zásobníku (HPE), přerušení bez tabulky (VTF), zjednodušených 1- a 2-vodičových ladicích rozhraní, instrukcí „WFE“ a dalších speciálních funkcí. Kromě toho také podporuje Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), zjednodušené 1-/2-wire ladicí rozhraní a podporu pro instrukce „WFE“.
Vlastnosti
Vlastnosti | Popis |
ISA | RV32IM[A]C[B] |
Potrubí | 3 |
FPU | Není podporováno |
Predikce větve | Statická predikce větvení |
Přerušit | Podporuje celkem 256 přerušení včetně výjimek a podporuje VTF |
HPE | Podpora 2 úrovní HPE |
Ochrana fyzické paměti (PMP) | Podporováno |
Režim nízké spotřeby energie | Podpora režimů spánku a hlubokého spánku a podpora metod spánku WFI a WFE |
Rozšířená sada instrukcí | Podporováno |
Ladit | 1/2-wire SDI, standardní RISC-V debug |
Nadview
Mikroprocesory řady QingKe V3 zahrnují V3A, V3B a V3C, mezi řadami existují určité rozdíly podle aplikace, konkrétní rozdíly jsou podrobně uvedeny v tabulce 1-1.
Tabulka 1-1 Konecview mikroprocesoru QingKe V3
Funkce Model | ISA | HPE počet úrovní | Přerušení hnízdění počet úrovně | VTF počet kanálů | Potrubí | Vektor režim stolu | Rozšířená instrukce (XW) | Počet oblastí ochrany paměti |
V3A | RV32IMAC | 2 | 2 | 4 | 3 | Návod | × | × |
V3B | RV32IMCB | 2 | 2 | 4 | 3 | Adresa/Pokyn | √ | × |
V3C | RV32IMCB | 2 | 2 | 4 | 3 | Adresa/Pokyn | √ | 4 |
Poznámka: Přepínání úloh OS obecně používá stack push, který není omezen na počet úrovní
Instrukční sada
- Mikroprocesory řady QingKe V3 se řídí standardní architekturou RISC-V Instruction Set Architecture (ISA). Podrobnou dokumentaci standardu lze nalézt v „The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 2.2“ na RISC-V International webmísto. Instrukční sada RISC-V má jednoduchou architekturu a podporuje modulární design, který umožňuje flexibilní kombinace na základě různých potřeb, a řada V3 podporuje následující rozšíření instrukční sady.
- RV32: 32bitová architektura, univerzální registr bitová šířka 32 bitů
- I: Podpora tvarování s 32 tvarovacími registry
- M: Podporujte instrukce tvarování, násobení a dělení
- A: Podpora atomových příkazů
- C: Podpora 16bitové kompresní instrukce
- B: Podpora instrukcí pro manipulaci s bity
- XW: 16bitové kompresní instrukce pro samorozšiřující operace bajtů a půl slova
Poznámka:
- Podmnožina instrukcí podporovaná různými modely se může lišit, podrobnosti naleznete v tabulce 1-1;
- Chcete-li dále zlepšit hustotu kódu, rozšiřte podmnožinu XW, přidejte následující pokyny pro kompresi c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shop , jehož použití musí být založeno na kompilátoru MRS nebo na toolchainu, který poskytuje;
- V3B podporuje extrahování instrukce slova (32 bitů) z dvojitého slova (64 bitů) a extrahování instrukce slova (32 bitů) z výsledku násobení (64 bitů). Konkrétní způsob použití může odkazovat na funkci knihovny a spolupracovat s kompilátorem MRS nebo jím poskytovaným toolchainem;
- V3B/C podporuje instrukce kopírování z paměti. Pro konkrétní použití se prosím podívejte na funkci knihovny a spolupracujte s kompilátorem MRS nebo jeho toolchainem.
Registrovat Set
RV32I má 32 sad registrů od x0-x31. Řada V3 nepodporuje rozšíření „F“, tj. neexistuje sada registrů s plovoucí desetinnou čárkou. V RV32 má každý registr 32 bitů. Tabulka 1-2 níže uvádí registry RV32I a jejich popisy.
Tabulka 1-2 Registry RISC-V
Rejstřík | Název ABI | Popis | Skladník |
x0 | nula | Pevně zakódovaná 0 | – |
x1 | ra | Zpáteční adresa | Volající |
x2 | sp | Ukazatel zásobníku | Callee |
x3 | GP | Globální ukazatel | – |
x4 | tp | Ukazatel vlákna | – |
x5-7 | t0-2 | Dočasný registr | Volající |
x8 | s0/fp | Uložit ukazatel registru/rámce | Callee |
x9 | s1 | Uložit registr | Callee |
x10-11 | a0-1 | Funkční parametry/návratové hodnoty | Volající |
x12-17 | a2-7 | parametry funkce | Volající |
x18-27 | a2-11 | Uložit registr | Callee |
X28-31 | t3-6 | Dočasný registr | Volající |
Atribut Caller ve výše uvedené tabulce znamená, že volaná procedura neuloží hodnotu registru a atribut Callee znamená, že volaná procedura uloží registr.
Režim Privilege
- Standardní architektura RISC-V zahrnuje tři privilegované režimy: režim stroje, režim správce a režim uživatele, jak ukazuje tabulka 1-3 níže.
- Režim stroje je povinný a ostatní režimy jsou volitelné. Podrobnosti naleznete v příručce RISC-V Instruction Set Manual Volume II: Privileged Architecture“, kterou si můžete zdarma stáhnout z RISC-V International webmísto.
Tabulka 1-3 Režim oprávnění architektury RISC-V
Kód | Jméno | Zkratky |
0b00 | Uživatelský režim | U |
0b01 | Model supervizora | S |
0b10 | Rezervováno | Rezervováno |
0b11 | Strojový režim | M |
- Mikroprocesory řady QingKe V3 podporují dva z těchto privilegovaných režimů.
Strojový režim
- Strojový režim má nejvyšší oprávnění, program v tomto režimu má přístup ke všem řídicím a stavovým registrům (CSR), ale také může přistupovat ke všem oblastem fyzických adres.
- Výchozí nastavení pro zapnutí je ve strojovém režimu, kdy se vrátí provedení mret (instrukce návratu do režimu stroje) podle stavu registru CSR (registr stavu režimu stroje) v bitu MPP, pokud MPP = 0b00, ukončete režim stroje do uživatelského režimu, MPP = 0b11, poté pokračujte v zachování režimu Stroj.
Uživatelský režim
- Uživatelský režim má nejnižší oprávnění a v tomto režimu lze přistupovat pouze k omezeným registrům CSR. Když dojde k výjimce nebo přerušení, mikroprocesor přejde z uživatelského režimu do režimu stroje, aby zpracoval výjimky a přerušení.
Registr CSR
V architektuře RISC-V je definována řada registrů CSR pro řízení a záznam provozního stavu mikroprocesoru. Tyto CSR lze rozšířit o 4096 registrů pomocí interního vyhrazeného 12bitového prostoru pro kódování adres. A pomocí dvou vysokých CSR[11:10] definujte oprávnění ke čtení/zápisu tohoto registru, 0b00, 0b01, 0b10 pro povoleno čtení/zápis a 0b11 pro pouze čtení. Pomocí dvou bitů CSR[9:8] definujte nejnižší úroveň oprávnění, která může přistupovat k tomuto registru, a hodnota odpovídá režimu oprávnění definovanému v tabulce 1-3. Registry CSR implementované v mikroprocesoru QingKe V3 jsou podrobně popsány v kapitole 8.
Výjimka
Mechanismus výjimek, což je mechanismus pro zachycení a zpracování „neobvyklých provozních událostí“. Mikroprocesory řady QingKe V3 jsou vybaveny systémem odezvy na výjimky, který zvládne až 256 výjimek, včetně přerušení. Když dojde k výjimce nebo přerušení, mikroprocesor může rychle reagovat a zpracovat události výjimky a přerušení.
Typy výjimek
Hardwarové chování mikroprocesoru je stejné, ať dojde k výjimce nebo přerušení. Mikroprocesor pozastaví aktuální program, přesune se na obsluhu výjimky nebo přerušení a po dokončení zpracování se vrátí k dříve pozastavenému programu. Obecně řečeno, přerušení jsou také součástí výjimek. Zda přesně aktuální výskyt je přerušení nebo výjimka viewed prostřednictvím registru příčiny výjimek režimu stroje. mcause[31] je pole přerušení, které se používá k označení, zda je příčinou výjimky přerušení nebo výjimka. mcause[31]=1 znamená přerušení, mcause[31]=0 znamená výjimku. mcause[30:0] je kód výjimky, který se používá k označení konkrétní příčiny výjimky nebo čísla přerušení, jak je uvedeno v následující tabulce.
Tabulka 2-1 Kódy výjimek mikroprocesoru V3
Přerušit | Výjimka kódy | Synchronní / Asynchronní | Důvod výjimky |
1 | 0-1 | – | Rezervováno |
1 | 2 | Precizní asynchronní | NMI přeruší |
1 | 3-11 | – | Rezervováno |
1 | 12 | Precizní asynchronní | SysTick přeruší |
1 | 13 | – | Rezervováno |
1 | 14 | Synchronní | Softwarová přerušení |
1 | 15 | – | Rezervováno |
1 | 16-255 | Precizní asynchronní | Externí přerušení 16-255 |
0 | 0 | Synchronní | Nesouosost adresy instrukce |
0 | 1 | Synchronní | Chyba přístupu k příkazu načítání |
0 | 2 | Synchronní | Nezákonné pokyny |
0 | 3 | Synchronní | Body přerušení |
0 | 4 | Synchronní | Nesprávné zarovnání přístupové adresy k instrukcím |
0 | 5 | Nepřesný asynchronní | Chyba přístupu k příkazu načíst |
0 | 6 | Synchronní | Nesprávné zarovnání přístupové adresy instrukce Store/AMO |
0 | 7 | Nepřesný asynchronní | Chyba přístupu k příkazu Store/AMO |
0 | 8 | Synchronní | Volání prostředí v uživatelském režimu |
0 | 11 | Synchronní | Volání prostředí v režimu Stroj |
- Synchronní“ v tabulce znamená, že instrukce může být umístěna přesně tam, kde je provedena, jako je instrukce přerušení nebo volání, a každé provedení této instrukce spustí výjimku. „Asynchronní“ znamená, že není možné přesně určit instrukci a hodnota PC instrukce se může lišit pokaždé, když dojde k výjimce. „Přesně asynchronní“ znamená, že výjimka může být umístěna přesně na hranici instrukce, tj. stavu po provedení instrukce, jako je externí přerušení. „Nepřesný asynchronní“ znamená, že nelze přesně lokalizovat hranici instrukce a možná stav po přerušení instrukce v polovině jejího provádění, jako je chyba přístupu do paměti.
- Přístup do paměti vyžaduje čas a mikroprocesor obvykle při přístupu do paměti nečeká na konec přístupu, ale pokračuje ve vykonávání instrukce, když se znovu objeví výjimka chyby přístupu, mikroprocesor již provedl následující instrukce a nemůže být přesně nachází.
Vstup do výjimky
Když je program z nějakého důvodu v procesu normální činnosti, spustí výjimku nebo přerušení. Hardwarové chování mikroprocesoru v tomto bodě lze shrnout následovně.
- Pozastavit aktuální tok programu a přejít k provádění funkcí zpracování výjimek nebo přerušení. Základní adresa záznamu a režim adresování funkce výjimky nebo přerušení jsou definovány registrem základní adresy záznamu výjimky mtvec. mtvec[31:2] definuje základní adresu funkce výjimky nebo přerušení. mtvec[1:0] definuje režim adresování funkce handleru. když mtvec[1:0]=0, všechny výjimky a přerušení používají jednotnou položku, tj. když dojde k výjimce nebo přerušení, obrátí se na mtvec[31:2], který definuje základní adresu, která se má provést. Když mtvec[1:0]=1, výjimky a přerušení používají režim vektorové tabulky, tj. každá výjimka a přerušení je očíslováno a adresa je posunuta podle čísla přerušení*4, a když dojde k výjimce nebo přerušení, je posunuta na základní adresu definovanou mtvec[31:2] + číslo přerušení*4 Provedení. Tabulka vektorů přerušení obsahuje instrukci ke skoku na funkci obsluhy přerušení, nebo to mohou být jiné instrukce.
- Aktualizace registru CSR
- Když je zadána výjimka nebo přerušení, mikroprocesor automaticky aktualizuje příslušné registry CSR, včetně registru příčin výjimky strojového režimu mcause, registru ukazatele výjimky strojového režimu mepc, registru hodnoty výjimky strojového režimu metal a stavu registru stavu stroje.
Aktualizujte mcause
Jak již bylo zmíněno dříve, po zadání výjimky nebo přerušení jeho hodnota odráží aktuální typ výjimky nebo číslo přerušení a software může načíst tuto hodnotu registru, aby zkontroloval příčinu výjimky nebo určil zdroj přerušení, jak je podrobně uvedeno v tabulce 2. -1.
Aktualizujte mepc
- Standardní definice návratové adresy mikroprocesoru po ukončení výjimky nebo přerušení je uložena v mepc.
- Takže když dojde k výjimce nebo přerušení, hardware automaticky aktualizuje hodnotu mepc na aktuální hodnotu PC instrukce, když dojde k výjimce, nebo na další hodnotu PC s předběžnou realizací před přerušením.
- Po zpracování výjimky nebo přerušení mikroprocesor použije svou uloženou hodnotu jako návratovou adresu, aby se vrátil na místo přerušení a pokračoval v provádění.
- Je však třeba poznamenat, že.
- MEPC je čitelný a zapisovatelný registr a software může také upravit hodnotu a upravit tak umístění ukazatele PC spuštěného po návratu.
- Když dojde k přerušení, tj. když se příčina výjimky zaregistruje mcause[31]=1, hodnota map se aktualizuje na hodnotu PC další neprovedené instrukce v okamžiku přerušení.
- Když nastane výjimka, hodnota map se aktualizuje na instrukční PC hodnotu aktuální výjimky, když výjimka způsobí registr mcause[31]=0. Takže v tomto okamžiku, kdy se výjimka vrátí, pokud se vrátíme přímo pomocí hodnoty mepc, pokračujeme ve vykonávání instrukce, která generovala výjimku dříve, a v tomto okamžiku budeme pokračovat v zadávání výjimky. Obvykle po zpracování výjimky můžeme upravit hodnotu mepc na hodnotu další neprovedené instrukce a pak se vrátit. Napřample, pokud po zpracování výjimky způsobíme výjimku z důvodu volání/přerušení, protože vyvolání/přerušení (c.ebreak je 2 bajty) je 4bajtová instrukce, potřebujeme software pouze k úpravě hodnoty mepc na mepc +4 (c.ebreak je mepc+2) a poté se vraťte.
Aktualizujte mtval
Když jsou zadány výjimky a přerušení, hardware automaticky aktualizuje hodnotu mtval, což je hodnota, která způsobila výjimku. Hodnota je obvykle.
- Pokud je výjimka způsobena přístupem do paměti, hardware uloží adresu přístupu do paměti v době výjimky do mtval.
- Pokud je výjimka způsobena nelegální instrukcí, hardware uloží instrukční kód instrukce do mtval.
- Pokud je výjimka způsobena hardwarovým bodem přerušení, hardware uloží hodnotu PC v bodu přerušení do mtval.
- U ostatních výjimek hardware nastaví hodnotu mtval na 0, jako je break, výjimka způsobená instrukcí volání.
- Při zadávání přerušení hardware nastaví hodnotu mtval na 0.
Aktualizujte mstatus
Po zadání výjimek a přerušení hardware aktualizuje určité bity v mstatus.
- MPIE se aktualizuje na hodnotu MIE před zadáním výjimky nebo přerušení a MPIE se používá k obnovení MIE po skončení výjimky a přerušení.
- MPP se aktualizuje na privilegovaný režim před zadáním výjimek a přerušení a po skončení výjimek a přerušení se MPP použije k obnovení předchozího privilegovaného režimu.
- Mikroprocesor QingKe V3 podporuje vnořování přerušení v režimu Machine a MIE se po zadání výjimek a přerušení nevymaže.
Aktualizujte režim oprávnění mikroprocesoru
- Když nastanou výjimky a přerušení, privilegovaný režim mikroprocesoru se aktualizuje na režim Stroj.
Funkce zpracování výjimek
- Po zadání výjimky nebo přerušení mikroprocesor provede program z adresy a režimu definovaného registrem mtvec. Při použití sjednocené položky mikroprocesor převezme instrukci skoku ze základní adresy definované pomocí mtvec[31:2] na základě hodnoty mtvec[1] nebo získá adresu záznamu funkce zpracování výjimek a přerušení a místo toho ji provede. . V tomto okamžiku může funkce zpracování výjimek a přerušení určit, zda je příčinou výjimka nebo přerušení na základě hodnoty mcause[31], a typ a příčina výjimky nebo odpovídajícího přerušení lze posoudit podle kódu výjimky. a podle toho se s nimi zacházelo.
- Při použití základní adresy + čísla přerušení *4 pro offset hardware automaticky skočí do tabulky vektorů, aby získal vstupní adresu funkce výjimky nebo přerušení na základě čísla přerušení a skočí k jeho provedení.
Exception Exit
- Po dokončení obsluhy výjimky nebo přerušení je nutné ukončit servisní program. Po zadání výjimek a přerušení přejde mikroprocesor z uživatelského režimu do režimu Stroj a zpracování výjimek a přerušení je dokončeno také v režimu Stroj. Když je potřeba opustit výjimky a přerušení, je nutné použít instrukci mret pro návrat. V tomto okamžiku hardware mikroprocesoru automaticky provede následující operace.
- PC ukazatel je obnoven na hodnotu registru CSR mepc, tj. provádění začíná na adrese instrukce uložené v mepc. Po dokončení zpracování výjimek je nutné věnovat pozornost offsetové operaci mepc.
- Aktualizujte stav registru CSR, MIE se obnoví na MPIE a MPP se použije k obnovení privilegovaného režimu předchozího mikroprocesoru.
- Celý proces odezvy na výjimku lze popsat na následujícím obrázku 2-1.
PFIC a řízení přerušení
- Mikroprocesor QingKe V3 je navržen s programovatelným rychlým řadičem přerušení (PFIC), který dokáže spravovat až 256 přerušení včetně výjimek.
- Prvních 16 z nich je pevně nastaveno jako interní přerušení mikroprocesoru a zbytek jsou externí přerušení, tj. maximální počet externích přerušení lze rozšířit na 240. Jeho hlavní vlastnosti jsou následující.
- 240 externích přerušení, každý požadavek na přerušení má nezávislé spouštěcí bity a řídicí bity masky s vyhrazenými stavovými bity
- Programovatelná priorita přerušení podporuje 2 úrovně vnoření
- Speciální rychlé přerušení do/z mechanismu, hardwarové automatické stohování a obnova, maximální hloubka HPE 2 úrovně
- Mechanismus odezvy přerušení bez vektorové tabulky (VTF), 2kanálový programovatelný přímý přístup k adresám vektorů přerušení
- Poznámka: Maximální hloubka vnoření a hloubka HPE podporovaná řadiči přerušení se u různých modelů mikroprocesorů liší, což lze nalézt v tabulce 1-1.
- Vektorová tabulka přerušení a výjimek je uvedena v tabulce 3-1 níže.
Tabulka 3-1 Tabulka vektorů výjimek a přerušení
Číslo | Přednost | Typ | Jméno | Popis |
0 | – | – | – | – |
1 | – | – | – | – |
2 | -5 | Opraveno | NMI | Nemaskovatelné přerušení |
3 | -4 | Opraveno | EXC | Přerušení výjimky |
4 | – | – | – | – |
5 | -3 | Opraveno | ECALL-M | Přerušení zpětného volání v režimu stroje |
6-7 | – | – | – | – |
8 | -2 | Opraveno | ECALL-U | Přerušení zpětného volání v uživatelském režimu |
9 | -1 | Opraveno | BOD ZLOMU | Přerušení zpětného volání bodu zlomu |
10-11 | – | – | – | – |
12 | 0 | Programovatelné | SysTick | Přerušení systémového časovače |
13 | – | – | – | – |
14 | 1 | Programovatelné | SWI | Softwarové přerušení |
15 | – | – | – | – |
16-255 | 2-241 | Programovatelné | Externí přerušení | Externí přerušení 16-255 |
Poznámka: ECALL-M, ECALL-U a BREAKPOINT jsou různé typy výjimek EXC, které jsou nezávislé ve V3B/C pro snadné použití a výše 3 vstupní adresy jsou sdíleny s EXC ve V3A.
Sada registru PFIC
Tabulka 3-2 Registry PFIC
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_ISRx | 0xE000E000
-0xE000E01C |
RO | Stavový registr povolení přerušení x | 0x00000000 |
PFIC_IPRx | 0xE000E020
-0xE000E03C |
RO | Přerušení čekajícího stavového registru x | 0x00000000 |
PFIC_ITHRESDR | 0xE000E040 | RW | Registr konfigurace prahu priority přerušení | 0x00000000 |
PFIC_VTFBADDRR | 0xE000E044 | RW | Registr základní adresy VTF
Poznámka: Platí pouze pro V3A |
0x00000000 |
PFIC_CFGR | 0xE000E048 | RW | Přerušit konfigurační registr
Poznámka: Platí pouze pro V3A |
0x00000000 |
PFIC_GISR | 0xE000E04C | RO | Přerušit registr globálního stavu | 0x00000002 |
PFIC_VTFIDR |
0xE000E050 |
RW |
Registr konfigurace ID přerušení VTF
Poznámka: Platí pouze pro V3B/C. |
0x00000000 |
PFIC_VTFADDRRx | 0xE000E060
-0xE000E06C |
RW | VTF x offsetový registr adres | 0xXXXXXXXXX |
PFIC_IENRx | 0xE000E100
-0xE000E11C |
WO | Nastavení registru x povolení přerušení | 0x00000000 |
PFIC_IRERx | 0xE000E180
-0xE000E19C |
WO | Povolení přerušení vymazání registru x | 0x00000000 |
PFIC_IPSRx | 0xE000E200
-0xE000E21C |
WO | Přerušení čeká na nastavení registru x | 0x00000000 |
PFIC_IPRRx | 0xE000E280
-0xE000E29C |
WO | Přerušení čeká na vymazání registru x | 0x00000000 |
PFIC_IACTRx | 0xE000E300
-0xE000E31C |
RO | Registr stavu aktivace přerušení x | 0x00000000 |
PFIC_IPRIORx | 0xE000E400
-0xE000E43C |
RW | Registr konfigurace priority přerušení | 0x00000000 |
PFIC_SCTLR | 0xE000ED10 | RW | Řídicí registr systému | 0x00000000 |
Poznámka:
- NMI, EXC, ECALL-M, ECALL-U a BREAKPOINT jsou ve výchozím nastavení vždy povoleny.
- ECALL-M, ECALL-U a BREAKPOINT jsou případ EXC.
- NMI, EXC, ECALL-M, ECALL-U a BREAKPOINT podporují přerušení až do operace vymazání a nastavení, ale bez přerušení umožňují operaci vymazání a nastavení.
Každý registr je popsán následovně:
Stav povolení přerušení a stavové registry čekajících přerušení (PFIC_ISR<0-7>/PFIC_IPR<0-7>)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_ISR0 | 0xE000E000 | RO | Přerušení 0-31 povoluje stavový registr, celkem 32 stavových bitů [n], což znamená, že přerušení #n povoluje stav
Poznámka: NMI a EXC jsou povoleny standardně |
Pro V3A: 0x0000000C
Pro V3B/C: 0x0000032C |
PFIC_ISR1 | 0xE000E004 | RO | Přerušení 32-63 povolí stavový registr, celkem 32 stavových bitů | 0x00000000 |
… | … | … | … | … |
PFIC_ISR7 | 0xE000E01C | RO | Přerušení 224-255 povolí stavový registr, celkem 32 stavových bitů | 0x00000000 |
PFIC_IPR0 | 0xE000E020 | RO | Stav čeká na přerušení 0-31 | 0x00000000 |
registru, celkem 32 stavových bitů [n], indikujících nevyřízený stav přerušení #n | ||||
PFIC_IPR1 | 0xE000E024 | RO | Přerušení 32-63 čekajících stavových registrů, celkem 32 stavových bitů | 0x00000000 |
… | … | … | … | … |
PFIC_IPR7 | 0xE000E03C | RO | Přerušení 244-255 čekající stavový registr, celkem 32 stavových bitů | 0x00000000 |
K povolení a deaktivaci příslušných přerušení se používají dvě sady registrů.
Nastavení povolení přerušení a vymazání registrů (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_IENR0 | 0xE000E100 | WO | Přerušení 0-31 umožňuje nastavení registru, celkem 32 nastavovacích bitů [n], pro přerušení #n povolení nastavení
Poznámka: NMI a EXC jsou povoleno standardně |
0x00000000 |
PFIC_IENR1 | 0xE000E104 | WO | Přerušení 32-63 pro povolení registru nastavení, celkem 32 bitů nastavení | 0x00000000 |
… | … | … | … | … |
PFIC_IENR7 | 0xE000E11C | WO | Nastavení povolení přerušení 224-255
registru, celkem 32 bitů nastavení |
0x00000000 |
– | – | – | – | – |
PFIC_IRER0 | 0xE000E180 | WO | Přerušení 0-31 umožňují vymazat registr, celkem 32 vymazat bitů [n], pro přerušení #n povolit vymazání Poznámka: NMI a EXC nemohou být provozován |
0x00000000 |
PFIC_IRER1 | 0xE000E184 | WO | Přerušení 32-63 umožňuje vymazat registr, celkem 32 čistých bitů | 0x00000000 |
… | … | … | … | … |
PFIC_IRER7 | 0xE000E19C | WO | Přerušení 244-255 umožňuje vymazat registr, celkem 32 čistých bitů | 0x00000000 |
K povolení a deaktivaci příslušných přerušení se používají dvě sady registrů.
Přerušení čeká na nastavení a vymazání registrů (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_IPSR0 |
0xE000E200 |
WO |
Přerušení 0-31 čekající na nastavení registru, 32
nastavení bitů [n], pro přerušení #n čeká na nastavení |
0x00000000 |
PFIC_IPSR1 | 0xE000E204 | WO | Přerušení 32-63 čekající na nastavení registru,
celkem 32 nastavovacích bitů |
0x00000000 |
… | … | … | … | … |
PFIC_IPSR7 | 0xE000E21C | WO | Přerušení 224-255 čeká na nastavení
registru, celkem 32 bitů nastavení |
0x00000000 |
– | – | – | – | – |
PFIC_IPRR0 |
0xE000E280 |
WO |
Přerušení 0-31 čekající na vymazání registru, celkem 32 čistých bitů [n], pro přerušení #n
čeká na vyřízení |
0x00000000 |
PFIC_IPRR1 | 0xE000E284 | WO | Přerušení 32-63 čeká na vymazání registru,
celkem 32 čistých bitů |
0x00000000 |
… | … | … | … | … |
PFIC_IPRR7 | 0xE000E29C | WO | Přerušení 244-255 čeká na vymazání registru,
celkem 32 čistých bitů |
0x00000000 |
Když mikroprocesor povolí přerušení, lze jej nastavit přímo prostřednictvím registru čekajících přerušení, aby spustilo přerušení. Pomocí registru přerušení čekající na vymazání vymažte čekající spouštěč.
Registr stavu aktivace přerušení (PFIC_IACTR<0-7>)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_IACTR0 | 0xE000E300 | RO | Přerušení 0-31 aktivuje stavový registr s 32 stavovými bity [n], což znamená, že se provádí přerušení #n | 0x00000000 |
PFIC_IACTR1 | 0xE000E304 | RO | Přerušení 32-63 aktivačních stavových registrů, 32 stavových bitů
celkový |
0x00000000 |
… | … | … | … | … |
PFIC_IACTR7 | 0xE000E31C | RO | Aktivační stavové registry přerušení 224-255, celkem 32 stavových bitů | 0x00000000 |
Každé přerušení má aktivní stavový bit, který je nastaven při vstupu do přerušení a vymazán hardwarem, když se trh vrátí.
Registry priority přerušení a prahu priority (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_IPRIOR0 | 0xE000E400 | RW | Konfigurace priority přerušení 0. V3A: [7:4]: Prioritní řídicí bity Pokud konfigurace není vnořená, žádný bit preempce Pokud je konfigurováno vnořování, bit7 je bit s preempcí. [3:0]: Rezervováno, nastaveno na 0 V3B: [7:6]: Prioritní řídicí bity Pokud konfigurace není vnořena, nejsou vnořeny žádné preemptivní bity, všechny bity jsou preempovány, ale mohou nastat až dvě úrovně přerušení [5:0]: Vyhrazeno, pevně nastaveno na 0 V3C: [7:5]: Prioritní řídicí bity Pokud konfigurace není vnořená, žádné preemptivní bity Pokud je konfigurován jako vnořený, všechny bity jsou preemptovány, ale mohou nastat až dvě úrovně přerušení [4:0]: Rezervováno, pevně nastaveno na 0 Poznámka: Čím menší je hodnota priority, tím vyšší je priorita. Pokud stejné přerušení s prioritou preempce ve stejnou dobu zamrzne, bude nejprve provedeno přerušení s vyšší prioritou. |
0x00 |
PFIC_IPRIOR1 | 0xE000E401 | RW | Nastavení priority přerušení 1, stejná funkce jako PFIC_IPRIOR0 | 0x00 |
PFIC_IPRIOR2 | 0xE000E402 | RW | Nastavení priority přerušení 2, stejná funkce jako PFIC_IPRIOR0 | |
… | … | … | … | … |
PFIC_IPRIOR254 | 0xE000E4FE | RW | Nastavení priority přerušení 254, stejná funkce jako PFIC_IPRIOR0 | 0x00 |
PFIC_IPRIOR255 | 0xE000E4FF | RW | Nastavení priority přerušení 255, stejná funkce jako PFIC_IPRIOR0 | 0x00 |
– | – | – | – | – |
PFIC_ITHRESDR | 0xE000E040 | RW | Nastavení prahu priority přerušení
V3A: [31:8]: Rezervováno, pevně nastaveno na 0 [7:4]: Práh priority [3:0]: Rezervováno, pevně nastaveno na 0V3B: [31:8]: Rezervováno, pevně nastaveno na 0 [7:5]: Práh priority [4:0]: Rezervováno, pevně nastaveno na 0V3C: [31:8]: Rezervováno, pevně nastaveno na 0 [7:5]: Práh priority [4:0]: Rezervováno, pevně nastaveno na 0Poznámka: U přerušení s hodnotou priority ≥ prahová hodnota se služba přerušení nevykoná, když dojde k zablokování, a když je tento registr 0, znamená to, že registr prahu je neplatný. |
0x00 |
Registr konfigurace přerušení (PFIC_CFGR)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_CFGR | 0xE000E048 | RW | Přerušit konfigurační registr | 0x00000000 |
Tento registr je platný pouze pro V3A, jeho bity jsou definovány jako:
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:16] | KEYCODE | WO | Odpovídající různým cílovým řídicím bitům je třeba zapsat odpovídající identifikační data zabezpečení přístupu současně, aby bylo možné je upravit, a načtená data jsou pevně nastavena na 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF。 | 0 |
[15:8] | Rezervováno | RO | Rezervováno | 0 |
7 | SYSRESET | WO | Reset systému (současný zápis do KEY3). Automatické vymazání 0.
Zápis 1 je platný, zápis 0 je neplatný. Poznámka: Stejná funkce jako bit SYSRESET registru PFIC_SCTLR. |
0 |
6 | PFICRESET | WO | Reset modulu PFIC. Automatické vymazání 0.
Zápis 1 je platný, zápis 0 je neplatný. |
0 |
5 | VYJÁDŘIT | WO | Přerušení výjimky čeká na vymazání (současný zápis do KEY2)
Zápis 1 je platný, zápis 0 je neplatný. |
0 |
4 | EXCSET | WO | Čeká se na nastavení přerušení výjimky (současný zápis do KEY2)
Zápis 1 je platný, zápis 0 je neplatný. |
0 |
3 | NMIRESET | WO | Přerušení NMI čeká na vymazání (současný zápis do KEY2)
Zápis 1 je platný, zápis 0 je neplatný. |
0 |
2 | NMISET | WO | Čeká se na nastavení přerušení NMI (současný zápis do KEY2)
Zápis 1 je platný, zápis 0 je neplatný. |
0 |
1 | NESTCTRL | RW | Vnoření přerušení umožňuje kontrolu.
1: vypnuto; 0: zapnuto (synchronní zápis do KEY1) |
0 |
0 | HWSTKCTRL | RW | Ovládání aktivace HPE
1: vypnuto; 0: zapnuto (synchronní zápis do KEY1) |
0 |
Přerušit registr globálního stavu (PFIC_GISR)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_GISR | 0xE000E04C | RO | Přerušit registr globálního stavu | 0x00000000 |
Jeho lidé jsou definováni jako
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:14] | Rezervováno | RO | Rezervováno | 0 |
13 |
LOCKSTA |
RO |
Zda je procesor aktuálně v uzamčeném stavu:
1: Uzamčený stav; 0: Nezamčený stav. Poznámka: Tento bit je platný pouze pro V3B/C. |
0 |
12 |
DBGMODE |
RO |
Zda je procesor aktuálně ve stavu ladění: 1: Stav ladění;
0: Stav bez ladění. Poznámka: Tento bit je platný pouze pro V3B/C. |
0 |
11 |
GLOBIE |
RO |
Povolení globálního přerušení:
1: Povolit přerušení; 0: Zakázat přerušení. Poznámka: Tento bit je platný pouze pro V3B/C. |
|
10 | Rezervováno | RO | Rezervováno | 0 |
9 | GPENDSTA | RO | Zda momentálně čeká na přerušení.
1: Ano; 0: Ne. |
0 |
8 | GACTSTA | RO | Zda se právě provádí přerušení.
1: Ano; 0: Ne. |
0 |
[7:0] |
NESTSTA |
RO |
Aktuální stav vnoření přerušení. 0x03: v přerušení úrovně 2.
0x01: v přerušení úrovně 1. 0x00: nedochází k žádnému přerušení. Jiné: Nemožná situace. |
0 |
Registry základní adresy a offsetové adresy VTF ID (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_VTFBADDRR |
0xE000E044 |
RW |
[31:28]: Vysoké 4 bity cílové adresy VTF [27:0]: Rezervováno
Tento registr je platný pouze pro V3A. |
0x00000000 |
PFIC_VTFIDR |
0xE000E050 |
RW |
[31:24]: Počet VTF 3 [23:16]: Počet VTF 2 [15:8]: Počet VTF 1 [7:0]: Počet VTF 0
Tento registr je platný pouze pro V3B/C. |
0x00000000 |
– | – | – | – | – |
PFIC_VTFADDRR0 |
0xE000E060 | RW | V3A: [31:24]: Číslo přerušení VTF 0 [23:0]: dolních 24 bitů cílové adresy VTF, z nichž dolních 20 bitů je nakonfigurováno jako platných, a [23:20] je pevně nastaveno na 0 .
V3B/C: [31:1]: VTF 0 adresa, 2bajtové zarovnání [0]:1: Povolí kanál VTF 0 0: Zakázat |
Pro V3A: 0x00000000 Pro V3B/C: 0xXXXXXXXX |
PFIC_VTFADDRR1 |
0xE000E064 |
RW |
V3A: [31:24]: Číslo přerušení VTF 1 [23:0]: Nízkých 24 bitů cílové adresy VTF, z nichž dolních 20 bitů je nakonfigurováno jako platných a [23:20] je pevně nastaveno na 0.
V3B/C: [31:1]: VTF 1 adresa, 2bajtové zarovnání [0]:1: Povolí kanál VTF 1 0: Zakázat |
Pro V3A: 0x00000000 Pro V3B/C: 0xXXXXXXXX |
PFIC_VTFADDRR2 |
0xE000E068 |
RW |
V3A: [31:24]: Číslo přerušení VTF 2 [23:0]: dolních 24 bitů cílové adresy VTF, z nichž dolních 20 bitů je nakonfigurováno jako platných, a [23:20] je pevně nastaveno na 0 .
V3B/C: [31:1]: VTF 2 adresa, 2bajtové zarovnání [0]:1: Povolí kanál VTF 2 0: Zakázat |
Pro V3A: 0x00000000 Pro V3B/C: 0xXXXXXXXX |
PFIC_VTFADDRR3 | 0xE000E06C | RW | V3A: | Pro V3A: |
[31:24]: Číslo přerušení VTF 3 [23:0]: dolních 24 bitů cílové adresy VTF, z nichž dolních 20 bitů je nakonfigurováno jako platných, a [23:20] je pevně nastaveno na 0.
V3B/C: [31:1]: VTF 3 adresa, 2bajtové zarovnání [0]:1: Povolí kanál VTF 3 0: Zakázat |
0x00000000
Pro V3B/C: 0xXXXXXXXX |
Řídicí registr systému (PFIC_SCTLR)
Jméno | Přístupová adresa | Přístup | Popis | Resetovat hodnotu |
PFIC_SCTLR | 0xE000ED10 | RW | Řídicí registr systému | 0x00000000 |
Každý z nich je definován následovně.
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | SYSRESET | WO | Reset systému, automatické vymazání 0. Zápis 1 je platný a zápis 0 je neplatný.
Poznámka: Tento bit je platný pouze pro V3B/C |
0 |
[30:6] | Rezervováno | RO | Rezervováno | 0 |
5 | SETEVENT | WO | Nastavte událost tak, aby probudila pouzdro WFE. | 0 |
4 |
SEVONPEND | RW | Když nastane událost nebo přeruší nevyřízený stav, systém může být probuzen po instrukci WFE, nebo pokud instrukce WFE není provedena, bude systém probuzen okamžitě po dalším provedení instrukce.
1: Povolené události a všechna přerušení (včetně nepovolených přerušení) mohou probudit systém. 0: Pouze povolené události a povoleno přerušení mohou probudit systém. |
0 |
3 | WFITOWFE | RW | Proveďte příkaz WFI, jako by to byl WFE.
1: Zacházejte s následující instrukcí WFI jako s instrukcí WFE. 0: Žádný účinek. |
0 |
2 | SPÁNEK | RW | Režim nízké spotřeby řídicího systému. | 0 |
1: hluboký spánek 0: spánek | ||||
1 | SLEEPONEXI T | RW | Stav systému poté, co řízení opustí servisní program přerušení.
1: Systém přejde do režimu nízké spotřeby. 0: Systém vstoupí do hlavního programu. |
0 |
0 | Rezervováno | RO | Rezervováno | 0 |
Registry CSR související s přerušeními
Kromě toho mají na zpracování přerušení významný vliv i následující registry CSR. Řídicí registr přerušení systému (intsyscr)
Tento registr není platný pouze pro V3A:
Jméno | CSR Adresa | Přístup | Popis | Resetovat hodnotu |
intsyscr | 0x804 | URW | Přerušit řídicí registr systému | 0x0000E002 |
Jeho lidé jsou definováni jako:
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 |
ZÁMEK |
URO |
0: Tento registr lze číst a zapisovat v uživatelském režimu;
1: Tento registr lze číst a zapisovat pouze ve strojovém režimu. Poznámka: Tento konfigurační bit je platný od verze 1.0 a novější. |
0 |
[30:6] | Rezervováno | URO | Rezervováno | 0x380 |
5 |
GIHWSTKNEN |
URW1 |
Je povoleno globální přerušení a vypnutí hardwarového zásobníku.
Poznámka: Tento bit se často používá v operačních systémech pracujících v reálném čase. Při přepnutí kontextu během přerušení může nastavení tohoto bitu vypnout globální přerušení a přesunout zásobník hardwaru. Když je přepnutí kontextu dokončeno a přerušení se vrátí, hardware to udělá automaticky vymazat tento bit. |
0 |
4 | Rezervováno | URO | Rezervováno | 0 |
[3:2] | PMTCFG | URW | Konfigurace prioritních preempčních bitů:
00: Počet preempčních bitů je 0; 01: Počet preempčních bitů je 1; 10: Počet preempčních bitů je 2; 11: Počet preempčních bitů je 3; Poznámka: Tento konfigurační bit je platný po 1.0. |
0 |
1 | POSLOUCHAT | URW | Funkce vnořování přerušení je povolena a pevná hodnota je 1: | 1 |
0: Zakázat;
1: Povolit. Poznámka: 1. Aktuální úroveň vnoření je řízena NEST_LVL v CSR 0xBC1; 2. Mohou být pouze verze po 1.0 napsáno. |
||||
0 | HWSTKEN | URW | Povolení hardwarového zásobníku:
0: Funkce lisování zásobníku hardwaru je zakázána; 1: Funkce hardwarového lisování stohu je povolena. |
0 |
Registr základní adresy výjimky režimu stroje (mtvec)
Jméno | CSR Adresa | Přístup | Popis | Resetovat hodnotu |
mtvec | 0x305 | MRW | Registr základních adres výjimky | 0x00000000 |
Jeho lidé jsou definováni jako
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:2] | BASEADDR[31:2] | MRW | Základní adresa tabulky vektoru přerušení, kde
bity [9:2] jsou pevně nastaveny na 0. |
0 |
1 | MODE1 |
MRO |
Režim rozpoznávání vektorové tabulky přerušení: 0: Identifikace pomocí instrukce skoku s omezeným rozsahem a podpora instrukce bez skoku;
1: Identifikujte se podle absolutní adresy, podporuje celý rozsah, ale musí skákat. Poznámka: Tento bit je platný pouze pro V3B/C. |
0 |
0 | MODE0 | MRW | Výběr režimu zadání adresy přerušení nebo výjimky.
0: Použití jednotné vstupní adresy. 1: Posun adresy na základě čísla přerušení *4. |
0 |
U MCU s mikroprocesory řady V3 je MODE0 ve výchozím nastavení při spuštění nakonfigurován na 1 filea položky pro výjimky nebo přerušení jsou posunuty podle čísla přerušení *4. Všimněte si, že mikroprocesor V3A ukládá instrukci skoku ve vektorové tabulce, zatímco mikroprocesor V3B/C může buď instrukci skoku, nebo použít absolutní adresu funkce přerušení, která je při výchozím spuštění nakonfigurována jako absolutní adresa. file.
Registr konfigurace mikroprocesoru (korektor)
Tento registr je neplatný pro V3A:
Jméno | CSR Adresa | Přístup | Popis | Resetovat hodnotu |
corecfgr | 0xBC0 | MRW | Registr konfigurace mikroprocesoru | 0x00000001 |
Jeho lidé jsou definováni jako
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:8] | Rezervováno | MRO | Rezervováno | 0 |
7 |
CSTA_FAULT_IE |
MRW |
Povolení přerušení při chybě stavu jádra:
0: Při stavové chybě se negeneruje žádné přerušení NMI; 1: Při chybě stavu je přerušení NMI vytvořené. |
0 |
6 | Rezervováno | MRO | Nechte si 0. | 0 |
5 | IE_REMAP_EN | MRW | Mapování registrů MIE umožňuje:
0: CSR adresa 0x800 je registr pouze pro čtení a návratová hodnota je hodnota STATUS; 1: Bity 3 a 7 adresy CSR 0x800 jsou mapovány na bit MIE registru STATUS a bit MPIE registru STATUS. |
0 |
4 | Rezervováno | MRO | Rezervováno | 0 |
3 | ROM_LOOP_ACC | MRW | Povolení zrychlení instrukční smyčky oblasti ROM:
0: Vypnutí funkce cyklického zrychlení v oblasti ROM; 1: Spojité instrukce s tělem smyčky do 128 bajtů budou plně zrychleny, zatímco ty s tělem smyčky do 256 bajtů budou zrychleny částečně; |
0 |
2 | ROM_JUMP_ACC | MRW | Akcelerace skoku instrukce oblasti ROM povolena:
0: Zakázat akceleraci skoku instrukce oblasti ROM; 1: Povolí akceleraci skoku instrukce v oblasti ROM. |
0 |
[1:0] | FETCH_MODE | MRW | Režim načítání:
00: Předběžné načítání je vypnuto. Funkce předběžného načtení instrukce je vypnutá, aby se zabránilo operacím načítání neplatných instrukcí, a na kanále CPU je nejvýše jedna platná instrukce. Tento model má nejnižší spotřebu energie a jeho výkon klesá asi 2 až 3krát. 01: Režim předběžného načtení 1. Když je funkce předběžného načtení instrukcí zapnuta, CPU bude pokračovat v přístupu k paměti instrukcí, dokud počet instrukcí, které mají být provedeny ve vnitřní vyrovnávací paměti instrukcí, nepřekročí určitý počet nebo dokud nebude vyrovnávací paměť instrukcí plná a načítání instrukcí bude pozastaveno; (Selhání predikce CPU povede k nadbytečné operaci načítání a v některých případech prováděcí jednotka zavede 0 ~ 2 cykly bublin a výkon většiny programů se zjevně nesníží); 10: Vyhrazeno; |
0x1 |
Přerušit vnořený řídicí registr (inestcr)
Tento registr je neplatný pouze pro V3A:
Jméno | CSR Adresa | Přístup | Popis | Resetovat hodnotu |
investor | 0xBC1 | MRW | Přerušit vnořený řídicí registr | 0x00000000 |
Jeho lidé jsou definováni jako
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | Rezervováno | MRO | Rezervováno | 0 |
30 | NEST_OV | MRW | Vnořený příznak přetečení přerušení/výjimky, zapište 1 pro vymazání:
0: Přerušení nepřeteklo; 1: Příznak přetečení přerušení. Poznámka: Přetečení přerušení nastane pouze při provádění funkce sekundární služby přerušení pro generování výjimky instrukce nebo přerušení NMI. V tuto chvíli výjimka a přerušení NMI normálně vstoupí, ale zásobník CPU přeteče, takže nemůžete tuto výjimku opustit a Přerušení NMI. |
0 |
[29:12] | Rezervováno | MRO | Rezervováno | 0 |
[11:8] | NEST_STA | MRO | Vnořený bit příznaku stavu:
0000: Bez přerušení; 0001: Přerušení úrovně 1; 0011: přerušení úrovně 2 (1úrovňové vnoření); |
0 |
0111: Přerušení úrovně 3 (přetečení);
1111: Přerušení úrovně 4 (přetečení). |
||||
[7:2] | Rezervováno | MRO | Rezervováno | 0 |
[1:0] | NEST_LVL | MRW | Úroveň vnoření:
00: Vnořování je zakázáno a funkce vnořování je vypnutá; 01: Vnořování první úrovně, které zapíná funkci vnořování; Jiné: Neplatné. Poznámka: Zapište do tohoto pole 10 nebo 11 a pole bude nastaveno na 01. Při zápisu 11 do tohoto pole načtěte tento registr, abyste získali nejvyšší úroveň vnoření čipu. |
0 |
Registr povolení globálního přerušení uživatelského režimu (intern)
Tento registr je neplatný pouze pro V3A:
Jméno | CSR Adresa | Přístup | Popis | Resetovat hodnotu |
gintenr | 0x800 | URW | Globální registr povolení přerušení | 0x00000000 |
Tento registr se používá k ovládání povolení a masky globálního přerušení. Povolení a masku globálního přerušení ve strojovém režimu lze řídit bity MIE a MPIE ve stavu, ale tento registr nelze provozovat v uživatelském režimu.
Globální registr povolení přerušení gintenr je mapování MIE a MPIE v mstatus a lze jej použít k nastavení a vymazání MIE a MPIE provozováním gintenr v uživatelském režimu.
Každý z nich je definován jako:
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:13] | Rezervováno | URO | Rezervováno | 0 |
[12:11] | MPP | URO | Před přerušením přejděte do privilegovaného režimu. | 0 |
[10:8] | Rezervováno | URO | Rezervováno | 0 |
7 | MPIE | URW | Když je povolen 0xBC0(CSR)bit5, tento bit
lze číst a zapisovat v uživatelském režimu. |
0 |
[6:4] | Rezervováno | URO | Rezervováno | 0 |
3 | MIE | URW | Když je povolen 0xBC0(CSR)bit5, tento bit
lze číst a zapisovat v uživatelském režimu. |
0 |
[1:0] | Rezervováno | URO | Rezervováno | 0 |
Přerušit vnořování
Ve spojení s přerušením, konfiguračním registrem PFIC_CFGR a registrem priority přerušení PFIC_IPRIOR lze povolit vnořování přerušení. Povolte vnořování v registru konfigurace přerušení (u mikroprocesorů řady V3 je vnořování ve výchozím nastavení zapnuto) a nakonfigurujte prioritu odpovídajícího přerušení. Čím menší je hodnota priority, tím vyšší je priorita. Čím menší je hodnota bitu preempce, tím vyšší je priorita preempce. Pokud ve stejnou dobu visí přerušení se stejnou prioritou preempce, mikroprocesor odpoví na přerušení jako první s nižší prioritou (vyšší prioritou).
Hardwarový prolog/epilog (HPE)
- Když dojde k výjimce nebo přerušení, mikroprocesor zastaví aktuální tok programu a přepne se na provádění funkce zpracování výjimky nebo přerušení, místo aktuálního toku programu je třeba uložit. Po návratu výjimky nebo přerušení je nutné web obnovit a pokračovat v provádění zastaveného toku programu. U mikroprocesorů řady V3 se zde „místo“ týká všech registrů uložených volajících v tabulce 1-2.
- Mikroprocesory řady V3 podporují hardwarové jednocyklové automatické ukládání 16 tvarovaných registrů uložených volajícím do vnitřní oblasti zásobníku, která není pro uživatele viditelná. Když se vrátí výjimka nebo přerušení, hardwarový jediný cyklus automaticky obnoví data z oblasti vnitřního zásobníku do 16-tvarovaných registrů. HPE podporuje vnořování až do hloubky 2 úrovní.
- Schéma tlakového zásobníku mikroprocesoru je znázorněno na následujícím obrázku.
Poznámka:
- Funkce přerušení využívající HPE musí být zkompilovány pomocí MRS nebo jím poskytnutého toolchainu a funkce přerušení musí být deklarována pomocí __attribute__((interrupt(“WCH-Interrupt-fast”))).
- Funkce přerušení pomocí stack push je deklarována pomocí __attribute__((interrupt())).
Vector Table Free (VTF)
- Programmable Fast Interrupt Controller (PFIC) poskytuje 4 kanály VTF, tj. přímý přístup k záznamu funkce přerušení bez procházení procesu vyhledávání v tabulce vektorů přerušení.
- Kanál VTF lze povolit zápisem jeho čísla přerušení, základní adresy funkce přerušení a adresy offsetu do odpovídajícího registru řadiče PFIC při běžné konfiguraci funkce přerušení.
- Proces odezvy PFIC pro rychlá přerušení bez tabulek je znázorněn na obrázku 3-2 níže.
Ochrana fyzické paměti PMP
- Pro zvýšení bezpečnosti systému je modul ochrany fyzické paměti (PMP) navržen podle standardu architektury RISC-V pro mikroprocesory ječmene horského řady V3. Je podporována správa přístupových práv až 4 fyzických oblastí. Oprávnění zahrnují atributy čtení (R), zápis (W) a provádění (X) a délku chráněné oblasti lze nastavit alespoň na 4 bajty. Modul PMP se vždy projeví v uživatelském režimu, ale může se projevit volitelně uzamčením atributu (L) ve strojovém režimu.
- Pokud přístup poruší aktuální limit oprávnění, spustí abnormální přerušení. Modul PMP obsahuje čtyři skupiny 8bitových konfiguračních registrů (jedna skupina 32bitových) a čtyři skupiny adresních registrů, ke všem je potřeba přistupovat ve strojovém režimu pomocí instrukce CSR.
- Poznámka: Počet chráněných oblastí podporovaných PMP v různých modelech mikroprocesorů se může lišit a liší se také počet podporovaných registry pmpcfg a pmpaddr. Podrobnosti viz Tabulka 1-1.
Sada registrů PMP
Seznam registrů CSR podporovaných modulem PMP mikroprocesoru V3 je uveden v tabulce 4-1 níže.
Tabulka 4-1 Sada registrů modulu PMP
Jméno | CSR adresu | Přístup | Popis | Resetovat hodnotu |
pmpcfg0 | 0x3A0 | MRW | Registr konfigurace PMP 0 | 0x00000000 |
pmpaddr0 | 0x3B0 | MRW | Registr adres PMP 0 | 0xXXXXXXXXX |
pmpaddr1 | 0x3B1 | MRW | Registr adres PMP 1 | 0xXXXXXXXXX |
pmpaddr2 | 0x3B2 | MRW | Registr adres PMP 2 | 0xXXXXXXXXX |
pmpaddr3 | 0x3B3 | MRW | Registr adres PMP 3 | 0xXXXXXXXXX |
pmp
pmpcfg je konfigurační registr jednotky PMP a každý registr obsahuje čtyři 8bitová pumpovací pole, odpovídající konfiguraci čtyř oblastí, a pumping představuje konfigurační hodnotu oblasti i. Jeho formát je uveden v následující tabulce 4-2.
Tabulka 4-2 registr pmpcfg0
pmpcfg se používá ke konfiguraci oblasti I a její bitová definice je popsána v následující tabulce 4-3.
Tabulka 4-3 pmp
Bit | Jméno | Popis |
7 | L | Zamykání je povoleno a lze jej odemknout v režimu stroje. 0: Nezamčeno;
1: Zamkněte příslušný registr. |
[6:5] | – | Rezervováno |
[4:3] | A | Zarovnání adres a výběr rozsahu oblasti ochrany. 00: OFF (PMP vypnuto)
01: TOR (ochrana nejvyššího zarovnání) 10: NA4 (pevná čtyřbajtová ochrana) 11: NAPOT (2(G+2) Bytová ochrana, G≥1) |
2 | X | Spustitelný atribut. |
0: Žádné oprávnění ke spuštění;
1: Proveďte povolení. |
||
1 |
W |
Zapisovatelný atribut.
0: Bez oprávnění k zápisu 1: Oprávnění k zápisu. |
0 |
R |
Čitelný atribut
0: Žádné oprávnění ke čtení 1: oprávnění ke čtení. |
pmpaddr
Registr pmpaddr slouží ke konfiguraci adresy oblasti I. Standardní definice je pod architekturou RV32, což je kódování horních 32 bitů 34bitové fyzické adresy a její formát je uveden v následující tabulce 4-4 .
Celý fyzický adresní prostor mikroprocesoru V3 je 4G, takže horní dva bity tohoto registru nejsou využity.
Tabulka 4-4 pmpaddr
Když je vybrána možnost NAPOT, dolní bit registru adres se také používá k označení velikosti aktuální ochranné oblasti, jak je znázorněno v následující tabulce, kde „y“ je bit registru.
Tabulka 4-5 Tabulka vztahů mezi konfigurací PMP a registrem adres a chráněnou oblastí.
pmpaddr | pmpcfg. A | Odpovídající základní adrese a velikosti |
yyyy…yyyy | NA4 | S 'yy…yyyy00' jako základní adresou je chráněna 4bajtová oblast. |
yyyy…yyy0 | NAPOT | S 'yy…yyy000' jako základní adresou je chráněna 8bajtová oblast. |
yyyy…yy01 | NAPOT | S 'yy…yy0000' jako základní adresou je chráněna 16bajtová oblast. |
yyyy…y011 | NAPOT | S 'yy…y00000' jako základní adresou je chráněna 16bajtová oblast. |
… | … | … |
yyy01…111 | NAPOT | S 'y0…000000' jako základní adresou je chráněná oblast 231 bajtů. |
yy011…111 | NAPOT | Chraňte celou 232bajtovou oblast. |
Ochranný mechanismus
X/W/R v pmpcfg se používá k nastavení ochranného oprávnění oblasti I a porušení příslušného oprávnění způsobí odpovídající výjimku:
- Při pokusu o načtení instrukcí v oblasti PMP bez oprávnění k provedení to způsobí výjimku chyby přístupu k načtení instrukce (mcause=1).
- Při pokusu o zápis dat do oblasti PMP bez písemného povolení to způsobí chybovou výjimku (mcause=7) v přístupu k instrukcím úložiště.
- Při pokusu o čtení dat v oblasti PMP bez oprávnění ke čtení to způsobí abnormální chybu přístupu do paměti (mcause=5) pro instrukci načítání.
A v pmpcfg se používá k nastavení rozsahu ochrany a zarovnání adres oblasti I a k ochraně paměti A_ADDR ≤ oblasti < i > < B_ADDR (A_ADDR i B_ADDR musí být zarovnány ve 4 bajtech):
- Pokud B _ ADDR–A_ADDR = = 22, je převzat režim NA4;
- Pokud B _ ADDR–A_ADDR = = 2(G+2), G≥1 a adresa _ je 2(g+2), použije se metoda NAPOT;
- Jinak se převezme režim TOP.
Tabulka 4-6 Metody shody adres PMP
Hodnota | Jméno | Popis |
0b00 | VYPNUTO | Žádná oblast k ochraně |
0b01 | TOR | Nahoru Ochrana zarovnané oblasti.
Pod pmp pmpaddri = B_ADDR >> 2. Poznámka: Pokud je oblast 0 PMP nakonfigurována jako režim TOR (i=0), spodní hranice ochranné oblasti je adresa 0, tj. 0 ≤ addr < pmpaddr0, vše v odpovídajícím rozsahu. |
0b10 | NA4 | Opravená 4bajtová ochrana oblasti.
pmp |
0b11 | NAPOT | Chraňte oblast 2(G+2) s G ≥ 1, když je A_ADDR zarovnáno 2(G+2). pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< >1. |
- Bit L v pmp
- Mikroprocesory řady QingKe V3 podporují ochranu více zón. Když stejná operace odpovídá více zónám současně, zóna s menším číslem je spárována jako první.
Systémový časovač (SysTick)
- Mikroprocesor QingKe řady V3 je navržen s 32bitovým nebo 64bitovým čítačem (SysTick) uvnitř. Jeho zdrojem hodin jsou systémové hodiny nebo jejich 8-frekvenční dělení a V3A podporuje pouze 8-frekvenční dělení.
- Může poskytnout časovou základnu, načasování a měření času pro operační systém v reálném čase. Různé typy registrů zapojených do časovače mají různé mapovací adresy, jak je znázorněno v následujících tabulkách 5-1 a 5-2.
Tabulka 5-1 Seznam registrů V3A SysTick
Jméno | Přístupová adresa | Popis | Resetovat hodnotu |
STK_CTLR | 0xE000F000 | Řídicí registr systémového čítače | 0x00000000 |
STK_CNTL | 0xE000F004 | Nízký registr systémového čítače | 0xXXXXXXXXX |
STK_CNTH | 0xE000F008 | Vysoký registr systémového čítače
Poznámka: Platí pouze pro V3A. |
0xXXXXXXXXX |
STK_CMPLR | 0xE000F00C | Nízký registr srovnávací hodnoty systémového počtu | 0xXXXXXXXXX |
STK_CMPHR | 0xE000F010 | Vysoký registr srovnávací hodnoty systémového počtu
Poznámka: Platí pouze pro V3A. |
0xXXXXXXXXX |
Tabulka 5-2 Seznam registrů V3 SysTick dalších modelů
Jméno | Přístupová adresa | Popis | Resetovat hodnotu |
STK_CTLR | 0xE000F000 | Řídicí registr systémového čítače | 0x00000000 |
STK_SR | 0xE000F004 | Registr stavu počítadla systému | 0x00000000 |
STK_CNTL | 0xE000F008 | Nízký registr systémového počítadla | 0xXXXXXXXXX |
STK_CMPLR | 0xE000F010 | Nízký registr srovnávací hodnoty počítání | 0xXXXXXXXXX |
Každý registr je podrobně popsán následovně.
Řídicí registr systémového čítače (STK_CTLR)
Tabulka 5-3 Řídicí registry SysTick
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:5] | Rezervováno | RO | Rezervováno | 0 |
4 |
MODE |
RW |
Režim počítání: 1: Odpočítávání;
0: Počítejte. Poznámka: Neplatné pro V3A. |
0 |
3 |
STRE |
RW |
Bit aktivace automatického počítání opětovného načtení:
1: Po odpočítání do srovnávací hodnoty znovu počítejte od 0 a po odpočítání do 0 znovu počítejte od srovnávací hodnoty; 0: Pokračujte v odpočítávání nahoru/dolů. Poznámka: Neplatné pro V3A. |
0 |
2 |
STCLK |
RW |
Bit pro výběr zdroje počítadla:
1: HCLK jako časová základna; 0: HCLK/8 jako časová základna. Poznámka: Je neplatné pro V3A, který pouze podporuje HCLK/8 jako časová základna. |
0 |
1 | STRÁNKA | RW | Řídicí bity povolení přerušení čítače: | 0 |
1: Povolit přerušení čítače; 0: Zakázat přerušení čítače.
Poznámka: Neplatné pro V3A. |
||||
0 | STE | RW | Systémový čítač umožňuje řídicí bit. 1: Povolit systémový čítač STK;
0: Deaktivujte systémové počítadlo STK a počítadlo přestane počítat. |
0 |
Registr stavu počítadla systému (STK_SR)
Tento registr se nevztahuje na V3A.
Tabulka 5-4 Nízký registr čítače SysTick
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 |
SWIE |
RW |
Povolení spouštění softwarového přerušení (SWI): 1: Spouštění softwarového přerušení;
0: Vypněte spoušť. Poznámka: Tento bit musí být vymazán po vstupu do softwarového přerušení, jinak se vždy spustí. |
0 |
[30:1] | Rezervováno | RO | Rezervováno | 0 |
0 |
CNTIF |
RW |
Příznak porovnání počítání, zapište 0 jasně, zapište 1 je neplatný:
1: Počítejte do srovnávací hodnoty a odpočítávejte do 0; 0: Nebylo dosaženo srovnávací hodnoty. |
0 |
Nízký registr systémového čítače (STK_CNTL)
Tabulka 5-5 Nízký registr čítače SysTick
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | CNTL | RW | Aktuální hodnota čítače je o 32 bitů nižší. U V3A lze tento registr číst jako 8bitový /16bitový
/32-bit, ale může být zapsán pouze jako 8-bit a další modely nejsou omezeny. |
0xXXXX XXX |
Poznámka: Registr STK_CNTL a registr STK_CNTH ve V3A společně tvoří 64bitový systémový čítač.
Vysoký registr systémového čítače (STK_CNTH)
Tabulka 5-6 Vysoký registr čítače SysTick
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | CNTH | RW | Aktuální hodnota čítače je o 32 bitů vyšší. Tento registr lze číst 8-bit/16-bit/32-bit, ale může být zapsán pouze 8-bit.
Poznámka: Platí pouze pro V3A. |
0xXXXX XXX |
Poznámka: Registr STK_CNTL a registr STK_CNTH ve V3A společně tvoří 64bitový systémový čítač.
Nízký registr srovnávací hodnoty systémového počtu (STK_CMPLR)
Tabulka 5-7 Nízký registr srovnávací hodnoty SysTick
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | CMPL | RW | Nastavte hodnotu porovnání čítače na 32 bitů nižší. Když jsou hodnoty CMP a CNT stejné, spustí se přerušení STK. U V3A lze tento registr číst jako 8bitový /16bitový /32bitový, ale může být pouze
napsané jako 8bitové a ostatní modely nejsou omezeny. |
0xXXXX XXX |
Poznámka: Registr STK_CMPLR a registr STK_CMPHR ve V3A společně tvoří 64bitovou srovnávací hodnotu čítače.
Vysoký registr srovnávací hodnoty systémového počtu (STK_CMPHR)
Tabulka 5-8 SysTick srovnávací hodnota horního registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | CMPH | RW | Nastavte porovnávací hodnotu čítače o 32 bitů vyšší. Přerušení STK se spustí, když jsou hodnoty CMP a CNT stejné.
Tento registr lze číst 8-bit/16-bit/32-bit, ale může být zapsán pouze 8-bit. Poznámka: Platí pouze pro V3A. |
0xXXXX XXX |
Poznámka: Registr STK_CMPLR a registr STK_CMPHR ve V3A společně tvoří 64bitovou srovnávací hodnotu čítače.
Nastavení nízké spotřeby procesoru
- Mikroprocesory řady QingKe V3 podporují stav spánku prostřednictvím instrukce WFI (Wait for Interrupt) pro dosažení nízké statické spotřeby energie.
- Společně s řídicím registrem systému PFIC (PFIC_SCTLR) lze implementovat různé režimy spánku a instrukce WFE.
Vstupte do režimu spánku
- Mikroprocesory řady QingKe V3 mohou přejít do režimu spánku dvěma způsoby, Wait for Interrupt (WFI) a Wait For Event (WFE). Metoda WFI znamená, že mikroprocesor přejde do režimu spánku, čeká na probuzení přerušení a poté se probudí na odpovídající přerušení, které se má provést. Metoda WFE znamená, že mikroprocesor přejde do režimu spánku, čeká na probuzení události a probudí se, aby pokračoval ve vykonávání dříve zastaveného toku programu.
- Standardní RISC-V podporuje instrukce WFI a příkaz WFI lze provést přímo pro přechod do režimu spánku metodou WFI. Pro metodu WFE se bit WFITOWFE v systémovém řídicím registru PFIC_SCTLR používá k řízení následných příkazů WFI jako zpracování WFE k dosažení metody WFE pro přechod do režimu spánku.
- Hloubka spánku je řízena podle bitu SLEEPDEEP v PFIC_SCTLR.
- Pokud je SLEEPDEEP v registru PFIC_SCTLR vynulován, mikroprocesor přejde do režimu spánku a je povoleno vypnout hodiny vnitřní jednotky kromě SysTick a části logiky probuzení.
- Pokud je v registru PFIC_SCTLR nastaveno SLEEPDEEP, mikroprocesor přejde do režimu hlubokého spánku a je povoleno vypnutí všech hodin buněk.
- Když je mikroprocesor v režimu ladění, není možné vstoupit do žádného druhu režimu spánku.
Spánkové probuzení
Mikroprocesory řady QingKe V3 lze po spánku probudit pomocí WFI a WFE následujícími způsoby.
Poté, co metoda WFI usne, může být probuzena
- Mikroprocesor může být probuzen zdrojem přerušení, na který reaguje řadič přerušení. Po probuzení mikroprocesor nejdříve provede funkci přerušení.
- Vstupte do režimu spánku, požadavek na ladění může způsobit, že se mikroprocesor probudí a přejde do hlubokého spánku, požadavek na ladění nemůže probudit mikroprocesor.
Poté, co metoda WFE přejde do režimu spánku, lze mikroprocesor probudit následujícím způsobem.
- Interní nebo externí události, kdy není potřeba konfigurovat řadič přerušení, se probudí a pokračuje ve vykonávání programu.
- Pokud je povolen zdroj přerušení, mikroprocesor se při vygenerování přerušení probudí a po probuzení nejprve mikroprocesor provede funkci přerušení.
- Pokud je nakonfigurován bit SEVONPEND v PFIC_SCTLR, řadič přerušení nepovolí přerušení, ale když se vygeneruje nový čekající signál přerušení (dříve vygenerovaný nevyřízený signál se neprojeví), může také způsobit probuzení mikroprocesoru a odpovídající příznak čekajícího přerušení je třeba po probuzení ručně vymazat.
- Požadavek na ladění v režimu spánku může způsobit, že se mikroprocesor probudí a přejde do hlubokého spánku, požadavek na ladění nemůže probudit mikroprocesor.
- Stav mikroprocesoru po probuzení lze navíc řídit konfigurací bitu SLEEPONEXIT v PFIC_SCTLR.
- SLEEPONEXIT je nastaven a instrukce návratu přerušení poslední úrovně (mret) spustí režim spánku WFI.
SLEEPONEXIT je vymazán bez účinku.
Různé produkty MCU vybavené mikroprocesory řady V3 mohou přijímat různé režimy spánku, vypínat různá periferní zařízení a hodiny, implementovat různé zásady správy napájení a metody probuzení podle různých konfigurací PFIC_SCTLR a realizovat různé režimy nízké spotřeby.
Podpora ladění
- Mikroprocesory řady QingKe V3 obsahují hardwarový ladicí modul, který podporuje složité operace ladění. Když je mikroprocesor pozastaven, ladicí modul může přistupovat k GPR, CSR, paměti, externím zařízením atd. mikroprocesoru prostřednictvím abstraktních příkazů, instrukcí pro nasazení vyrovnávací paměti programu atd. Ladicí modul může pozastavit a obnovit činnost mikroprocesoru.
- Ladicí modul se řídí specifikací RISC-V External Debug Support Version 0.13.2, podrobnou dokumentaci lze stáhnout z RISC-V International webmísto.
Modul ladění
- Ladicí modul uvnitř mikroprocesoru, schopný provádět ladicí operace vydávané hostitelem ladění, zahrnuje.
- Přístup k registrům přes ladicí rozhraní
- Resetujte, pozastavte a obnovte mikroprocesor prostřednictvím rozhraní ladění
- Čtení a zápis paměti, instrukčních registrů a externích zařízení přes ladicí rozhraní
- Nasaďte více libovolných instrukcí prostřednictvím rozhraní ladění
- Nastavte softwarové zarážky prostřednictvím ladicího rozhraní
- Nastavte hardwarové body přerušení prostřednictvím rozhraní ladění
- Podpora automatického spouštění abstraktních příkazů
- Podpora jednokrokového ladění
- Poznámka: V3A nepodporuje hardwarové body přerušení, hardwarové body přerušení V3B podporují shodu adres instrukcí a hardwarové body přerušení V3C podporují shodu adresy instrukcí a datových adres.
- Vnitřní registry ladícího modulu používají 7bitový adresový kód a následující registry jsou implementovány uvnitř mikroprocesorů řady QingKe V3.
Tabulka 7-1 Seznam registrů modulu ladění
Jméno | Přístupová adresa | Popis |
údaje0 | 0x04 | Datový registr 0, lze použít pro dočasné uložení dat |
údaje1 | 0x05 | Datový registr 1, lze použít pro dočasné uložení dat |
zbavit se kontroly | 0x10 | Debug řídicího registru modulu |
dmstatus | 0x11 | Registr stavu ladění modulu |
hartinfo | 0x12 | Stavový registr mikroprocesoru |
abstrakty | 0x16 | Registr stavu abstraktního příkazu |
příkaz | 0x17 | Abstraktní příkazový registr |
abstraktní auto | 0x18 | Automatické provedení abstraktního příkazu |
progbuf0-7 | 0x20-0x27 | Instrukční cache registruje 0-7 |
haltsum0 | 0x40 | Pozastavit registr stavu |
- Ladicí hostitel může řídit pozastavení, obnovení, resetování mikroprocesoru atd. konfigurací registru decontrol. Standard RISC-V definuje tři typy abstraktních příkazů: přístupový registr, rychlý přístup a přístupovou paměť.
- Mikroprocesor QingKe V3A podporuje pouze přístup k registru, ostatní modely podporují přístup k registru a paměti, ale ne rychlý přístup. Přístup k registrům (GPR, CSR) a nepřetržitý přístup do paměti lze realizovat abstraktními příkazy.
- Modul ladění implementuje 8 registrů mezipaměti instrukcí progbuf0-7 a hostitel ladění může ukládat do mezipaměti více instrukcí (které mohou být komprimované instrukce) a může se rozhodnout pokračovat ve vykonávání instrukcí v registrech mezipaměti instrukcí po provedení abstraktního příkazu nebo provést přímo uložené pokyny.
- Poznámka že poslední instrukce v programech musí být instrukce „ebreak“ nebo „c.ebreak“. Přístup k úložišti, periferiím atd. je také možný prostřednictvím abstraktních příkazů a instrukcí uložených v mezipaměti programů.
- Každý registr je podrobně popsán následovně.
- Datový registr 0 (data0)
Tabulka 7-2 definice datového registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | údaje0 | RW | Datový registr 0, slouží k dočasnému uložení dat | 0 |
Datový registr 1 (data1)
Tabulka 7-3 definice registru data1
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | údaje1 | RW | Datový registr 1, slouží k dočasnému uložení dat | 0 |
Řídicí registr modulu ladění (decontrol)
Tento registr řídí pauzu, reset a obnovení činnosti mikroprocesoru. Ladicí hostitel zapisuje data do odpovídajícího pole, aby dosáhl pauzy (haltreq), resetu (ndmreset), obnovení (resumereq). Popisujete následující.
Tabulka 7-4 decontrol definice registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | haltreq | WO | 0: Vymažte požadavek na pozastavení
1: Odešlete požadavek na pozastavení |
0 |
30 | resumé | W1 | 0: Neplatné
1: Obnovte aktuální mikroprocesor Poznámka: Zápis 1 je platný a po obnovení mikroprocesoru bude hardware vymazán |
0 |
29 | Rezervováno | RO | Rezervováno | 0 |
28 | ackhavereset | W1 | 0: Neplatné
1: Vymažte bit stavu sklizně mikroprocesoru |
0 |
[27:2] | Rezervováno | RO | Rezervováno | 0 |
1 | ndmreset | RW | 0: Vymazat reset
1: Resetujte celý systém kromě ladicího modulu |
0 |
0 | deaktivovat | RW | 0: Resetujte modul ladění
1: Modul Debug funguje správně |
0 |
Registr stavu modulu ladění (stav dm)
- Tento registr se používá k indikaci stavu ladicího modulu a je registrem pouze pro čtení s následujícím popisem každého bitu.
Tabulka 7-5 definice registru dmstatus
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:20] | Rezervováno | RO | Rezervováno | 0 |
19 | allhavereset | RO | 0: Neplatné
1: Reset mikroprocesoru |
0 |
18 | anyhavereset | RO | 0: Neplatné
1: Reset mikroprocesoru |
0 |
17 | allresumeack | RO | 0: Neplatné
1: Reset mikroprocesoru |
0 |
16 | anyresumeack | RO | 0: Neplatné
1: Reset mikroprocesoru |
0 |
[15:14] | Rezervováno | RO | Rezervováno | 0 |
13 | aluviální | RO | 0: Neplatné
1: Mikroprocesor není k dispozici |
0 |
12 | jakýkoli prospěch | RO | 0: Neplatné
1: Mikroprocesor není k dispozici |
0 |
11 | všechny běží | RO | 0: Neplatné
1: Mikroprocesor běží |
0 |
10 | jakýkoli běh | RO | 0: Neplatné
1: Mikroprocesor běží |
0 |
9 | zastaveno | RO | 0: Neplatné
1: Mikroprocesor je pozastaven |
0 |
8 | jakékoli zastaveno | RO | 0: Neplatné
1: Mikroprocesor je mimo zavěšení |
0 |
7 | ověřené |
RO |
0: Před použitím modulu ladění je vyžadováno ověření
1: Modul ladění byl certifikován |
0x1 |
[6:4] | Rezervováno | RO | Rezervováno | 0 |
[3:0] | verze | RO | Verze architektury podpory ladění 0010: V0.13 | 0x2 |
Registr stavu mikroprocesoru (hartinfo)
Tento registr se používá k poskytování informací o mikroprocesoru hostiteli ladění a je registrem pouze pro čtení s každým bitem popsaným následovně.
Tabulka 7-6 definice registru hartinfo
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:24] | Rezervováno | RO | Rezervováno | 0 |
[23:20] | poškrábat | RO | Počet podporovaných registrů škrábanců | 0x3 |
[19:17] | Rezervováno | RO | Rezervováno | 0 |
16 | DataAccess | RO | 0: Datový registr je mapován na adresu CSR
1: Datový registr je mapován na adresu paměti |
0x1 |
[15:12] | velikost dat | RO | Počet datových registrů | 0x2 |
[11:0] | data přidat |
RO |
Offsetová adresa datového registru data0,
jehož základní adresa je 0xe0000000, podléhá specifickému čtení. |
0xXXX |
Abstraktní ovládací a stavové registry (abstrakty)
Tento registr se používá k označení provedení abstraktního příkazu. Ladicí hostitel může číst tento registr, aby zjistil, zda byl proveden poslední abstraktní příkaz nebo ne, a může zkontrolovat, zda se během provádění abstraktního příkazu nevygeneruje chyba, a typ chyby, která je podrobně popsána níže.
Tabulka 7-7 definice registru abstraktů
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:29] | Rezervováno | RO | Rezervováno | 0 |
[28:24] | progbufsize | RO | Udává číslo programu vyrovnávací paměti programu
cache registry |
0x8 |
[23:13] | Rezervováno | RO | Rezervováno | 0 |
12 | zaneprázdněný | RO | 0: Neprovádí se žádný abstraktní příkaz
1: Provádějí se abstraktní příkazy Poznámka: Po provedení je hardware vymazán. |
0 |
11 | Rezervováno | RO | Rezervováno | 0 |
[10:8] | cmder | RW | Chyba abstraktního příkazu typ 000: Žádná chyba
001: Spuštění abstraktního příkazu pro zápis do příkazu, abstraktů, abstraktních automatických registrů nebo čtení a zápis do datových a progbuf registrů 010: Nepodporuje aktuální abstraktní příkaz 011: Provedení abstraktního příkazu s výjimkou 100: Mikroprocesor není pozastaven nebo nedostupný a nemůže provádět abstraktní příkazy 101: Chyba sběrnice 110: Chyba paritního bitu během komunikace 111: Jiné chyby Poznámka: Pro zápis bitů se 1 používá k vymazání nuly. |
0 |
[7:4] | Rezervováno | RO | Rezervováno | 0 |
[3:0] | sleva | RO | Počet datových registrů | 0x2 |
- Ladicí hostitelé mohou přistupovat k GPR, CSR registrům a paměti zápisem různých konfiguračních hodnot do abstraktního příkazového registru.
- Při přístupu k registrům jsou bity příkazového registru definovány následovně.
- Tabulka 7-8 Definice příkazového registru při přístupu k registrům
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:24] | typ cmd | WO | Abstraktní příkaz typu 0: Přístupový registr;
1: Rychlý přístup (nepodporováno); 2: Přístup do paměti. |
0 |
23 | Rezervováno | WO | Rezervováno | 0 |
[22:20] | aarsize | WO | Bitová šířka dat přístupového registru 000: 8 bitů
001: 16-bit 010: 32-bit |
0 |
011: 64-bit (nepodporováno) 100: 128-bit (nepodporováno)
Poznámka: Při přístupu k registrům s pohyblivou řádovou čárkou FPR, je podporován pouze 32bitový přístup. |
||||
19 | aarpostinkrement | WO | 0: Žádný účinek
1: Automatické zvýšení hodnoty regno po přístupu k registru |
0 |
18 | post exec | WO | 0: Žádný účinek
1:Proveďte abstraktní příkaz a poté spusťte příkaz v progbuf |
0 |
17 | převod | WO | 0: Neprovádět operaci určenou zápisem
1: Proveďte manipulaci určenou zápisem |
0 |
16 | napsat | WO | 0: Kopírování dat ze zadaného registru do data0 1: Kopírování dat z registru data0 do zadaného registru |
0 |
[15:0] | regno | WO | Zadejte přístupové registry 0x0000-0x0fff jsou CSR 0x1000-0x101f jsou GPR |
0 |
Při přístupu do paměti jsou bity v příkazovém registru definovány následovně.
Tabulka 7-9 Definice příkazu Registrovat při přístupu do paměti
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:24] | typ cmd | WO | Abstraktní příkaz typu 0: Přístupový registr;
1: Rychlý přístup (nepodporováno); 2: Přístup do paměti. |
0 |
23 | aamvirtuální | WO | 0: Přístupová fyzická adresa;
1: Přístup k virtuální adrese. |
0 |
[22:20] | velikost paže | WO | Bitová šířka dat přístupové paměti 000: 8 bitů;
001: 16bitový; 010: 32bitový; 011: 64-bit (nepodporováno); 100: 128-bit (nepodporováno); |
0 |
19 | aampostinkrement | WO | 0: Žádný vliv;
1: Po úspěšném přístupu do paměti zvyšte adresu uloženou v registru data1 o počet bajtů odpovídající bitové šířce nakonfigurované podle velikosti ramene. Aamsize=0, přístup po byte, data1 plus 1. Aamsize=1, přístup pomocí půl slova, data1 plus 2. aamsize=2, přístupný pomocí bitů, data1 plus 4. |
0 |
18 | post exec | WO | 0: Žádný vliv;
1: Spusťte příkaz v progbuf po provedení abstraktního příkazu. |
0 |
17 | Rezervovat | RO | Rezervováno | 0 |
16 |
napsat |
WO |
0: Čtení dat z adresy určené parametrem data1 až data0
1: Zápis dat do data0 na adresu zadanou pomocí údaje1. |
0 |
[15:14] |
cílově specifické |
WO |
Definice režimu čtení a zápisu Zápis:
00, 01: Zápis přímo do paměti; 10: Poté, co jsou data v datech0 OR s datovými bity v paměti, je výsledek zapsán do paměti (podporován je pouze přístup ke slovům). 11: Po sečtení dat v datech0 s datovými bity v paměti zapište výsledek do paměti (podporován je pouze přístup ke slovům). Číst: 00, 01, 10, 11: Čtení 0 přímo z paměti. |
0 |
[13:0] | Rezervovat | RO | Rezervováno |
Registr automatického provádění abstraktního příkazu (abstract auto)
Tento registr se používá ke konfiguraci modulu ladění. Při čtení a zápisu progbufx a dat ladícího modulu lze znovu provést abstraktní příkaz.
Popis tohoto registru je následující:
Tabulka 7-10 definice abstraktního automatického registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:16] | autoexecprogbuf | RW | Pokud je bit nastaven, odpovídající čtení a zápis progbufx způsobí, že abstraktní příkaz v registru příkazů bude znovu proveden.
Poznámka: Řada V3 je navržena s 8 progbufs, odpovídající bitům [23:16]. |
0 |
[15:12] | Rezervovat | RO | Rezervováno | 0 |
[11:0] | autoexecdata |
RW |
Pokud je bit nastaven na 1, odpovídající čtení a zápis datového registru způsobí, že abstraktní příkaz v registru příkazů bude znovu proveden.
Poznámka: Řada V3 je navržena se dvěma údaji registry, odpovídající bitům [1:0]. |
0 |
Registr mezipaměti instrukcí (progbufx)
Tento registr se používá k uložení jakékoli instrukce a nasazení odpovídající operace, včetně 8, která musí věnovat pozornost poslednímu provedení, které musí být „break“ nebo „c.ebreak“.
Tabulka 7-11 definice registru progbuf
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | progbuf | RW | Kódování instrukcí pro operace mezipaměti, které
může obsahovat instrukce pro kompresi |
0 |
Stavový registr pozastavení (haltsum0)
Tento registr se používá k označení, zda je mikroprocesor pozastaven nebo ne. Každý bit indikuje pozastavený stav mikroprocesoru, a když je pouze jedno jádro, použije se k jeho indikaci pouze nejnižší bit tohoto registru.
Tabulka 7-12 definice registru haltsum0
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:1] | Rezervováno | RO | Rezervováno | 0 |
0 | haltsum0 | RO | 0: Mikroprocesor pracuje normálně
1: Zastavení mikroprocesoru |
0 |
- Kromě výše zmíněných registrů ladícího modulu se do funkce ladění zapojují i některé registry CSR, zejména registr řízení ladění a stav dcsr a ukazatel instrukce ladění dpc, které jsou podrobně popsány dále.
- Řízení ladění a stavový registr (dcsr)
Tabulka 7-13 definice registru dcsr
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:28] | xdebugver | DRO | 0000: Externí ladění není podporováno 0100: Podpora standardního externího ladění
1111: Externí ladění je podporováno, ale nesplňuje specifikaci |
0x4 |
[27:16] | Rezervováno | DRO | Rezervováno | 0 |
15 | přerušení | DRW | 0: Příkaz break se ve strojovém režimu chová tak, jak je popsáno v oprávnění file
1: Příkaz break ve strojovém režimu může vstoupit do režimu ladění |
0 |
[14:13] | Rezervováno | DRO | Rezervováno | 0 |
12 | rozpad |
DRW |
0: Příkaz break v uživatelském režimu se chová tak, jak je popsáno v oprávnění file
1: Příkaz break v uživatelském režimu může vstoupit do režimu ladění |
0 |
11 | krok | DRW | 0: Při jednokrokovém ladění jsou přerušení zakázána
1: Povolit přerušení při ladění v jednom kroku |
0 |
10 | Rezervováno | DRO | Rezervováno | 0 |
9 | zastavit čas | DRW | 0: Systémový časovač běží v režimu ladění
1: Systémový časovač se zastaví v režimu ladění |
0 |
[8:6] | příčina | DRO | Důvody pro zadání ladění
001: Zadání ladění ve formě příkazu break (priorita 3) 010: Zadání ladění ve formě spouštěcího modulu (priorita 4, nejvyšší) 011: Zadání ladění ve formě požadavku na pauzu (priorita 1) 100: ladění ve formě jednokrokového ladění (priorita 0, nejnižší) |
0 |
101: vstup do režimu ladění přímo po resetu mikroprocesoru (priorita 2) Ostatní: Vyhrazeno | ||||
[5:3] | Rezervováno | DRO | Rezervováno | 0 |
2 | krok | DRW | 0: Vypněte jednokrokové ladění
1: Povolit ladění v jednom kroku |
0 |
[1:0] | Předchozí | DRW | Privilege mode 00: Uživatelský režim
01: Režim správce (nepodporováno) 10: Rezervováno 11: Režim stroje Poznámka: Při vstupu do režimu ladění si zaznamenejte privilegovaný režim, ladicí program může tuto hodnotu upravit a upravit tak privilegovaný režim při ukončení ladění |
0 |
Ukazatel programu režimu ladění (DPC)
- Tento registr se používá k uložení adresy další instrukce, která se má provést poté, co mikroprocesor vstoupí do režimu ladění, a její hodnota se aktualizuje podle různých pravidel v závislosti na důvodu zadání ladění. dpc registr je podrobně popsán následovně.
Tabulka 7-14 Definice registrů dpc
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | DPC | DRW | Adresa instrukce | 0 |
Pravidla pro aktualizaci registrů jsou uvedena v následující tabulce.
Tabulka 7-15 Pravidla aktualizace dpc
Zadejte metodu ladění | Pravidla aktualizace dpc |
přerušení | Adresa instrukce Ebreak |
jediný krok | Adresa instrukce následující instrukce aktuální instrukce |
spouštěcí modul | Dočasně není podporováno |
žádost o zastavení | Adresa další instrukce, která má být provedena při vstupu do Debug |
Ladicí rozhraní
- Na rozdíl od standardního JTAG rozhraní definované RISC-V, mikroprocesor QingKe řady V3 využívá 1-drátové/2-vodičové sériové ladicí rozhraní a řídí se protokolem WCH ladícího rozhraní V1.0.
- Ladicí rozhraní je zodpovědné za komunikaci mezi ladicím hostitelem a ladicím modulem a realizuje operaci čtení/zápisu ladícího hostitele do registrů ladicího modulu.
- WCH navrhl WCH_Link a open source jeho schéma a binární program files, které lze použít pro ladění všech mikroprocesorů architektury RISC-V.
- Konkrétní protokoly rozhraní ladění naleznete v příručce WCH Debug Protocol Manual.
Seznam registrů CSR
- Architektura RISC-V definuje řadu řídicích a stavových registrů (CSR) pro řízení a záznam provozního stavu mikroprocesoru.
- Některé z CSR byly představeny v předchozí části a tato kapitola podrobně popisuje registry CSR implementované v mikroprocesorech řady QingKe V3.
Seznam registrů CSR
Tabulka 8-1 Seznam registrů CSR mikroprocesoru
Typ | Jméno | CSR Adresa | Přístup | Popis |
RISC-V
Standardní CSR |
marchid | 0xF12 | MRO | Registr čísel architektury |
mizerný | 0xF13 | MRO | Registr číslování implementace hardwaru | |
mstatus | 0x300 | MRW | Stavový registr | |
misa | 0x301 | MRW | Registr hardwarové sady instrukcí | |
mtvec | 0x305 | MRW | Registr základních adres výjimky | |
mscratch | 0x340 | MRW | Režim stroje stagregistrace | |
MEPC | 0x341 | MRW | Registr ukazatelů programu výjimky | |
mcause | 0x342 | MRW | Registr příčin výjimek | |
mtval | 0x343 | MRW | Registr výjimečných hodnot | |
pmpcfg | 0x3A0+i | MRW | konfigurační registr PMP | |
pmpaddr | 0x3B0+i | MRW | registr adres PMP | |
tselect | 0x7A0 | MRW | Ladění registru výběru spouštěče | |
tdata1 | 0x7A1 | MRW | Registr dat spouštěče ladění 1 | |
tdata2 | 0x7A2 | MRW | Registr dat spouštěče ladění 2 | |
dcsr | 0x7B0 | DRW | Ladění řídicích a stavových registrů | |
dpc | 0x7B1 | DRW | Registr ukazatelů programu v režimu ladění | |
dscratch0 | 0x7B2 | DRW | Režim ladění stagregistrace 0 | |
dscratch1 | 0x7B3 | DRW | Režim ladění stagregistrace 1 | |
CSR definovaná dodavatelem |
gintenr | 0x800 | URW | Globální registr povolení přerušení |
intsyscr | 0x804 | URW | Přerušit řídicí registr systému | |
corecfgr | 0xBC0 | MRW | Registr konfigurace mikroprocesoru | |
inestcr | 0xBC1 | MRW | Přerušit vnořený řídicí registr |
Standardní CSR registry RISC-V
- Registr čísel architektury (marchid)
- Tento registr je registr pouze pro čtení, který označuje aktuální číslo hardwarové architektury mikroprocesoru, které se skládá hlavně z kódu dodavatele, kódu architektury, kódu série a kódu verze. Každý z nich je definován následovně.
Tabulka 8-2 definice marchid registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | Rezervováno | MRO | Rezervováno | 1 |
[30:26] | Prodejce0 | MRO | Kód výrobce 0
Opraveno na kód písmene „W“. |
0x17 |
[25:21] | Prodejce1 | MRO | Kód výrobce 1
Opraveno na kód písmene „C“. |
0x03 |
[20:16] | Prodejce2 | MRO | Kód výrobce 2
Opraveno na kód písmene „H“. |
0x08 |
15 | Rezervováno | MRO | Rezervováno | 1 |
[14:10] | Oblouk | MRO | Kód architektury | 0x16 |
Architektura RISC-V je pevně nastavena na kód písmene „V“. | ||||
[9:5] | Seriál | MRO | Kód série
Řada QingKe V3, pevná na číslo „3“ |
0x03 |
[4:0] | Verze | MRO | Kód verze
Může být verze „A“, „B“, „C“ a další písmena kódu |
x |
Číslo výrobce a číslo verze jsou abecední a sériové číslo je číselné. Kódovací tabulka písmen je uvedena v následující tabulce.
Tabulka 8-3 Tabulka abecedního mapování
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
- Mezi nimi, mikroprocesor QingKe V3A, registr čte zpět na 0.
Registr číslování implementace hardwaru (průhledný)
- Tento registr se skládá hlavně z kódů dodavatelů, z nichž každý je definován následovně.
Tabulka 8-4 definice přehledného registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | Rezervováno | MRO | Rezervováno | 1 |
[30:26] | Prodejce0 | MRO | Kód výrobce 0
Opraveno na kód písmene „W“. |
0x17 |
[25:21] | Prodejce1 | MRO | Kód výrobce 1
Opraveno na kód písmene „C“. |
0x03 |
[20:16] | Prodejce2 | MRO | Kód výrobce 2
Opraveno na kód písmene „H“. |
0x08 |
15 | Rezervováno | MRO | Rezervováno | 1 |
[14:8] | Rezervováno | MRO | Rezervováno | 0 |
[7:4] | Menší | MRO | Číslo Subversion | 0xX |
[3:0] | Hlavní | MR0 | Číslo hlavní verze | 0xX |
- Tento registr je čitelný v jakékoli implementaci stroje a v procesoru řady QingKe V3A tento registr čte zpět na nulu.
Registr stavu režimu stroje (mstatus)
- Tento registr byl částečně popsán v předchozí části a jeho osoby jsou umístěny následovně.
Tabulka 8-5 Definice registru mstatus
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:13] | Rezervováno | MRO | Rezervováno | 0 |
[12:11] | MPP | MRW | Privilegovaný režim před vstupem na přestávku | 0 |
[10:8] | Rezervováno | MRO | Rezervováno | 0 |
7 | MPIE | MRW | Stav povolení přerušení před vstupem do přerušení | 0 |
[6:4] | Rezervováno | MRO | Rezervováno | 0 |
3 | MIE | MRW | Povolení přerušení strojového režimu | 0 |
[2:0] | Rezervováno | MRO | Rezervováno | 0 |
- Pole MPP se používá k uložení privilegovaného režimu před vstupem do výjimky nebo přerušení a slouží k obnovení privilegovaného režimu po ukončení výjimky nebo přerušení. MIE je globální bit povolení přerušení a při zadávání výjimky nebo přerušení se hodnota MPIE aktualizuje na hodnotu MIE a je třeba poznamenat, že v mikroprocesorech řady QingKe V3 se MIE neaktualizuje na 0 před poslední úroveň vnořených přerušení, aby bylo zajištěno, že vnoření přerušení ve strojovém režimu bude i nadále prováděno. Po ukončení výjimky nebo přerušení se mikroprocesor vrátí do režimu Machine uloženého pomocí MPP a MIE se obnoví na hodnotu MPIE.
- Mikroprocesor QingKe V3 podporuje režim Machine a User mode, pokud potřebujete, aby mikroprocesor fungoval pouze v režimu Machine, můžete nastavit MPP na 0x3 při inicializaci spouštění file, to znamená, že po návratu zůstane vždy v režimu Machine.
Registr hardwarové sady instrukcí (misa)
- Tento registr se používá k označení architektury mikroprocesoru a podporovaných rozšíření instrukční sady, z nichž každé je popsáno následovně.
Tabulka 8-6 Definice registru misa
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:30] | MXL | MRO | Délka strojového slova 1:32
2:64 3:128 |
1 |
[29:26] | Rezervováno | MRO | Rezervováno | 0 |
[25:0] | Rozšíření | MRO | Rozšíření instrukční sady | x |
- MXL se používá k označení délky slova mikroprocesoru, QingKe V3 jsou 32bitové mikroprocesory a doména je pevně nastavena na 1.
- Rozšíření se používají k označení, že mikroprocesor podporuje podrobnosti o rozšířené instrukční sadě, každá označuje třídu rozšíření, její podrobný popis je uveden v následující tabulce.
Tabulka 8-7 Podrobnosti o rozšíření sady instrukcí
Bit | Jméno | Popis |
0 | A | Atomové prodloužení |
1 | B | Předběžně vyhrazeno pro rozšíření Bit-Manipulation |
2 | C | Komprimované rozšíření |
3 | D | Rozšíření s plovoucí desetinnou čárkou s dvojitou přesností |
4 | E | RV32E základna ISA |
5 | F | Jednopřesné prodloužení s plovoucí desetinnou čárkou |
6 | G | K dispozici jsou další standardní rozšíření |
7 | H | Rozšíření Hypervisor |
8 | I | RV32I/64I/128I báze ISA |
9 | J | Předběžně vyhrazeno pro rozšíření Dynamically Translated Languages |
10 | K | Rezervováno |
11 | L | Předběžně vyhrazeno pro rozšíření s plovoucí desetinnou čárkou |
12 | M | Rozšíření Integer Multiply/Divide |
13 | N | Podporována přerušení na uživatelské úrovni |
14 | O | Rezervováno |
15 | P | Předběžně vyhrazeno pro rozšíření Packed-SIMD |
16 | Q | Čtyřnásobně přesné prodloužení s plovoucí desetinnou čárkou |
17 | R | Rezervováno |
18 | S | Implementován režim supervizora |
19 | T | Předběžně vyhrazeno pro rozšíření Transakční paměti |
20 | U | Implementován uživatelský režim |
21 | V | Předběžně vyhrazeno pro rozšíření Vector |
22 | W | Rezervováno |
23 | X | Existují nestandardní rozšíření |
24 | Y | Rezervováno |
25 | Z | Rezervováno |
- Napřample, pro mikroprocesor QingKe V3A je hodnota registru 0x401001105, což znamená, že podporovaná architektura instrukční sady je RV32IMAC a má implementaci uživatelského režimu.
Registr základní adresy výjimky režimu stroje (mtvec)
- Tento registr se používá k uložení základní adresy obsluhy výjimky nebo přerušení a spodní dva bity se používají ke konfiguraci režimu a metody identifikace vektorové tabulky, jak je popsáno v části 3.2.
Režim stroje stagzápis do registru (mscratch)
Tabulka 8-8 definice registru mscratch
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | mscratch | MRW | Ukládání dat | 0 |
Tento registr je 32bitový čitelný a zapisovatelný registr ve strojovém režimu pro dočasné ukládání dat. Napřample, při zadávání obsluhy výjimky nebo přerušení se do tohoto registru uloží uživatelský ukazatel zásobníku SP a ukazatel zásobníku přerušení se přiřadí registru SP. Po ukončení výjimky nebo přerušení obnovte od začátku hodnotu uživatelského ukazatele zásobníku SP. To znamená, že zásobník přerušení a zásobník uživatele mohou být izolovány.
Registr ukazatelů programu výjimek režimu stroje (mapa)
Tabulka 8-9 definice registru mepc
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | mepc | MRW | Ukazatel postupu výjimky | 0 |
- Tento registr slouží k uložení ukazatele programu při zadávání výjimky nebo přerušení.
- Používá se k uložení ukazatele PC instrukce před zadáním výjimky, když je generována výjimka nebo přerušení, a mepc se používá jako návratová adresa, když je zpracována výjimka nebo přerušení a použita pro návrat výjimky nebo přerušení.
- Je však důležité poznamenat, že.
- Když dojde k výjimce, mepc se aktualizuje na hodnotu PC instrukce aktuálně generující výjimku.
- Když dojde k přerušení, mepc se aktualizuje na hodnotu PC další instrukce.
- Když po zpracování výjimky potřebujete vrátit výjimku, měli byste věnovat pozornost úpravě hodnoty mepc a další podrobnosti naleznete v kapitole 2 Výjimky.
Registr příčin výjimky režimu stroje (mcause)
Tabulka 8-10 definice registru mcause
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
31 | Přerušit | MRW | Pole indikace přerušení 0: Výjimka
1: Přerušení |
0 |
[30:0] | Kód výjimky | MRW | Podrobnosti o kódech výjimek viz Tabulka 2-1 | 0 |
- Tento registr slouží především k uložení příčiny výjimky nebo čísla přerušení přerušení. Jeho nejvyšší bit je pole Přerušení, které se používá k označení, zda je aktuální výskyt výjimkou nebo přerušením.
- Spodní bit je kód výjimky, který se používá k označení konkrétní příčiny. Podrobnosti naleznete v kapitole 2 Výjimky.
Registr hodnoty výjimky režimu stroje (mtval)
Tabulka 8-11 definice registru mtval
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | mtval | MRW | Výjimečná hodnota | 0 |
- Tento registr se používá k uložení hodnoty, která způsobila výjimku, když dojde k výjimce. Podrobnosti, jako je hodnota a doba uložení, naleznete v kapitole 2 Výjimky.
Registr konfigurace PMP (pmpcfg
- Tento registr se používá hlavně ke konfiguraci jednotky ochrany fyzické paměti a každých 8 bitů tohoto registru se používá ke konfiguraci ochrany oblasti. Podrobnou definici naleznete v kapitole 4.
Registr adres PMP (pmpaddr
- Tento registr se používá hlavně pro konfiguraci adresy jednotky ochrany fyzické paměti, která kóduje horních 32 bitů 34bitové fyzické adresy. Konkrétní metodu konfigurace naleznete v kapitole 4.
Registr programového ukazatele režimu ladění (DPC)
- Tento registr se používá k uložení adresy další instrukce, která se má provést po vstupu mikroprocesoru
- Režim ladění a jeho hodnota se aktualizují pomocí různých pravidel v závislosti na důvodu zadání ladění. Podrobný popis naleznete v části 6.1.
Ladění spouštěče výběru registru (vybrat)
- Platí pouze pro mikroprocesory, které podporují hardwarové body přerušení a podporují maximálně 4kanálové body přerušení, a jeho spodní 2 bity jsou platné.
- Při konfiguraci každého bodu přerušení kanálu musíte před konfigurací vybrat odpovídající kanál prostřednictvím tohoto registru.
Tabulka 8-12 vyberte definici registru
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:2] | Rezervováno | MRO | Rezervováno | 0 |
[1:0] |
VYBRAT |
MRW |
Registr výběru kanálu bodu přerušení je nakonfigurován, to znamená, že po výběru odpovídajícího kanálu lze použít registry tdata1 a tdata2 pro konfiguraci bodu přerušení.
informace. |
X |
Ladění datového registru spouštěče 1 (tdata1)
Platí pouze pro mikroprocesory, které podporují hardwarové body přerušení. Mikroprocesory podporují pouze zarážky adresy instrukce a adresy dat, kde bit TYPE registru tdata1 má pevnou hodnotu 2 a ostatní bity odpovídají definici řízení v ladicím standardu.
Tabulka 8-13 Definice registru tdata1
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:28] | TYP | MRO | Definice typu zlomu, typ kontroly. | 0x2 |
27 |
DMODE |
MRO |
0: Příslušné registry klopného obvodu lze upravit jak v režimu stroje, tak v režimu ladění;
1: Pouze režim ladění může upravit příslušné registry klopného obvodu. |
1 |
[26:21] |
MASKMAX |
MRO |
Když MATCH=1, je povolen maximální exponenciální výkonový rozsah přizpůsobení, to znamená, že maximální povolený rozsah přizpůsobení je 231 bajtů. |
0x1F |
[20:13] | Rezervováno | MRO | Rezervováno | 0 |
12 |
AKCE |
MRW |
Nastavte režim zpracování při spouštění bodu přerušení:
0: Při spouštění zadejte bod přerušení a zavolejte zpět přerušení; 1: Po spuštění přejděte do režimu ladění. |
0 |
[11:8] | Rezervováno | MRO | Rezervováno | 0 |
7 |
ZÁPAS |
MRW |
Odpovídající konfigurace zásad:
0: Shoda, když je spouštěcí hodnota rovna TDATA2; 1: Spouštěcí hodnota odpovídá hornímu bitu m TDATA2, kde m = 31–n, an je první 0 uvozovky TDATA2 (počínaje spodním bitem). |
0 |
6 |
M |
MRW |
Povolit klopný obvod v režimu M:
0: Deaktivace spouštění v režimu M; 1: Aktivujte spoušť v režimu M. |
0 |
[5:4] | Rezervováno | MRO | Rezervováno | 0 |
3 |
U |
MRW |
Povolit spouštění v režimu U:
0: Deaktivace spouštění v režimu U; 1: Aktivujte spoušť v režimu U. |
0 |
2 |
VYKONAT |
MRW |
Spouštění čtení adresy instrukce povoleno: 0: Zakázat;
1: Povolit. |
0 |
1 |
OBCHOD |
MRW |
Aktivace spouštění adresy zápisu dat: 0: Zakázat;
1: Povolit. |
0 |
0 |
ZATÍŽENÍ |
MRW |
Aktivace spouštění adresy pro čtení dat: 0: Zakázat;
1: Povolit. |
0 |
Ladění datového registru spouštěče 2 (tdata2)
Platí pouze pro mikroprocesory, které podporují hardwarové body přerušení a používá se k uložení odpovídající hodnoty spouštěče.
Tabulka 8-14 Definice registru tdata2
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | TDATA2 | MRW | Slouží k uložení odpovídajících hodnot. | X |
Řízení ladění a stavový registr (dcsr)
Tento registr se používá pro řízení a záznam stavu běhu režimu ladění. Podrobnosti naleznete v části 7.1.
Ukazatel programu režimu ladění (DPC)
Tento registr slouží k uložení adresy další instrukce, která se má provést po přechodu mikroprocesoru do režimu ladění, jeho hodnota je různá podle důvodů vstupu do režimu ladění a odlišná jsou i pravidla aktualizace. Podrobný popis naleznete v části 7.1.
Režim ladění stagregistrační registr (dscratch0-1)
Tato skupina registrů se používá pro dočasné ukládání dat v režimu ladění.
Tabulka 8-15 definice registru dscratch0-1
Bit | Jméno | Přístup | Popis | Resetovat hodnotu |
[31:0] | dscratch | DRW | Data režimu ladění staghodnotu | 0 |
Uživatelsky definovaný registr CSR
Registr povolení globálního přerušení uživatelského režimu (gintenr)
- Tento registr se používá k ovládání povolení a masky globálního přerušení. Povolení a masku globálního přerušení ve strojovém režimu lze řídit bity MIE a MPIE ve stavu, ale tento registr nelze provozovat v uživatelském režimu.
- Zatímco globální přerušení umožňuje registr gintenr, je mapování MIE a MPIE ve stavu.
- V uživatelském režimu lze intent použít k nastavení a vymazání MIE a MPIE, jak je popsáno v části 3.2 pro podrobnosti.
Poznámka
- Globální přerušení nezahrnují nezamaskovaná přerušení NMI a výjimky.
Řídicí registr přerušení systému (intsyscr)
Tento registr se používá hlavně ke konfiguraci hloubky vnoření přerušení, lisování hardwarového zásobníku a dalších souvisejících funkcí, jak je popsáno v části 3.2 pro podrobnosti.
Registr konfigurace mikroprocesoru (corecfgr)
Tento registr se používá ke kontrole, zda je povoleno přerušení NMI po přetečení přerušení a zda je požadavek na přerušení vymazán, když je provedena instrukce plotu. Konkrétní definici naleznete v části 3.2.
Přerušit vnořený řídicí registr (inestcr)
Tento registr se používá k indikaci stavu vnoření přerušení a toho, zda přeteče nebo ne, ak řízení maximální úrovně vnoření. Konkrétní definici naleznete v části 3.2.
Dokumenty / zdroje
![]() |
Mikroprocesor WH V3 [pdfUživatelská příručka V3 mikroprocesor, V3, mikroprocesor |