WH V3 mikroprocessor

Specifikationer
- Mikroprocessor model: QingKeV3
- Version: V1.2
- ISA funktioner:
- Rørledning FPU
- Branch forudsigelse
- Afbryd support
- HPE Physical Memory Protection (PMP)
- Lavt strømforbrug tilstand
- Udvidet instruktionssæt fejlretning
Produktbrugsvejledning
Overview af QingKe V3 mikroprocessor
QingKe V3-seriens mikroprocessorer inkluderer modellerne V3A, V3B og V3C. Hver model har specifikke funktioner og forskelle baseret på dens anvendelse.
Instruktionssæt
RV32I instruktionssættet indeholder 32 registersæt fra x0 til x31. V3-serien understøtter ikke floating-point extension (F). Hvert register er 32 bit stort.
Registrer Sæt
RV32I registersættet består af følgende registre.
- x0: Hardkodet 0
- x1: Retur adresse
- x2: Stakmarkør
- x3: Global pointer
- x4: Tråd pointer
- x5-x7: Midlertidige registre
- x8: Gem register/frame pointer
- x9: Gem register-/funktionsparametre/returværdier
- x10-x11: parametre Funktion
- x12-x17: Gem registre
- x18-x27: Midlertidige registre
- x28-x31: Den, der ringer/opkalder, registrerer
Privilegium tilstand
Standard RISC-V-arkitekturen inkluderer tre privilegerede tilstande: Maskintilstand, Supervisortilstand og Brugertilstand. QingKe V3-seriens mikroprocessorer understøtter maskintilstand og supervisortilstand.
Ofte stillede spørgsmål
Q: Hvad er de forskellige modeller i QingKe V3-seriens mikroprocessorer?
A: QingKe V3-serien inkluderer modellerne V3A, V3B og V3C, hver med specifikke funktioner og forskelle beskrevet i brugervejledningen.
Q: Hvor mange registersæt er tilgængelige i RV32I-instruktionssættet?
A: RV32I instruktionssættet giver 32 registersæt fra x0 til x31.
Q: Hvilke privilegerede tilstande understøttes af QingKe V3-mikroprocessoren?
A: QingKe V3-seriens mikroprocessorer understøtter maskintilstand og supervisortilstand som en del af RISC-V-arkitekturen.
Overview
QingKe V3-seriens mikroprocessorer er selvudviklede 32-bit MCU-mikroprocessorer til generelle formål baseret på standard RISC-V instruktionssætarkitektur. Denne serie inkluderer V3A, V3B og V3C, hvoraf V3A understøtter RV32IMAC standard instruktionssæt udvidelse og V3B/C understøtter RV32IMCB standard instruktions sæt udvidelse og tilpasset instruktions sæt udvidelse XW. Begge understøtter enkelt-cyklus multiplikation og hardware division, foruden hardware Press stack (HPE), table-free interrupt (VTF), strømlinede 1- og 2-wire debugging interfaces, "WFE" instruktioner og andre specielle funktioner. Derudover understøtter den også Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), strømlinet 1-/2-wire debugging interface og understøttelse af "WFE" instruktion.
Funktioner
| Funktioner | Beskrivelse |
| ISA | RV32IM[A]C[B] |
| Rørledning | 3 |
| FPU | Ikke understøttet |
| Branch forudsigelse | Statisk gren forudsigelse |
| Afbryde | Understøtter i alt 256 interrupts inklusive undtagelser, og understøtter VTF |
| HPE | Understøtter 2 niveauer af HPE |
| Fysisk hukommelsesbeskyttelse (PMP) | Understøttet |
| Lavt strømforbrug tilstand | Understøtter søvn- og dyb søvntilstande og understøtter WFI- og WFE-søvnmetoder |
| Udvidet instruktionssæt | Understøttet |
| Debug | 1/2-leder SDI, standard RISC-V debug |
Overview
QingKe V3-seriens mikroprocessorer inkluderer V3A, V3B og V3C, der er nogle forskelle mellem serierne i henhold til applikationen, de specifikke forskelle er beskrevet i tabel 1-1.
Tabel 1-1 Overview af QingKe V3 mikroprocessor
| Feature Model | ISA | HPE antal niveauer | Afbrydelser indlejring antal niveauer | VTF antal kanaler | Rørledning | Vektor tabeltilstand | Udvidet instruktion (XW) | Antal hukommelsesbeskyttelsesområder |
| V3A | RV32IMAC | 2 | 2 | 4 | 3 | Instruktion | × | × |
| V3B | RV32IMCB | 2 | 2 | 4 | 3 | Adresse/instruktion | √ | × |
| V3C | RV32IMCB | 2 | 2 | 4 | 3 | Adresse/instruktion | √ | 4 |
Note: OS opgaveskift bruger generelt stack push, som ikke er begrænset til antallet af niveauer
Instruktionssæt
- QingKe V3-seriens mikroprocessorer følger standard RISC-V Instruction Set Architecture (ISA). Detaljeret dokumentation af standarden kan findes i "The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 2.2" på RISC-V International webwebsted. RISC-V instruktionssættet har en enkel arkitektur og understøtter et modulært design, der giver mulighed for fleksible kombinationer baseret på forskellige behov, og V3-serien understøtter følgende instruktionssætudvidelser.
- RV32: 32-bit arkitektur, registerbit til generelle formål på 32 bit
- I: Understøtter formningsoperation med 32 formningsregistre
- M: Støtte formgivning af multiplikations- og divisionsinstruktioner
- A: Understøtte atomkommandoer
- C: Understøttelse af 16-bit komprimeringsinstruktion
- B: Understøttelse af instruktioner til bitmanipulation
- XW: 16-bit komprimeringsinstruktioner til selvforlængende byte og halvt ord operationer
Note:
- Undersættet af instruktioner, der understøttes af forskellige modeller, kan være forskelligt. Se venligst Tabel 1-1 for detaljer;
- For yderligere at forbedre kodetætheden skal du udvide XW-delsættet, tilføje følgende kompressionsinstruktioner c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shop , hvis brug skal være baseret på MRS-kompileren eller den værktøjskæde, den leverer;
- V3B understøtter udtrækning af en ord-instruktion (32-bit) fra et dobbeltord-instruktion (64-bit) og udtrækning af en ord-instruktion (32-bit) fra et multiplikationsresultat (64-bit). Den specifikke brugsmetode kan referere til biblioteksfunktionen og samarbejde med MRS-kompileren eller den værktøjskæde, den leverer;
- V3B/C understøtter hukommelseskopieringsinstruktion. For specifik brug henvises til biblioteksfunktionen og samarbejde med MRS-kompileren eller dens værktøjskæde.
Registrer Sæt
RV32I har 32 registersæt fra x0-x31. V3-serien understøtter ikke "F"-udvidelsen, dvs. der er ikke et flydende kommaregister. I RV32 er hvert register 32 bit. Tabel 1-2 nedenfor viser registrene for RV32I og deres beskrivelser.
Tabel 1-2 RISC-V registre
| Register | ABI navn | Beskrivelse | Storemand |
| x0 | nul | Hardkodet 0 | – |
| x1 | ra | Retur adresse | Ringer op |
| x2 | sp | Stakmarkør | Callee |
| x3 | GP | Global pointer | – |
| x4 | tp | Tråd pointer | – |
| x5-7 | t0-2 | Midlertidig register | Ringer op |
| x8 | s0/fp | Gem register/frame pointer | Callee |
| x9 | s1 | Gem register | Callee |
| x10-11 | a0-1 | Funktionsparametre/returværdier | Ringer op |
| x12-17 | a2-7 | parametre Funktion | Ringer op |
| x18-27 | a2-11 | Gem register | Callee |
| X28-31 | t3-6 | Midlertidig register | Ringer op |
Caller-attributten i ovenstående tabel betyder, at den kaldte procedure ikke gemmer registerværdien, og Callee-attributten betyder, at den kaldte procedure gemmer registeret.
Privilegium tilstand
- Standard RISC-V-arkitekturen inkluderer tre privilegerede tilstande: Maskintilstand, Supervisortilstand og Brugertilstand, som vist i tabel 1-3 nedenfor.
- Maskintilstanden er obligatorisk, og de andre tilstande er valgfri. For detaljer kan du henvise til RISC-V Instruction Set Manual Volume II: Privileged Architecture”, som kan downloades gratis fra RISC-V International webwebsted.
Tabel 1-3 RISC-V arkitektur privilegietilstand
| Kode | Navn | Forkortelser |
| 0b00 | Brugertilstand | U |
| 0b01 | Supervisor model | S |
| 0b10 | Reserveret | Reserveret |
| 0b11 | Maskintilstand | M |
- QingKe V3-seriens mikroprocessorer understøtter to af disse privilegerede tilstande.
Maskintilstand
- Maskintilstand har den højeste autoritet, programmet i denne tilstand kan få adgang til alle kontrol- og statusregistre (CSR), men kan også få adgang til alle fysiske adresseområder.
- Opstartsstandarden er i maskintilstand, når udførelsen af mret (maskintilstandsreturinstruktion) vender tilbage i henhold til CSR-registerstatus (Maskintilstandsstatusregister) i MPP-bitten, hvis MPP = 0b00, forlad derefter maskintilstanden ind i brugertilstand, MPP = 0b11, og fortsæt derefter med at beholde maskintilstand.
Brugertilstand
- Brugertilstand har det laveste privilegium, og kun begrænsede CSR-registre kan tilgås i denne tilstand. Når en undtagelse eller afbrydelse opstår, går mikroprocessoren fra brugertilstand til maskintilstand for at håndtere undtagelser og afbrydelser.
CSR register
En række CSR-registre er defineret i RISC-V-arkitekturen for at styre og registrere mikroprocessorens driftstilstand. Disse CSR'er kan udvides med 4096 registre ved hjælp af et internt dedikeret 12-bit adressekodningsrum. Og brug de høje to CSR[11:10] til at definere læse/skrivetilladelsen for dette register, 0b00, 0b01, 0b10 for læse/skrive tilladt og 0b11 for skrivebeskyttet. Brug de to bit CSR[9:8] til at definere det laveste privilegieniveau, der kan få adgang til dette register, og værdien svarer til privilegietilstanden defineret i Tabel 1-3. CSR-registrene implementeret i QingKe V3-mikroprocessoren er beskrevet i kapitel 8.
Undtagelse
Undtagelsesmekanisme, som er en mekanisme til at opfange og håndtere "usædvanlige operationsbegivenheder". QingKe V3-seriens mikroprocessorer er udstyret med et undtagelsesresponssystem, der kan håndtere op til 256 undtagelser, inklusive afbrydelser. Når en undtagelse eller afbrydelse opstår, kan mikroprocessoren hurtigt reagere og håndtere undtagelses- og afbrydelsesbegivenhederne.
Undtagelsestyper
Mikroprocessorens hardwareadfærd er den samme, uanset om der forekommer en undtagelse eller en afbrydelse. Mikroprocessoren suspenderer det aktuelle program, flytter til undtagelses- eller afbrydelsesbehandleren og vender tilbage til det tidligere suspenderede program, når behandlingen er fuldført. Stort set er interrupts også en del af undtagelserne. Om præcis den aktuelle forekomst er en afbrydelse eller en undtagelse kan være viewed gennem Maskintilstand undtagelsesårsagen registrere årsag. mcause[31] er interrupt-feltet, som bruges til at angive, om årsagen til undtagelsen er en interrupt eller en undtagelse. mcause[31]=1 betyder afbrydelse, mcause[31]=0 betyder undtagelse. mcause[30:0] er undtagelseskoden, som bruges til at angive den specifikke årsag til undtagelsen eller afbrydelsesnummeret, som vist i følgende tabel.
Tabel 2-1 Undtagelseskoder for V3-mikroprocessor
| Afbryde | Undtagelse koder | Synkron / Asynkron | Grund til undtagelse |
| 1 | 0-1 | – | Reserveret |
| 1 | 2 | Præcis asynkron | NMI afbryder |
| 1 | 3-11 | – | Reserveret |
| 1 | 12 | Præcis asynkron | SysTick afbryder |
| 1 | 13 | – | Reserveret |
| 1 | 14 | Synkron | Software afbryder |
| 1 | 15 | – | Reserveret |
| 1 | 16-255 | Præcis asynkron | Ekstern afbrydelse 16-255 |
| 0 | 0 | Synkron | Instruktionsadresse fejljustering |
| 0 | 1 | Synkron | Fejl ved adgang til hentekommando |
| 0 | 2 | Synkron | Ulovlige instruktioner |
| 0 | 3 | Synkron | stoppunkter |
| 0 | 4 | Synkron | Fejljustering af indlæsningsinstruktionsadgangsadresse |
| 0 | 5 | Ikke-præcision asynkron | Fejl ved indlæsning af kommandoadgang |
| 0 | 6 | Synkron | Store/AMO-instruktionsadgangsadresse fejljustering |
| 0 | 7 | Ikke-præcision asynkron | Store/AMO kommando adgangsfejl |
| 0 | 8 | Synkron | Miljøopkald i brugertilstand |
| 0 | 11 | Synkron | Miljøkald i maskintilstand |
- Synchronous” i tabellen betyder, at en instruktion kan placeres præcis, hvor den udføres, såsom en pause- eller opkaldsinstruktion, og hver udførelse af den instruktion vil udløse en undtagelse. "Asynkron" betyder, at det ikke er muligt at udpege en instruktion, og instruktionens pc-værdi kan være forskellig, hver gang en undtagelse opstår. "Præcis asynkron" betyder, at en undtagelse kan placeres nøjagtigt ved grænsen af en instruktion, dvs. tilstanden efter udførelsen af en instruktion, såsom en ekstern afbrydelse. "Ikke-præcision asynkron" betyder, at grænsen for en instruktion ikke kan lokaliseres præcist, og måske tilstanden efter en instruktion er blevet afbrudt halvvejs i udførelsen, såsom en hukommelsesadgangsfejl.
- Adgang til hukommelse tager tid, og mikroprocessoren venter normalt ikke på slutningen af adgangen, når den tilgår hukommelsen, men fortsætter med at udføre instruktionen, når adgangsfejlundtagelsen opstår igen, har mikroprocessoren allerede udført de efterfølgende instruktioner og kan ikke være præcist placeret.
Indtastning af undtagelse
Når programmet er i gang med normal drift, hvis det af en eller anden grund udløser en undtagelse eller afbrydelse. Mikroprocessorens hardwareadfærd på dette tidspunkt kan opsummeres som følger.
- Suspendér det aktuelle programflow og gå videre til udførelse af undtagelses- eller afbrydelseshåndteringsfunktioner. Indgangsbaseadressen og adresseringstilstanden for undtagelses- eller afbrydelsesfunktionen er defineret af undtagelsesindgangsbasisadresseregistret mtvec. mtvec[31:2] definerer basisadressen for undtagelses- eller interruptfunktionen. mtvec[1:0] definerer adresseringstilstanden for behandlerfunktionen. når mtvec[1:0]=0, bruger alle undtagelser og afbrydelser en samlet indgang, dvs. når en undtagelse eller afbrydelse opstår, vender den sig til mtvec[31:2] definerer basisadressen, der skal udføres. Når mtvec[1:0]=1, bruger undtagelser og afbrydelser vektortabeltilstand, dvs. hver undtagelse og afbrydelse er nummereret, og adressen er forskudt i henhold til afbrydelsesnummer*4, og når en undtagelse eller afbrydelse opstår, flyttes den til basisadressen defineret af mtvec[31:2] + afbrydelsesnummer*4 Udførelse. Interrupt-vektortabellen indeholder en instruktion om at hoppe til interrupt-håndteringsfunktionen, eller det kan være andre instruktioner.
- Opdater CSR-register
- Når der indtastes en undtagelse eller afbrydelse, opdaterer mikroprocessoren automatisk de relevante CSR-registre, inklusive årsagsregisteret for maskintilstand, undtagelsesregistret for maskintilstand, mepc, undtagelsesværdiregisteret for maskintilstand, og statusregisteret for maskintilstandsstatus.
Opdater mcause
Som nævnt før, efter indtastning af en undtagelse eller afbrydelse, afspejler dens værdi den aktuelle undtagelsestype eller afbrydelsesnummer, og softwaren kan læse denne registerværdi for at kontrollere årsagen til undtagelsen eller bestemme kilden til afbrydelsen, som beskrevet i tabel 2 -1.
Opdater mepc
- Standarddefinitionen af returadressen for mikroprocessoren efter at have forladt en undtagelse eller afbrydelse er gemt i mepc.
- Så når en undtagelse eller afbrydelse opstår, opdaterer hardwaren automatisk mepc-værdien til den aktuelle instruktions-pc-værdi, når undtagelsen stødes på, eller den næste præ-udførte instruktions pc-værdi før afbrydelsen.
- Efter at undtagelsen eller afbrydelsen er behandlet, bruger mikroprocessoren sin gemte værdi som returadresse for at vende tilbage til stedet for afbrydelsen for at fortsætte udførelsen.
- Det er dog værd at bemærke.
- MEPC er et læsbart og skrivbart register, og softwaren kan også ændre værdien for at ændre placeringen af pc-markøren, der kører efter returneringen.
- Når en afbrydelse opstår, dvs. når undtagelsesårsagen registrerer mcause[31]=1, opdateres værdien af kort til pc-værdien for den næste ikke-udførte instruktion på tidspunktet for afbrydelsen.
- Når der opstår en undtagelse, opdateres værdien af kort til instruktions-pc-værdien for den aktuelle undtagelse, når undtagelsen forårsager register mcause[31]=0. Så på dette tidspunkt, hvor undtagelsen vender tilbage, hvis vi vender tilbage direkte ved hjælp af værdien af mepc, fortsætter vi med at udføre instruktionen, der genererede undtagelsen før, og på dette tidspunkt fortsætter vi med at indtaste undtagelsen. Normalt, efter at vi har håndteret undtagelsen, kan vi ændre værdien af mepc til værdien af den næste ikke-udførte instruktion og derefter vende tilbage. F.eksample, hvis vi forårsager en undtagelse på grund af call/break, efter at have håndteret undtagelsen, da recall/break (c.ebreak er 2 bytes) er en 4-byte instruktion, behøver vi kun softwaren til at ændre værdien af mepc til mepc +4 (c.ebreak er mepc+2) og vend derefter tilbage.
Opdater mtval
Når der indtastes undtagelser og interrupts, vil hardwaren automatisk opdatere værdien af mtval, som er den værdi, der forårsagede undtagelsen. Værdien er typisk.
- Hvis en undtagelse er forårsaget af en hukommelsesadgang, vil hardwaren gemme adressen på hukommelsesadgangen på tidspunktet for undtagelsen i mtval.
- Hvis undtagelsen er forårsaget af en ulovlig instruktion, vil hardwaren gemme instruktionskoden for instruktionen i mtval.
- Hvis undtagelsen er forårsaget af et hardware-brudpunkt, vil hardwaren gemme pc-værdien ved brudpunktet i mtval.
- For andre undtagelser sætter hardwaren værdien af mtval til 0, såsom break, undtagelsen forårsaget af opkaldsinstruktion.
- Når du indtaster afbrydelsen, sætter hardwaren værdien af mtval til 0.
Opdater mstatus
Ved indtastning af undtagelser og afbrydelser opdaterer hardwaren visse bits i mstatus.
- MPIE opdateres til MIE-værdien, før undtagelsen eller afbrydelsen indtastes, og MPIE bruges til at gendanne MIE, efter at undtagelsen og afbrydelsen er overstået.
- MPP opdateres til den privilegerede tilstand, før der indtastes undtagelser og afbrydelser, og efter at undtagelserne og afbrydelserne er overstået, bruges MPP til at gendanne den tidligere privilegerede tilstand.
- QingKe V3 mikroprocessor understøtter interrupt nesting i maskintilstand, og MIE vil ikke blive ryddet efter indtastning af undtagelser og interrupts.
Opdater mikroprocessorprivilegietilstand
- Når der opstår undtagelser og afbrydelser, opdateres mikroprocessorens privilegerede tilstand til maskintilstand.
Undtagelseshåndteringsfunktioner
- Ved indtastning af en undtagelse eller afbrydelse udfører mikroprocessoren programmet fra adressen og tilstanden defineret af mtvec-registret. Når du bruger den forenede indgang, tager mikroprocessoren en hop-instruktion fra basisadressen defineret af mtvec[31:2] baseret på værdien af mtvec[1], eller får undtagelses- og afbrydelseshåndteringsfunktionens indtastningsadresse og går til at udføre den i stedet for . På dette tidspunkt kan undtagelses- og afbrydelseshåndteringsfunktionen bestemme, om årsagen er en undtagelse eller en afbrydelse baseret på værdien af mcause[31], og typen og årsagen til undtagelsen eller den tilsvarende afbrydelse kan bedømmes ved undtagelseskoden og håndteres derefter.
- Når du bruger basisadressen + afbrydelsesnummeret *4 til offset, springer hardwaren automatisk til vektortabellen for at få indtastningsadressen for undtagelsen eller afbrydelsesfunktionen baseret på afbrydelsesnummeret og springer for at udføre den.
Undtagelse Exit
- Efter at undtagelses- eller afbrydelseshåndteringen er afsluttet, er det nødvendigt at afslutte serviceprogrammet. Efter indtastning af undtagelser og afbrydelser går mikroprocessoren ind i maskintilstand fra brugertilstand, og behandlingen af undtagelser og afbrydelser afsluttes også i maskintilstand. Når det er nødvendigt at forlade undtagelser og afbrydelser, er det nødvendigt at bruge mret-instruktionen for at vende tilbage. På dette tidspunkt vil mikroprocessorhardwaren automatisk udføre følgende handlinger.
- PC-markøren gendannes til værdien af CSR-register mepc, dvs. eksekveringen starter ved instruktionsadressen gemt af mepc. Det er nødvendigt at være opmærksom på offset-driften af mepc, efter at undtagelseshåndteringen er afsluttet.
- Opdater CSR-registerstatus, MIE gendannes til MPIE, og MPP bruges til at gendanne den tidligere mikroprocessors privilegerede tilstand.
- Hele undtagelsesresponsprocessen kan beskrives i den følgende figur 2-1.

PFIC og Interrupt Control
- QingKe V3 mikroprocessor er designet med en Programmerbar Fast Interrupt Controller (PFIC), der kan håndtere op til 256 interrupts inklusive undtagelser.
- De første 16 af dem er fastgjort som interne afbrydelser i mikroprocessoren, og resten er eksterne afbrydelser, dvs. det maksimale antal eksterne afbrydelser kan udvides til 240. Dets hovedtræk er som følger.
- 240 eksterne interrupts, hver afbrydelsesanmodning har uafhængige trigger- og maskekontrolbits med dedikerede statusbits
- Programmerbar afbrydelsesprioritet understøtter 2 niveauer af indlejring
- Speciel hurtig afbrydelse ind/ud af mekanismen, hardware automatisk stabling og gendannelse, maksimal HPE-dybde på 2 niveauer
- Vector Table Free (VTF) interrupt response-mekanisme, 2-kanals programmerbar direkte adgang til interrupt vektor-adresser
- Note: Den maksimale indlejringsdybde og HPE-dybde, der understøttes af interrupt-controllere, varierer for forskellige mikroprocessormodeller, som kan findes i Tabel 1-1.
- Vektortabellen over afbrydelser og undtagelser er vist i tabel 3-1 nedenfor.
Tabel 3-1 Undtagelses- og afbrydelsesvektortabel
| Antal | Prioritet | Type | Navn | Beskrivelse |
| 0 | – | – | – | – |
| 1 | – | – | – | – |
| 2 | -5 | Fast | NMI | Ikke-maskerbar afbrydelse |
| 3 | -4 | Fast | EXC | Undtagelsesafbrydelse |
| 4 | – | – | – | – |
| 5 | -3 | Fast | ECALL-M | Maskintilstand tilbagekaldsafbrydelse |
| 6-7 | – | – | – | – |
| 8 | -2 | Fast | ECALL-U | Brugertilstand tilbagekaldsafbrydelse |
| 9 | -1 | Fast | BREAK PUNKT | Breakpoint tilbagekaldsafbrydelse |
| 10-11 | – | – | – | – |
| 12 | 0 | Programmerbar | SysTick | System timer afbrydelse |
| 13 | – | – | – | – |
| 14 | 1 | Programmerbar | SWI | Softwareafbrydelse |
| 15 | – | – | – | – |
| 16-255 | 2-241 | Programmerbar | Ekstern afbrydelse | Ekstern afbrydelse 16-255 |
Note: ECALL-M, ECALL-U og BREAKPOINT er alle forskellige typer af undtagelses-EXC, som er uafhængige i V3B/C for brugervenlighed, og ovenstående 3 indgangsadresser deles med EXC i V3A.
PFIC Register Set
Tabel 3-2 PFIC-registre
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_ISRx | 0xE000E000
-0xE000E01C |
RO | Afbrydelsesaktiver statusregister x | 0x00000000 |
| PFIC_IPRx | 0xE000E020
-0xE000E03C |
RO | Afbryd afventende statusregister x | 0x00000000 |
| PFIC_ITHRESDR | 0xE000E040 | RW | Afbryd prioritetstærskelkonfigurationsregister | 0x00000000 |
| PFIC_VTFBADDRR | 0xE000E044 | RW | VTF base adresse register
Bemærk: Gælder kun for V3A |
0x00000000 |
| PFIC_CFGR | 0xE000E048 | RW | Afbryd konfigurationsregister
Bemærk: Gælder kun for V3A |
0x00000000 |
| PFIC_GISR | 0xE000E04C | RO | Afbryd det globale statusregister | 0x00000002 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
VTF interrupt ID konfigurationsregister
Bemærk: Gælder kun for V3B/C. |
0x00000000 |
| PFIC_VTFADDRRx | 0xE000E060
-0xE000E06C |
RW | VTF x offset adresseregister | 0xXXXXXXXXX |
| PFIC_IENRx | 0xE000E100
-0xE000E11C |
WO | Interrupt enable indstillingsregister x | 0x00000000 |
| PFIC_IRERx | 0xE000E180
-0xE000E19C |
WO | Afbryde aktiver slet register x | 0x00000000 |
| PFIC_IPSRx | 0xE000E200
-0xE000E21C |
WO | Afbryd afventende indstillingsregister x | 0x00000000 |
| PFIC_IPRRx | 0xE000E280
-0xE000E29C |
WO | Afbrydelse afventer sletning af register x | 0x00000000 |
| PFIC_IACTRx | 0xE000E300
-0xE000E31C |
RO | Afbryd aktiveringsstatusregister x | 0x00000000 |
| PFIC_IPRIORx | 0xE000E400
-0xE000E43C |
RW | Afbryd prioritetskonfigurationsregister | 0x00000000 |
| PFIC_SCTLR | 0xE000ED10 | RW | Systemkontrolregister | 0x00000000 |
Note:
- NMI, EXC, ECALL-M, ECALL-U og BREAKPOINT er altid aktiveret som standard.
- ECALL-M, ECALL-U og BREAKPOINT er et tilfælde af EXC.
- NMI, EXC, ECALL-M, ECALL-U og BREAKPOINT understøtter afbrydelse afventende rydning og indstillingsoperation, men ikke interrupt aktiverer rydning og indstillingsoperation.
Hvert register er beskrevet som følger:
Afbryd aktiveringsstatus og afbryd ventende statusregistre (PFIC_ISR<0-7>/PFIC_IPR<0-7>)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_ISR0 | 0xE000E000 | RO | Interrupt 0-31 aktiverer statusregister, i alt 32 statusbits [n], der angiver #n interrupt aktiverer status
Bemærk: NMI og EXC er aktiveret som standard |
For V3A: 0x0000000C
For V3B/C: 0x0000032C |
| PFIC_ISR1 | 0xE000E004 | RO | Interrupt 32-63 aktiver statusregister, i alt 32 statusbits | 0x00000000 |
| … | … | … | … | … |
| PFIC_ISR7 | 0xE000E01C | RO | Interrupt 224-255 aktiver statusregister, i alt 32 statusbit | 0x00000000 |
| PFIC_IPR0 | 0xE000E020 | RO | Interrupt 0-31 afventende status | 0x00000000 |
| register, i alt 32 statusbits [n], hvilket angiver den afventende status for interrupt #n | ||||
| PFIC_IPR1 | 0xE000E024 | RO | Afbryd 32-63 afventende statusregistre, 32 statusbits i alt | 0x00000000 |
| … | … | … | … | … |
| PFIC_IPR7 | 0xE000E03C | RO | Interrupt 244-255 afventende statusregister, 32 statusbits i alt | 0x00000000 |
To sæt registre bruges til at aktivere og deaktivere de tilsvarende interrupts.
Afbrydelsesaktiveringsindstilling og slet registre (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_IENR0 | 0xE000E100 | WO | Interrupt 0-31 aktiverer indstillingsregister, i alt 32 indstillingsbit [n], for interrupt #n aktiveringsindstilling
Note: NMI og EXC er aktiveret som standard |
0x00000000 |
| PFIC_IENR1 | 0xE000E104 | WO | Interrupt 32-63 for at aktivere indstillingsregisteret, i alt 32 indstillingsbit | 0x00000000 |
| … | … | … | … | … |
| PFIC_IENR7 | 0xE000E11C | WO | Interrupt 224-255 aktiveringsindstilling
register, i alt 32 indstillingsbit |
0x00000000 |
| – | – | – | – | – |
| PFIC_IRER0 | 0xE000E180 | WO | Interrupts 0-31 aktiverer slet register, i alt 32 clear bits [n], for interrupt #n aktiverer clear Bemærk: NMI og EXC kan ikke være det opereret |
0x00000000 |
| PFIC_IRER1 | 0xE000E184 | WO | Interrupt 32-63 muliggør et clear register, i alt 32 clear bits | 0x00000000 |
| … | … | … | … | … |
| PFIC_IRER7 | 0xE000E19C | WO | Interrupt 244-255 muliggør et clear register, i alt 32 clear bits | 0x00000000 |
To sæt registre bruges til at aktivere og deaktivere de tilsvarende interrupts.
Afbryd afventende indstilling og ryd registre (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
|
PFIC_IPSR0 |
0xE000E200 |
WO |
Afbrydelse 0-31 afventende indstillingsregister, 32
indstilling af bits [n], for interrupt #n afventende indstilling |
0x00000000 |
| PFIC_IPSR1 | 0xE000E204 | WO | Afbryd 32-63 afventende opsætningsregister,
i alt 32 setup bits |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPSR7 | 0xE000E21C | WO | Interrupt 224-255 afventende indstilling
register, 32 indstillingsbits i alt |
0x00000000 |
| – | – | – | – | – |
|
PFIC_IPRR0 |
0xE000E280 |
WO |
Interrupt 0-31 afventende clear register, i alt 32 clear bits [n], for interrupt #n
afventer klar |
0x00000000 |
| PFIC_IPRR1 | 0xE000E284 | WO | Interrupt 32-63 afventer rydning af register,
i alt 32 klare bits |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPRR7 | 0xE000E29C | WO | Interrupt 244-255 afventer rydning af register,
i alt 32 klare bits |
0x00000000 |
Når mikroprocessoren aktiverer en afbrydelse, kan den indstilles direkte gennem afbrydelsesregistret for at udløse afbrydelsen. Brug registret afventende afbrydelse af afbrydelse til at rydde den afventende udløser.
Afbrydelsesaktiveringsstatusregister (PFIC_IACTR<0-7>)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_IACTR0 | 0xE000E300 | RO | Interrupt 0-31 aktiverer statusregisteret med 32 statusbit [n], hvilket indikerer, at interrupt #n udføres | 0x00000000 |
| PFIC_IACTR1 | 0xE000E304 | RO | Afbryd 32-63 aktiveringsstatusregistre, 32 statusbits ind
total |
0x00000000 |
| … | … | … | … | … |
| PFIC_IACTR7 | 0xE000E31C | RO | Afbryd 224-255 aktiveringsstatusregistre, i alt 32 statusbits | 0x00000000 |
Hver afbrydelse har en aktiv statusbit, der sættes op, når afbrydelsen indtastes og slettes af hardware, når markedet vender tilbage.
Interrupt prioritets- og prioritetstærskelregistre (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_IPRIOR0 | 0xE000E400 | RW | Afbryde 0 prioritetskonfiguration. V3A: [7:4]: Prioritetskontrolbits Hvis konfigurationen ikke er indlejret, ingen forkøbsbit. Hvis indlejring er konfigureret, er bit7 den forudindstillede bit. [3:0]: Reserveret, fastsat til 0 V3B: [7:6]: Prioritetskontrolbits Hvis konfigurationen ikke er indlejret, er der ingen forebyggende bit konfigureret indlejret, alle bits er foregrebet, men op til to niveauer af afbrydelser tillades at forekomme [5:0]: Reserveret, fastsat til 0 V3C: [7:5]: Prioritetskontrolbits Hvis konfigurationen ikke er indlejret, ingen forebyggende bits Hvis konfigureret indlejret, er alle bits foregrebet, men op til to niveauer af afbrydelser tillades at forekomme [4:0]: Reserveret, fastsat til 0 Bemærk: Jo mindre prioritetsværdien er, jo højere prioritet. Hvis den samme fortrinsprioritetsafbrydelse hænger på samme tid, vil afbrydelsen med den højere prioritet blive udført først. |
0x00 |
| PFIC_IPRIOR1 | 0xE000E401 | RW | Interrupt 1 prioritetsindstilling, samme funktion som PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR2 | 0xE000E402 | RW | Interrupt 2 prioritetsindstilling, samme funktion som PFIC_IPRIOR0 | |
| … | … | … | … | … |
| PFIC_IPRIOR254 | 0xE000E4FE | RW | Interrupt 254 prioritetsindstilling, samme funktion som PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR255 | 0xE000E4FF | RW | Interrupt 255 prioritetsindstilling, samme funktion som PFIC_IPRIOR0 | 0x00 |
| – | – | – | – | – |
| PFIC_ITHRESDR | 0xE000E040 | RW | Indstilling af afbrydelsesprioritetstærskel
V3A: [31:8]: Reserveret, fastsat til 0 [7:4]: Prioritetstærskel [3:0]: Reserveret, fastsat til 0V3B: [31:8]: Reserveret, fastsat til 0 [7:5]: Prioritetstærskel [4:0]: Reserveret, fastsat til 0V3C: [31:8]: Reserveret, fastsat til 0 [7:5]: Prioritetstærskel [4:0]: Reserveret, fastsat til 0Note: For afbrydelser med prioritetsværdi ≥ tærskel, udføres afbrydelsestjenestefunktionen ikke, når der opstår et hæng, og når dette register er 0, betyder det, at tærskelregistret er ugyldigt. |
0x00 |
Afbrydelseskonfigurationsregister (PFIC_CFGR)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_CFGR | 0xE000E048 | RW | Afbryd konfigurationsregister | 0x00000000 |
Dette register er kun gyldigt for V3A, dets bits er defineret som:
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:16] | NØGLE KODE | WO | Svarende til forskellige målkontrolbits skal de tilsvarende sikkerhedsadgangsidentifikationsdata skrives samtidigt for at blive ændret, og udlæsningsdataene er fastsat til 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF。 | 0 |
| [15:8] | Reserveret | RO | Reserveret | 0 |
| 7 | SYSRESET | WO | Systemnulstilling (samtidig skrivning til KEY3). Auto clear 0.
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. Bemærk: Samme funktion som PFIC_SCTLR register SYSRESET bit. |
0 |
| 6 | PFICRESET | WO | PFIC-modul nulstillet. Auto clear 0.
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. |
0 |
| 5 | UDTRYKKE | WO | Undtagelsesafbrydelse afventer sletning (samtidig skrivning til KEY2)
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. |
0 |
| 4 | EXCSET | WO | Undtagelsesafbrydelse afventende indstilling (samtidig skrivning til KEY2)
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. |
0 |
| 3 | NMIRESET | WO | NMI-afbrydelse afventer klar (samtidig skrivning til KEY2)
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. |
0 |
| 2 | NMISET | WO | NMI-afbrydelse afventende indstilling (Samtidig skrivning til KEY2)
At skrive 1 er gyldigt, at skrive 0 er ugyldigt. |
0 |
| 1 | NESTCTRL | RW | Interrupt-nesting muliggør kontrol.
1: slukket; 0: tændt (synkron skrivning til KEY1) |
0 |
| 0 | HWSTKCTRL | RW | HPE aktivere kontrol
1: slukket; 0: tændt (synkron skrivning til KEY1) |
0 |
Afbryde globalt statusregister (PFIC_GISR)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_GISR | 0xE000E04C | RO | Afbryd det globale statusregister | 0x00000000 |
Dens folk er defineret som
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:14] | Reserveret | RO | Reserveret | 0 |
|
13 |
LOCKSTA |
RO |
Om processoren i øjeblikket er i en låst tilstand:
1: Låst tilstand; 0: Ikke-låst tilstand. Bemærk: Denne bit er kun gyldig for V3B/C. |
0 |
|
12 |
DBGMODE |
RO |
Om processoren i øjeblikket er i debug-tilstand: 1: Debug-tilstand;
0: Ikke-fejlretningstilstand. Bemærk: Denne bit er kun gyldig for V3B/C. |
0 |
|
11 |
GLOBLIE |
RO |
Aktivering af global afbrydelse:
1: Aktiver afbrydelse; 0: Deaktiver afbrydelse. Bemærk: Denne bit er kun gyldig for V3B/C. |
|
| 10 | Reserveret | RO | Reserveret | 0 |
| 9 | GPENDSTA | RO | Om en afbrydelse i øjeblikket er afventende.
1: Ja; 0: Nej. |
0 |
| 8 | GACTSTA | RO | Om en afbrydelse i øjeblikket udføres.
1: Ja; 0: Nej. |
0 |
|
[7:0] |
NESTSTA |
RO |
Aktuel afbrydelsesindlejringsstatus. 0x03: i niveau 2 afbrydelse.
0x01: i niveau 1 afbrydelse. 0x00: ingen afbrydelser forekommer. Andet: Umulig situation. |
0 |
VTF ID-baseadresse- og offset-adresseregistre (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
|
PFIC_VTFBADDRR |
0xE000E044 |
RW |
[31:28]: Høje 4 bit af måladressen for VTF [27:0]: Reserveret
Dette register er kun gyldigt for V3A. |
0x00000000 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
[31:24]: Antal VTF 3 [23:16]: Antal VTF 2 [15:8]: Antal VTF 1 [7:0]: Antal VTF 0
Dette register er kun gyldigt for V3B/C. |
0x00000000 |
| – | – | – | – | – |
|
PFIC_VTFADDRR0 |
0xE000E060 | RW | V3A: [31:24]: VTF 0 afbrydelsesnummer [23:0]: de lave 24 bit af VTF-måladressen, hvoraf de lave 20 bit er konfigureret til at være gyldige, og [23:20] er fastsat til 0 .
V3B/C: [31:1]: VTF 0-adresse, 2-byte justeret [0]:1: Aktiver VTF 0-kanal 0: Deaktiver |
For V3A: 0x00000000 For V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR1 |
0xE000E064 |
RW |
V3A: [31:24]: VTF 1 afbrydelsesnummer [23:0]: De lave 24 bit af VTF-måladressen, hvoraf de lave 20 bit er konfigureret til at være gyldige og [23:20] er fastsat til 0.
V3B/C: [31:1]: VTF 1-adresse, 2-byte justeret [0]:1: Aktiver VTF 1-kanal 0: Deaktiver |
For V3A: 0x00000000 For V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR2 |
0xE000E068 |
RW |
V3A: [31:24]: VTF 2 afbrydelsesnummer [23:0]: de lave 24 bit af VTF-måladressen, hvoraf de lave 20 bit er konfigureret til at være gyldige, og [23:20] er fastsat til 0 .
V3B/C: [31:1]: VTF 2-adresse, 2-byte justeret [0]:1: Aktiver VTF 2-kanal 0: Deaktiver |
For V3A: 0x00000000 For V3B/C: 0xXXXXXXXXX |
| PFIC_VTFADDRR3 | 0xE000E06C | RW | V3A: | Til V3A: |
| [31:24]: VTF 3-afbrydelsesnummer [23:0]: de lave 24 bit af VTF-måladressen, hvoraf de lave 20 bit er konfigureret til at være gyldige, og [23:20] er fastsat til 0.
V3B/C: [31:1]: VTF 3-adresse, 2-byte justeret [0]:1: Aktiver VTF 3-kanal 0: Deaktiver |
0x00000000
For V3B/C: 0xXXXXXXXXX |
Systemkontrolregister (PFIC_SCTLR)
| Navn | Adgangsadresse | Adgang | Beskrivelse | Nulstil værdi |
| PFIC_SCTLR | 0xE000ED10 | RW | Systemkontrolregister | 0x00000000 |
Hver af dem er defineret som følger.
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | SYSRESET | WO | Systemnulstilling, autoslet 0. Skriv 1 er gyldig, og skriv 0 er ugyldig.
Bemærk: Denne bit er kun gyldig for V3B/C |
0 |
| [30:6] | Reserveret | RO | Reserveret | 0 |
| 5 | SETEVENT | WO | Indstil begivenheden til at vække WFE-sagen. | 0 |
|
4 |
SEVONPEND | RW | Når en hændelse opstår eller afbryder en afventende tilstand, kan systemet vækkes efter WFE-instruktionen, eller hvis WFE-instruktionen ikke udføres, vil systemet blive vækket umiddelbart efter næste udførelse af instruktionen.
1: Aktiverede hændelser og alle afbrydelser (inklusive ikke-aktiverede afbrydelser) kan vække systemet. 0: Kun aktiveret hændelser og aktiveret afbrydelser kan vække systemet. |
0 |
| 3 | WFITOWFE | RW | Udfør WFI-kommandoen, som om det var en WFE.
1: Behandl den efterfølgende WFI-instruktion som en WFE-instruktion. 0: Ingen effekt. |
0 |
| 2 | SØVENDYB | RW | Laveffekttilstand for kontrolsystemet. | 0 |
| 1: dyb søvn 0: søvn | ||||
| 1 | SLEEPONEXI T | RW | Systemstatus efter kontrol forlader afbrydelsesserviceprogrammet.
1: Systemet går i lavenergitilstand. 0: Systemet går ind i hovedprogrammet. |
0 |
| 0 | Reserveret | RO | Reserveret | 0 |
Interrupt-relaterede CSR-registre
Derudover har følgende CSR-registre også en væsentlig indflydelse på behandlingen af afbrydelser. Afbryd systemkontrolregister (intsyscr)
Dette register er ikke kun gyldigt for V3A:
| Navn | CSR Adresse | Adgang | Beskrivelse | Nulstil værdi |
| intsyscr | 0x804 | URW | Afbryd systemkontrolregister | 0x0000E002 |
Dens folk er defineret som:
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
|
31 |
LÅSE |
URO |
0: Dette register kan læses og skrives i brugertilstand;
1: Dette register kan kun læses og skrives i maskintilstand. Bemærk: Denne konfigurationsbit er gyldig fra version 1.0 og frem. |
0 |
| [30:6] | Reserveret | URO | Reserveret | 0x380 |
|
5 |
GIHWSTKNEN |
URW1 |
Global afbrydelse og nedlukning af hardwarestak er aktiveret.
Bemærk: Denne bit bruges ofte i realtidsoperativsystemer. Når konteksten skiftes under en afbrydelse, kan indstilling af denne bit slå den globale afbrydelse fra og skubbe hardwarestakken. Når kontekstskiftet er gennemført, og afbrydelsen vender tilbage, vil hardwaren ryd automatisk denne bit. |
0 |
| 4 | Reserveret | URO | Reserveret | 0 |
| [3:2] | PMTCFG | URW | Konfiguration af prioritetspræemptionsbits:
00: Antallet af præemptionsbit er 0; 01: Antallet af præemptionsbit er 1; 10: Antallet af præemptionsbit er 2; 11: Antallet af præemptionsbit er 3; Bemærk: Denne konfigurationsbit er gyldig efter 1.0. |
0 |
| 1 | LYTTE | URW | Interrupt-nesting-funktionen er aktiveret, og den faste værdi er 1: | 1 |
| 0: Deaktiver;
1: Aktiver. Bemærk: 1. Det faktiske indlejringsniveau styres af NEST_LVL i CSR 0xBC1; 2. Kun versioner efter 1.0 kan være skrevet. |
||||
| 0 | HWSTKEN | URW | Hardware stak aktivering:
0: Hardware stak pressefunktionen er deaktiveret; 1: Hardware-stackpressefunktionen er aktiveret. |
0 |
Maskintilstand undtagelse base adresseregister (mtvec)
| Navn | CSR Adresse | Adgang | Beskrivelse | Nulstil værdi |
| mtvec | 0x305 | MRW | Undtagelsesbaseadresseregister | 0x00000000 |
Dens folk er defineret som
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:2] | BASEADDR[31:2] | MRW | Interrupt vektor tabel base adresse, hvor
bit [9:2] er fastsat til 0. |
0 |
| 1 | MODE1 |
MRO |
Afbryd vektortabelgenkendelsestilstand: 0: Identificer ved springinstruktion, med begrænset omfang, og understøt non-jump-instruktion;
1: Identificer ved absolut adresse, understøtter fuld rækkevidde, men skal hoppe. Bemærk: Denne bit er kun gyldig for V3B/C. |
0 |
| 0 | MODE0 | MRW | Valg af afbrydelse eller undtagelsesindtastning af adressetilstand.
0: Brug af den ensartede indrejseadresse. 1: Adresseforskydning baseret på afbrydelsesnummer *4. |
0 |
For MCU'er med V3-seriens mikroprocessorer er MODE0 konfigureret til at være 1 som standard i opstarten file, og indtastningerne for undtagelser eller afbrydelser forskydes i henhold til afbrydelsesnummeret *4. Bemærk, at V3A-mikroprocessoren gemmer en hop-instruktion ved vektortabellen, mens V3B/C-mikroprocessoren enten kan en hop-instruktion eller bruge den absolutte adresse på afbrydelsesfunktionen, som er konfigureret som en absolut adresse i standardopstarten file.
Mikroprocessorkonfigurationsregister (korrektor)
Dette register er ugyldigt for V3A:
| Navn | CSR Adresse | Adgang | Beskrivelse | Nulstil værdi |
| corecfgr | 0xBC0 | MRW | Mikroprocessorkonfigurationsregister | 0x00000001 |
Dens folk er defineret som
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:8] | Reserveret | MRO | Reserveret | 0 |
|
7 |
CSTA_FAULT_IE |
MRW |
Aktivering af afbrydelse af kernestatusfejl:
0: Ved statusfejl genereres der ingen NMI-afbrydelse; 1: Ved statusfejl er NMI afbrydelse genereret. |
0 |
| 6 | Reserveret | MRO | Hold det 0. | 0 |
| 5 | IE_REMAP_DA | MRW | MIE-registerkortlægning muliggør:
0: CSR-adresse 0x800 er et skrivebeskyttet register, og returværdien er værdien af STATUS; 1: Bit 3 og 7 af CSR-adresse 0x800 er afbildet til henholdsvis bit MIE i STATUS-registret og bit MPIE i STATUS-registret. |
0 |
| 4 | Reserveret | MRO | Reserveret | 0 |
| 3 | ROM_LOOP_ACC | MRW | Aktivering af ROM-områdeinstruktionsløkkeacceleration:
0: Slå den cykliske accelerationsfunktion fra i ROM-området; 1: Kontinuerlige instruktioner med en loop body inden for 128 bytes vil blive fuldt accelereret, mens dem med en loop body inden for 256 bytes vil blive delvist accelereret; |
0 |
| 2 | ROM_JUMP_ACC | MRW | ROM-område instruktion jump acceleration aktiveret:
0: Deaktiver ROM-områdeinstruktions-spring acceleration; 1: Aktiver acceleration af instruktionsspring i ROM-området. |
0 |
| [1:0] | FETCH_MODE | MRW | Hentetilstand:
00: Prefetch er slået fra. Instruktions prefetch-funktionen er slået fra for at undgå ugyldige instruktionshentningsoperationer, og der er højst én gyldig instruktion på CPU-pipelinen. Denne model har det laveste strømforbrug, og dens ydeevne falder med omkring 2 ~ 3 gange. 01: Prefetch Mode 1. Når instruktions prefetch-funktionen er slået til, vil CPU'en fortsætte med at få adgang til instruktionshukommelsen, indtil antallet af instruktioner, der skal udføres i den interne instruktionsbuffer, overstiger et vist antal, eller instruktionsbufferen er fuld, og instruktionshentning vil blive suspenderet; (Svigt i CPU-forudsigelse vil føre til redundant hentning, og i nogle tilfælde vil eksekveringsenheden introducere 0 ~ 2 cyklusser af bobler, og ydeevnen af de fleste programmer vil ikke falde åbenlyst); 10: Reserveret; |
0x1 |
Afbryd indlejret kontrolregister (inestcr)
Dette register er kun ugyldigt for V3A:
| Navn | CSR Adresse | Adgang | Beskrivelse | Nulstil værdi |
| investor | 0xBC1 | MRW | Afbryd indlejret kontrolregister | 0x00000000 |
Dens folk er defineret som
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | Reserveret | MRO | Reserveret | 0 |
| 30 | NEST_OV | MRW | Afbrydelse/undtagelse indlejret overløbsflagbit, skriv 1 for at slette:
0: Interrupt løb ikke over; 1: Afbryd overløbsflag. Bemærk: Interrupt overflow vil kun forekomme, når den sekundære interrupt service-funktion udføres for at generere en instruktionsundtagelse eller NMI-afbrydelse. På dette tidspunkt går undtagelsen og NMI-afbrydelsen normalt ind, men CPU-stakken løber over, så du kan ikke forlade denne undtagelse og NMI afbryde. |
0 |
| [29:12] | Reserveret | MRO | Reserveret | 0 |
| [11:8] | NEST_STA | MRO | Indlejret statusflagbit:
0000: Ingen afbrydelse; 0001: Niveau 1 afbrydelse; 0011: niveau 2 afbrydelse (1-niveaus rede); |
0 |
| 0111: Niveau 3 afbrydelse (overløb);
1111: Niveau 4 afbrydelse (overløb). |
||||
| [7:2] | Reserveret | MRO | Reserveret | 0 |
| [1:0] | NEST_LVL | MRW | Indlejringsniveau:
00: Indlejring er forbudt, og indlejringsfunktionen er slået fra; 01: Indlejring på første niveau, som aktiverer redefunktionen; Andet: Ugyldigt. Bemærk: Skriv 10 eller 11 til dette felt, og feltet vil blive sat til 01. Når du skriver 11 til dette felt, skal du læse dette register for at få chippens højeste indlejringsniveau. |
0 |
Brugertilstand globalt afbrydelsesaktiveringsregister (praktikant)
Dette register er kun ugyldigt for V3A:
| Navn | CSR Adresse | Adgang | Beskrivelse | Nulstil værdi |
| gintenr | 0x800 | URW | Globalt afbrydelsesaktiveringsregister | 0x00000000 |
Dette register bruges til at styre aktiveringen og masken af global afbrydelse. Aktiveringen og masken af global afbrydelse i maskintilstand kan styres af MIE- og MPIE-bits i status, men dette register kan ikke betjenes i brugertilstand.
Det globale interrupt-aktiveringsregister gintenr er kortlægningen af MIE og MPIE i mstatus og kan bruges til at indstille og rydde MIE og MPIE ved at betjene gintenr i brugertilstand.
Hver af dem er defineret som:
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:13] | Reserveret | URO | Reserveret | 0 |
| [12:11] | MPP | URO | Gå ind i privilegeret tilstand før afbrydelse. | 0 |
| [10:8] | Reserveret | URO | Reserveret | 0 |
| 7 | MPIE | URW | Når 0xBC0(CSR)bit5 er aktiveret, vil denne bit
kan læses og skrives i brugertilstand. |
0 |
| [6:4] | Reserveret | URO | Reserveret | 0 |
| 3 | MIE | URW | Når 0xBC0(CSR)bit5 er aktiveret, vil denne bit
kan læses og skrives i brugertilstand. |
0 |
| [1:0] | Reserveret | URO | Reserveret | 0 |
Afbryd Nesting
I forbindelse med afbrydelsen, konfigurationsregisteret PFIC_CFGR og afbrydelsesprioritetsregistret PFIC_IPRIOR, kan indlejring af afbrydelser tillades at forekomme. Aktiver indlejring i interrupt-konfigurationsregisteret (Nesting er slået til som standard for V3-seriens mikroprocessorer) og konfigurer prioriteten for den tilsvarende interrupt. Jo mindre prioritetsværdi, jo højere prioritet. Jo mindre værdien af præemptionsbitten er, desto højere er præemptionsprioriteten. Hvis der er afbrydelser, der hænger på samme tid under den samme fortrinsprioritet, reagerer mikroprocessoren på afbrydelsen med den lavere prioritetsværdi (højere prioritet) først.
Hardware Prolog/Epilogue (HPE)
- Når en undtagelse eller afbrydelse opstår, stopper mikroprocessoren det aktuelle programflow og skifter til udførelse af undtagelses- eller afbrydelseshåndteringsfunktionen, stedet for det aktuelle programflow skal gemmes. Efter at undtagelsen eller afbrydelsen vender tilbage, er det nødvendigt at gendanne webstedet og fortsætte udførelsen af det stoppede programflow. For mikroprocessorer i V3-serien henviser "stedet" her til alle opkalds-gemte registre i Tabel 1-2.
- V3-seriens mikroprocessorer understøtter hardware en-cyklus automatisk lagring af 16 af de formede opkalds-gemte registre til et internt stakområde, der ikke er synligt for brugeren. Når en undtagelse eller afbrydelse vender tilbage, gendanner hardware-enkeltcyklussen automatisk dataene fra det interne stakområde til de 16-formede registre. HPE understøtter indlejring op til 2 niveauer dybt.
- Et skematisk billede af mikroprocessorens trykstabel er vist i den følgende figur.

Note:
- Afbrydelsesfunktioner ved hjælp af HPE skal kompileres ved hjælp af MRS eller dens medfølgende værktøjskæde, og afbrydelsesfunktionen skal erklæres med __attribut__((interrupt(“WCH-Interrupt-fast”))).
- Afbrydelsesfunktionen ved brug af stack push erklæres af __attribute__((interrupt())).
Vektorbordfri (VTF)
- Den Programmerbare Fast Interrupt Controller (PFIC) giver 4 VTF-kanaler, dvs. direkte adgang til interrupt-funktionsindgangen uden at gå gennem interrupt-vektortabelopslagsprocessen.
- VTF-kanalen kan aktiveres ved at skrive dens afbrydelsesnummer, afbrydelsestjenestefunktions basisadresse og forskydningsadresse ind i det tilsvarende PFIC-controllerregister, mens en afbrydelsesfunktion normalt konfigureres.
- PFIC-responsprocessen for hurtige og bordfrie afbrydelser er vist i figur 3-2 nedenfor.

Fysisk hukommelsesbeskyttelse PMP
- For at forbedre systemets sikkerhed er modulet til fysisk hukommelsesbeskyttelse (PMP) designet i henhold til RISC-V-arkitekturstandarden for V3-seriens mikroprocessorer af højlandsbyg. Adgangsrettighedsstyring af op til 4 fysiske regioner understøttes. Tilladelser omfatter læse (R), skrive (W) og udføre (X) attributter, og længden af det beskyttede område kan indstilles til mindst 4 bytes. PMP-modulet træder altid i kraft i brugertilstand, men det kan træde i kraft valgfrit ved at låse (L)-attributten i maskintilstand.
- Hvis adgangen overtræder den nuværende tilladelsesgrænse, vil det udløse en unormal afbrydelse. PMP-modulet omfatter fire grupper af 8-bit konfigurationsregistre (én gruppe af 32-bit) og fire grupper af adresseregistre, som alle skal tilgås i maskintilstand ved CSR-instruktion.
- Note: Antallet af beskyttede områder understøttet af PMP i forskellige modeller af mikroprocessorer kan være forskelligt, og antallet understøttet af pmpcfg- og pmpaddr-registre er også forskelligt. Se Tabel 1-1 for detaljer.
PMP Register Set
Listen over CSR-registre, der understøttes af PMP-modulet i V3-mikroprocessoren, er vist i tabel 4-1 nedenfor.
Tabel 4-1 PMP-modulregistersæt
| Navn | CSR-adresse | Adgang | Beskrivelse | Nulstil værdi |
| pmpcfg0 | 0x3A0 | MRW | PMP-konfigurationsregister 0 | 0x00000000 |
| pmpaddr0 | 0x3B0 | MRW | PMP-adresseregister 0 | 0xXXXXXXXXX |
| pmpaddr1 | 0x3B1 | MRW | PMP-adresseregister 1 | 0xXXXXXXXXX |
| pmpaddr2 | 0x3B2 | MRW | PMP-adresseregister 2 | 0xXXXXXXXXX |
| pmpaddr3 | 0x3B3 | MRW | PMP-adresseregister 3 | 0xXXXXXXXXX |
pmp
pmpcfg er konfigurationsregisteret for PMP-enheden, og hvert register indeholder fire 8-bit pumpefelter, svarende til konfigurationen af fire regioner, og pumpning repræsenterer konfigurationsværdien for region i. Dens format er vist i følgende tabel 4-2.
Tabel 4-2 pmpcfg0 register
pmpcfg bruges til at konfigurere område I, og dets bitdefinition er beskrevet i følgende tabel 4-3.
Tabel 4-3 pmp
| Bit | Navn | Beskrivelse |
| 7 | L | Låsning er aktiveret og kan låses op i maskintilstand. 0: Ikke låst;
1: Lås det relevante register. |
| [6:5] | – | Reserveret |
| [4:3] | A | Valg af adressejustering og beskyttelsesområde. 00: FRA (PMP fra)
01: TOR (topjusteringsbeskyttelse) 10: NA4 (fast fire-byte beskyttelse) 11: NAPOT (2(G+2) Bytebeskyttelse, G≥1) |
| 2 | X | Eksekverbar attribut. |
| 0: Ingen udførelsestilladelse;
1: Udfør tilladelse. |
||
|
1 |
W |
Skrivbar egenskab.
0: Ingen skrivetilladelse 1: Skrivetilladelse. |
|
0 |
R |
Læsbar egenskab
0: Ingen læsetilladelse 1: Læsetilladelse. |
pmpaddr
pmpaddr-registret bruges til at konfigurere adressen for område I. Standarddefinitionen er under RV32-arkitektur, som er kodningen af de øverste 32 bit af en 34-bit fysisk adresse, og dens format er vist i følgende tabel 4-4 .
Hele V3-mikroprocessorens fysiske adresserum er 4G, så de øverste to bits af dette register bruges ikke.
Tabel 4-4 pmpaddr 
Når NAPOT er valgt, bruges den lave bit af adresseregisteret også til at angive størrelsen af det aktuelle beskyttelsesområde, som vist i følgende tabel, hvor 'y' er en bit af registeret.
Tabel 4-5 Relationstabel mellem PMP-konfiguration og adresseregister og beskyttet område.
| pmpaddr | pmpcfg. EN | Matchende baseadresse og størrelse |
| åååå...åååå | NA4 | Med 'åå...ååå00' som basisadresse er 4-byte-området beskyttet. |
| åååå…ååå0 | NAPOT | Med 'åå...ååå000' som basisadresse er 8-byte-området beskyttet. |
| åååå…åå01 | NAPOT | Med 'åå...åå0000' som basisadresse er 16-byte-området beskyttet. |
| åååå…å011 | NAPOT | Med 'yy…y00000' som basisadresse er 16-byte-området beskyttet. |
| … | … | … |
| ååå01…111 | NAPOT | Med 'y0…000000' som basisadresse er området på 231 byte beskyttet. |
| yy011…111 | NAPOT | Beskyt hele 232-byte-området. |
Beskyttelsesmekanisme
X/W/R i pmpcfg bruges til at indstille beskyttelsesmyndigheden for område I, og overtrædelse af relevant myndighed vil forårsage en tilsvarende undtagelse:
- Når du forsøger at hente instruktioner i PMP-området uden udførelsesautoritet, vil det forårsage en undtagelse for instruktionshentningsadgangsfejl (mcause=1).
- Når du forsøger at skrive data i PMP-området uden skriftlig tilladelse, vil det forårsage en fejlundtagelse (mcause=7) i butiksinstruktionsadgangen.
- Når du forsøger at læse data i PMP-området uden læsetilladelse, vil det forårsage en unormal hukommelsesadgangsfejl (mcause=5) for indlæsningsinstruktionen.
A i pmpcfg bruges til at indstille beskyttelsesområdet og adressejusteringen af region I og til at beskytte hukommelsen for A_ADDR ≤ region < i > < B_ADDR (både A_ADDR og B_ADDR skal justeres i 4 bytes):
- Hvis B _ ADDR–A_ADDR = = 22, anvendes NA4-tilstand;
- Hvis B _ ADDR–A_ADDR = = 2(G+2), G≥1, og en _-adresse er 2(g+2), anvendes NAPOT-metoden;
- Ellers overtages TOP-tilstanden.
Tabel 4-6 PMP-adressetilpasningsmetoder
| En værdi | Navn | Beskrivelse |
| 0b00 | SLUKKET | Intet område at beskytte |
| 0b01 | TOR | Topjusteret områdebeskyttelse.
Under pmp pmpaddri = B_ADDR >> 2. Bemærk: Hvis område 0 af PMP er konfigureret som TOR-tilstand (i=0), er den nedre grænse for beskyttelsesområdet 0 adresse, dvs. 0 ≤ addr < pmpaddr0, alt inden for det matchende område. |
| 0b10 | NA4 | Fast 4-byte områdebeskyttelse.
pmp |
| 0b11 | NAPOT | Beskyt 2(G+2)-regionen med G ≥ 1, når A_ADDR er 2(G+2) justeret. pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< >1. |
- L-bitten i pmp
- QingKe V3-seriens mikroprocessorer understøtter beskyttelsen af flere zoner. Når den samme handling matcher flere zoner på samme tid, matches zonen med det mindste nummer først.
Systemtimer (SysTick)
- QingKe V3-seriens mikroprocessor er designet med en 32-bit eller 64-bit tæller (SysTick) indeni. Dens urkilde er systemuret eller dets 8-frekvens division, og V3A understøtter kun 8-frekvens division.
- Det kan give en tidsbase, timing og måling af tid for et real-time operativsystem. Forskellige typer registre, der er involveret i timeren, har forskellige tilknytningsadresser, som vist i de følgende tabeller 5-1 og 5-2.
Tabel 5-1 V3A SysTick registerliste
| Navn | Adgangsadresse | Beskrivelse | Nulstil værdi |
| STK_CTLR | 0xE000F000 | Systemtællerkontrolregister | 0x00000000 |
| STK_CNTL | 0xE000F004 | Systemtæller lavt register | 0xXXXXXXXXX |
| STK_CNTH | 0xE000F008 | Systemtæller højt register
Bemærk: Gælder kun for V3A. |
0xXXXXXXXXX |
| STK_CMPLR | 0xE000F00C | Systemantal sammenligningsværdi lav register | 0xXXXXXXXXX |
| STK_CMPHR | 0xE000F010 | Systemtæller sammenligning værdi høj register
Bemærk: Gælder kun for V3A. |
0xXXXXXXXXX |
Tabel 5-2 V3 SysTick registerliste over andre modeller
| Navn | Adgangsadresse | Beskrivelse | Nulstil værdi |
| STK_CTLR | 0xE000F000 | Systemtællerkontrolregister | 0x00000000 |
| STK_SR | 0xE000F004 | Systemtællerstatusregister | 0x00000000 |
| STK_CNTL | 0xE000F008 | Systemtællerens lave register | 0xXXXXXXXXX |
| STK_CMPLR | 0xE000F010 | Tæl sammenligning værdi lav register | 0xXXXXXXXXX |
Hvert register er beskrevet i detaljer som følger.
Systemtællerkontrolregister (STK_CTLR)
Tabel 5-3 SysTick kontrolregistre
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:5] | Reserveret | RO | Reserveret | 0 |
|
4 |
MODE |
RW |
Tælletilstand: 1: Nedtælling;
0: Tæl op. Bemærk: Ugyldig for V3A. |
0 |
|
3 |
STRE |
RW |
Aktiveringsbit for automatisk genindlæsningstæller:
1: Tæl fra 0 igen efter at have tællet op til sammenligningsværdien, og tæl fra sammenligningsværdien igen efter at have tællet ned til 0; 0: Fortsæt med at tælle op/ned. Bemærk: Ugyldig for V3A. |
0 |
|
2 |
STCLK |
RW |
Modur-kildevalgsbit:
1: HCLK som tidsbase; 0: HCLK/8 som tidsbase. Bemærk: Den er ugyldig for V3A, som kun understøtter HCLK/8 som tidsbase. |
0 |
| 1 | SITE | RW | Counter interrupt aktiveringskontrolbits: | 0 |
| 1: Aktiver tællerafbrydelse; 0: Deaktiver tællerafbrydelse.
Bemærk: Ugyldig for V3A. |
||||
| 0 | STE | RW | Systemtælleren aktiverer en kontrolbit. 1: Aktiver systemtæller STK;
0: Deaktiver systemtælleren STK, og tælleren stopper med at tælle. |
0 |
Systemtællerstatusregister (STK_SR)
Dette register gælder ikke for V3A.
Tabel 5-4 SysTick-tæller lavt register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
|
31 |
SWIE |
RW |
Software afbrydelse trigger aktivering (SWI): 1: Udløs software afbrydelse;
0: Sluk aftrækkeren. Bemærk: Denne bit skal ryddes efter indtastning af softwareafbrydelsen, ellers vil den altid udløses. |
0 |
| [30:1] | Reserveret | RO | Reserveret | 0 |
|
0 |
CNTIF |
RW |
Optællingssammenligningsflag, skriv 0 tydeligt, skriv 1 er ugyldig:
1: Tæl op til sammenligningsværdien og tæl ned til 0; 0: Sammenligningsværdien er ikke nået. |
0 |
Systemtæller lavt register (STK_CNTL)
Tabel 5-5 SysTick-tæller lavt register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | CNTL | RW | Den aktuelle tællerværdi er 32 bit lavere. For V3A kan dette register læses som 8-bit /16-bit
/32-bit, men kan kun skrives som 8-bit og andet modeller er ikke begrænset. |
0xXXXXXX XXX |
Note: Register STK_CNTL og register STK_CNTH i V3A udgør tilsammen en 64-bit systemtæller.
Systemtæller højt register (STK_CNTH)
Tabel 5-6 SysTick tæller højt register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | CNTH | RW | Den aktuelle tællerværdi er 32 bit højere. Dette register kan læses med 8-bit/16-bit/32-bit, men kan kun skrives med 8-bit.
Bemærk: Gælder kun for V3A. |
0xXXXXXX XXX |
Note: Register STK_CNTL og register STK_CNTH i V3A udgør tilsammen en 64-bit systemtæller.
Systemantal sammenligningsværdi lav register (STK_CMPLR)
Tabel 5-7 SysTick-sammenligningsværdi lavt register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | CMPL | RW | Indstil tællersammenligningsværdien til 32 bit lavere. Når CMP-værdien og CNT-værdien er ens, vil en STK-afbrydelse blive udløst. For V3A kan dette register læses som 8-bit /16-bit /32-bit, men kan kun
skrevet som 8-bit, og andre modeller er ikke begrænset. |
0xXXXXXX XXX |
Note: Registret STK_CMPLR og registret STK_CMPHR i V3A udgør tilsammen 64-bit tællersammenligningsværdien.
Systemantal sammenligningsværdi højt register (STK_CMPHR)
Tabel 5-8 SysTick sammenligning værdi høj register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | CMPH | RW | Indstil tællersammenligningsværdien 32 bit højere. STK-afbrydelsen vil blive udløst, når CMP-værdien og CNT-værdien er ens.
Dette register kan læses med 8-bit/16-bit/32-bit, men kan kun skrives med 8-bit. Bemærk: Gælder kun for V3A. |
0xXXXXXX XXX |
Note: Registret STK_CMPLR og registret STK_CMPHR i V3A udgør tilsammen 64-bit tællersammenligningsværdien.
Indstillinger for processor lavt strømforbrug
- QingKe V3-seriens mikroprocessorer understøtter dvaletilstand via WFI (Wait for Interrupt) instruktion for at opnå lavt statisk strømforbrug.
- Sammen med PFICs systemkontrolregister (PFIC_SCTLR) kan forskellige Sleep modes og WFE instruktioner implementeres.
Gå ind i dvale
- QingKe V3-seriens mikroprocessorer kan gå i dvale på to måder, Wait for Interrupt (WFI) og Wait For Event (WFE). WFI-metoden betyder, at mikroprocessoren går i dvale, venter på, at en afbrydelse vågner, og derefter vågner op til den tilsvarende afbrydelse for at udføre. WFE-metoden betyder, at mikroprocessoren går i dvale, venter på, at en hændelse vågner, og vågner op for at fortsætte med at udføre det tidligere stoppede programflow.
- Standard RISC-V understøtter WFI-instruktion, og WFI-kommandoen kan udføres direkte for at gå i dvale ved hjælp af WFI-metoden. For WFE-metoden bruges WFITOWFE-bitten i systemkontrolregisteret PFIC_SCTLR til at styre de efterfølgende WFI-kommandoer som WFE-behandling for at opnå WFE-metoden til at gå i dvale.
- Søvndybden styres i henhold til SLEEPDEEP-bitten i PFIC_SCTLR.
- Hvis SLEEPDEEP i PFIC_SCTLR-registret ryddes til nul, går mikroprocessoren i dvaletilstand, og det interne enhedsur får lov til at blive slukket bortset fra SysTick og en del af opvågningslogikken.
- Hvis SLEEPDEEP i PFIC_SCTLR-registret er indstillet, går mikroprocessoren i dyb dvaletilstand, og alle celleure kan slås fra.
- Når mikroprocessoren er i fejlretningstilstand, er det ikke muligt at gå ind i nogen form for dvaletilstand.
Sleep Wakeup
QingKe V3-seriens mikroprocessorer kan vækkes efter dvale på grund af WFI og WFE på følgende måder.
Efter WFI-metoden går i dvale, kan den vækkes af
- Mikroprocessoren kan vækkes af afbrydelseskilden, der reageres på af afbrydelsescontrolleren. Efter opvågning udfører mikroprocessoren først afbrydelsesfunktionen.
- Gå ind i dvaletilstand, debug-anmodning kan få mikroprocessoren til at vågne og gå i dyb dvale, fejlretningsanmodning kan ikke vække mikroprocessoren.
Efter at WFE-metoden går i dvale, kan mikroprocessoren vækkes af følgende.
- Interne eller eksterne hændelser, når der ikke er behov for at konfigurere interrupt-controlleren, vågn op og fortsæt med at køre programmet.
- Hvis en afbrydelseskilde er aktiveret, vækkes mikroprocessoren, når en afbrydelse genereres, og efter opvågning udfører mikroprocessoren afbrydelsesfunktionen først.
- Hvis SEVONPEND-bitten i PFIC_SCTLR er konfigureret, aktiverer interrupt-controlleren ikke interruptet, men når et nyt afventende interrupt-signal genereres (det tidligere genererede ventende signal træder ikke i kraft), kan det også få mikroprocessoren til at vågne, og det tilsvarende flag afventende afbrydelse skal slettes manuelt efter opvågning.
- Gå ind i dvaletilstand fejlsøgningsanmodning kan få mikroprocessoren til at vågne og gå i dyb dvale, fejlretningsanmodning kan ikke vække mikroprocessoren.
- Desuden kan tilstanden af mikroprocessoren efter opvågning kontrolleres ved at konfigurere SLEPONEXIT bit i PFIC_SCTLR.
- SLEEPONEXIT er indstillet, og den sidste niveau afbrydelsesreturinstruktion (mret) vil udløse WFI-tilstandens dvale.
SLEEPONEXIT slettes uden effekt.
Forskellige MCU-produkter udstyret med V3-seriens mikroprocessorer kan anvende forskellige dvaletilstande, slukke for forskellige perifere enheder og ure, implementere forskellige strømstyringspolitikker og opvågningsmetoder i henhold til forskellige konfigurationer af PFIC_SCTLR og realisere forskellige laveffekttilstande.
Debug Support
- QingKe V3-seriens mikroprocessorer inkluderer et hardware-debug-modul, der understøtter komplekse fejlfindingsoperationer. Når mikroprocessoren er suspenderet, kan debug-modulet få adgang til mikroprocessorens GPR'er, CSR'er, hukommelse, eksterne enheder osv. gennem abstrakte kommandoer, programbufferimplementeringsinstruktioner osv. Fejlretningsmodulet kan suspendere og genoptage mikroprocessorens drift.
- Debug-modulet følger RISC-V External Debug Support Version0.13.2-specifikationen, detaljeret dokumentation kan downloades fra RISC-V International webwebsted.
Debug modul
- Debug-modulet inde i mikroprocessoren, der er i stand til at udføre debug-operationer udstedt af debug-værten, inkluderer.
- Adgang til registre via fejlfindingsgrænsefladen
- Nulstil, suspender og genoptag mikroprocessoren gennem fejlfindingsgrænsefladen
- Læs og skriv hukommelse, instruktionsregistre og eksterne enheder gennem fejlfindingsgrænsefladen
- Implementer flere vilkårlige instruktioner gennem fejlfindingsgrænsefladen
- Indstil software-breakpoints gennem fejlfindingsgrænsefladen
- Indstil hardware breakpoints gennem fejlfindingsgrænsefladen
- Understøtte abstrakt kommando auto-udførelse
- Understøtter enkelt-trins debugging
- Note: V3A understøtter ikke hardware breakpoints, V3B hardware breakpoints understøtter matchning af instruktionsadresse, og V3C hardware breakpoints understøtter matchning af instruktionsadresse og dataadresse.
- De interne registre i fejlretningsmodulet bruger en 7-bit adressekode, og følgende registre er implementeret i QingKe V3-seriens mikroprocessorer.
Tabel 7-1 Liste over fejlretningsmodulregister
| Navn | Adgangsadresse | Beskrivelse |
| data0 | 0x04 | Dataregister 0, kan bruges til midlertidig opbevaring af data |
| data1 | 0x05 | Dataregister 1, kan bruges til midlertidig opbevaring af data |
| afkontrol | 0x10 | Debug modul kontrolregister |
| dmstatus | 0x11 | Debug modul statusregister |
| hartinfo | 0x12 | Mikroprocessorstatusregister |
| abstracts | 0x16 | Abstrakt kommandostatusregister |
| kommando | 0x17 | Abstrakt kommandoregister |
| abstrakt auto | 0x18 | Abstrakt kommando automatisk udførelse |
| progbuf0-7 | 0x20-0x27 | Instruktionscache-registre 0-7 |
| haltsum0 | 0x40 | Pause statusregister |
- Debug-værten kan styre mikroprocessorens suspendering, genoptagelse, nulstilling osv. ved at konfigurere dekontrolregisteret. RISC-V-standarden definerer tre typer abstrakte kommandoer: adgangsregister, hurtig adgang og adgangshukommelse.
- QingKe V3A mikroprocessor understøtter kun registeradgang, andre modeller understøtter register- og hukommelsesadgang, men ikke hurtig adgang. Adgang til registre (GPR'er, CSR'er) og kontinuerlig adgang til hukommelse kan realiseres ved hjælp af abstrakte kommandoer.
- Debug-modulet implementerer 8 instruktionscache-registre progbuf0-7, og debug-værten kan cache flere instruktioner (som kan være komprimerede instruktioner) til bufferen og kan vælge at fortsætte med at udføre instruktionerne i instruktionscache-registrene efter at have udført den abstrakte kommando eller eksekvering de cachelagrede instruktioner direkte.
- Note at den sidste instruktion i programmerne skal være en "ebreak" eller "c.ebreak" instruktion. Adgang til lager, periferiudstyr osv. er også muligt gennem abstrakte kommandoer og instruktioner, der er cachelagret i programmerne.
- Hvert register er beskrevet i detaljer som følger.
- Dataregister 0 (data0)
Tabel 7-2 definition af dataregister
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | data0 | RW | Dataregister 0, bruges til midlertidig lagring af data | 0 |
Dataregister 1 (data1)
Tabel 7-3 data1 register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | data1 | RW | Dataregister 1, bruges til midlertidig lagring af data | 0 |
Debug modul kontrolregister (decontrol)
Dette register styrer pause, nulstilling og genoptagelse af mikroprocessoren. Debug-værten skriver data til det tilsvarende felt for at opnå pause (haltreq), reset (ndmreset), resume (resumereq). Du beskriver følgende.
Tabel 7-4 definition af dekontrolregister
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | haltreq | WO | 0: Ryd pauseanmodningen
1: Send en pauseanmodning |
0 |
| 30 | resumereq | W1 | 0: Ugyldig
1: Gendan den aktuelle mikroprocessor Bemærk: Skriv 1 er gyldig, og hardwaren ryddes, efter at mikroprocessoren er gendannet |
0 |
| 29 | Reserveret | RO | Reserveret | 0 |
| 28 | ackhavereset | W1 | 0: Ugyldig
1: Ryd høststatusbitten på mikroprocessoren |
0 |
| [27:2] | Reserveret | RO | Reserveret | 0 |
| 1 | ndmreset | RW | 0: Ryd nulstilling
1: Nulstil hele systemet bortset fra fejlretningsmodulet |
0 |
| 0 | deaktivere | RW | 0: Nulstil fejlfindingsmodulet
1: Debug-modulet fungerer korrekt |
0 |
Debug modul statusregister (dm status)
- Dette register bruges til at angive status for debug-modulet og er et skrivebeskyttet register med følgende beskrivelse af hver bit.
Tabel 7-5 dmstatus register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:20] | Reserveret | RO | Reserveret | 0 |
| 19 | alt havereset | RO | 0: Ugyldig
1: Nulstilling af mikroprocessor |
0 |
| 18 | anyhavereset | RO | 0: Ugyldig
1: Nulstilling af mikroprocessor |
0 |
| 17 | allresumeack | RO | 0: Ugyldig
1: Nulstilling af mikroprocessor |
0 |
| 16 | anyresumeack | RO | 0: Ugyldig
1: Nulstilling af mikroprocessor |
0 |
| [15:14] | Reserveret | RO | Reserveret | 0 |
| 13 | alluvial | RO | 0: Ugyldig
1: Mikroprocessoren er ikke tilgængelig |
0 |
| 12 | nogen nytte | RO | 0: Ugyldig
1: Mikroprocessoren er ikke tilgængelig |
0 |
| 11 | alle kører | RO | 0: Ugyldig
1: Mikroprocessor kører |
0 |
| 10 | noget løb | RO | 0: Ugyldig
1: Mikroprocessor kører |
0 |
| 9 | standset | RO | 0: Ugyldig
1: Mikroprocessoren er i suspension |
0 |
| 8 | nogen standset | RO | 0: Ugyldig
1: Mikroprocessor ude af suspension |
0 |
| 7 | autentificeret |
RO |
0: Godkendelse er påkrævet før brug af debug-modulet
1: Fejlfindingsmodulet er blevet certificeret |
0x1 |
| [6:4] | Reserveret | RO | Reserveret | 0 |
| [3:0] | version | RO | Debugging systemunderstøttelsesarkitektur version 0010: V0.13 | 0x2 |
Mikroprocessorstatusregister (hartinfo)
Dette register bruges til at give information om mikroprocessoren til debug-værten og er et skrivebeskyttet register med hver bit beskrevet som følger.
Tabel 7-6 hartinfo register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:24] | Reserveret | RO | Reserveret | 0 |
| [23:20] | kradse | RO | Antal understøttede skraberegistre | 0x3 |
| [19:17] | Reserveret | RO | Reserveret | 0 |
| 16 | Dataadgang | RO | 0: Dataregister tilknyttes CSR-adresse
1: Dataregisteret tilknyttes hukommelsesadressen |
0x1 |
| [15:12] | datastørrelse | RO | Antal dataregistre | 0x2 |
| [11:0] | data tilføje |
RO |
Offsetadressen for dataregisteret data0,
hvis basisadresse er 0xe0000000, er underlagt specifik læsning. |
0xXXX |
Abstrakt kommandokontrol og statusregistre (abstrakte)
Dette register bruges til at angive udførelsen af den abstrakte kommando. Debug-værten kan læse dette register for at vide, om den sidste abstrakte kommando udføres eller ej, og kan kontrollere, om der genereres en fejl under udførelsen af den abstrakte kommando og typen af fejl, som er beskrevet i detaljer som følger.
Tabel 7-7 abstracts registerdefinitioner
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:29] | Reserveret | RO | Reserveret | 0 |
| [28:24] | progbufsize | RO | Angiver antallet af programbufferprogram
cache registre |
0x8 |
| [23:13] | Reserveret | RO | Reserveret | 0 |
| 12 | optaget | RO | 0: Ingen abstrakt kommando udføres
1: Der udføres abstrakte kommandoer Bemærk: Efter udførelse ryddes hardwaren. |
0 |
| 11 | Reserveret | RO | Reserveret | 0 |
| [10:8] | cmder | RW | Abstrakt kommando fejltype 000: Ingen fejl
001: Udførelse af abstrakt kommando for at skrive til kommando, abstracts, abstrakte autoregistre eller læse og skrive til data- og progbuf-registre 010: Understøtter ikke aktuel abstrakt kommando 011: Udførelse af abstrakt kommando med undtagelse 100: Mikroprocessoren er ikke suspenderet eller utilgængelig og kan ikke udføre abstrakte kommandoer 101: Busfejl 110: Paritetsbitfejl under kommunikation 111: Andre fejl Bemærk: Til bitskrivning bruges 1 til at slette nul. |
0 |
| [7:4] | Reserveret | RO | Reserveret | 0 |
| [3:0] | rabat | RO | Antal dataregistre | 0x2 |
- Debugging-værter kan få adgang til GPR'er, CSR-registre og hukommelse ved at skrive forskellige konfigurationsværdier ind i det abstrakte kommandoregister.
- Ved adgang til registrene defineres kommandoregisterbittene som følger.
- Tabel 7-8 Definition af kommandoregister ved adgang til registre
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:24] | cmd type | WO | Abstrakt kommando type 0: Adgangsregister;
1: Hurtig adgang (ikke understøttet); 2: Adgang til hukommelse. |
0 |
| 23 | Reserveret | WO | Reserveret | 0 |
| [22:20] | aarsize | WO | Adgangsregister databitbredde 000: 8-bit
001: 16-bit 010: 32-bit |
0 |
| 011: 64-bit (ikke understøttet) 100: 128-bit (ikke understøttet)
Bemærk: Ved adgang til flydende kommaregistre FPR'er, kun 32-bit adgang understøttes. |
||||
| 19 | aarpostincrement | WO | 0: Ingen effekt
1: Forøg automatisk værdien af regno efter adgang til registret |
0 |
| 18 | post exec | WO | 0: Ingen effekt
1: Udfør den abstrakte kommando og udfør derefter kommandoen i progbuf |
0 |
| 17 | overførsel | WO | 0: Udfør ikke handlingen specificeret ved at skrive
1: Udfør den manipulation, der er angivet ved at skrive |
0 |
| 16 | skrive | WO | 0: Kopier data fra det angivne register til data0 1: Kopier data fra data0 register til det angivne register |
0 |
| [15:0] | regno | WO | Angiv adgangsregistre 0x0000-0x0fff er CSR'er 0x1000-0x101f er GPR'er |
0 |
Ved adgang til hukommelsen er bits i kommandoregisteret defineret som følger.
Tabel 7-9 Definition af kommando Registrér ved adgang til hukommelse
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:24] | cmd type | WO | Abstrakt kommando type 0: Adgangsregister;
1: Hurtig adgang (ikke understøttet); 2: Få adgang til hukommelsen. |
0 |
| 23 | aamvirtuel | WO | 0: Få adgang til fysisk adresse;
1: Få adgang til virtuel adresse. |
0 |
| [22:20] | armstørrelse | WO | Adgang til hukommelsesdatabitbredde 000: 8-bit;
001: 16-bit; 010: 32-bit; 011: 64-bit (ikke understøttet); 100: 128-bit (ikke understøttet); |
0 |
| 19 | aampudsving | WO | 0: Ingen indflydelse;
1: Efter succesfuld adgang til hukommelsen øges adressen gemt i data1 registeret med antallet af bytes svarende til bitbredden konfigureret efter armstørrelse. Aamsize=0, tilgås af byte, data1 plus 1. Aamsize=1, tilgås af et halvt ord, data1 plus 2. aamsize=2, tilgås af bit, data1 plus 4. |
0 |
| 18 | post exec | WO | 0: Ingen indflydelse;
1: Udfør kommandoen i progbuf efter at have udført den abstrakte kommando. |
0 |
| 17 | Reservere | RO | Reserveret | 0 |
|
16 |
skrive |
WO |
0: Læs data fra adressen angivet af data1 til data0
1: Skriv data i data0 til adressen angivet af data1. |
0 |
|
[15:14] |
målspecifik |
WO |
Definition af læse- og skrivetilstand Skriv:
00, 01: Skriv direkte til hukommelsen; 10: Efter dataene i data0 er OR med databittene i hukommelsen, skrives resultatet ind i hukommelsen (kun ordadgang understøttes). 11: Efter at have summeret dataene i data0 med databittene i hukommelsen, skriv resultatet ind i hukommelsen (kun ordadgang understøttes). Læse: 00, 01, 10, 11: Læs 0 direkte fra hukommelsen. |
0 |
| [13:0] | Reservere | RO | Reserveret |
Abstrakt kommando automatisk udførelsesregister (abstrakt auto)
Dette register bruges til at konfigurere fejlfindingsmodulet. Når du læser og skriver progbufx og data fra fejlfindingsmodulet, kan den abstrakte kommando udføres igen.
Beskrivelsen af dette register er som følger:
Tabel 7-10 abstrakt autoregisterdefinition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:16] | autoexecprogbuf | RW | Hvis der er sat en bit, vil den tilsvarende læsning og skrivning af progbufx få den abstrakte kommando i kommandoregisteret til at blive udført igen.
Bemærk: V3-serien er designet med 8 progbufs, svarende til bits [23:16]. |
0 |
| [15:12] | Reservere | RO | Reserveret | 0 |
| [11:0] | autoexecdata |
RW |
Hvis en bit er sat til 1, vil den tilsvarende læsning og skrivning af dataregisteret få den abstrakte kommando i kommandoregisteret til at blive udført igen.
Bemærk: V3-serien er designet med to data registre, svarende til bits [1:0]. |
0 |
Instruktionscacheregister (progbufx)
Dette register bruges til at gemme enhver instruktion og implementere den tilsvarende operation, inklusive 8, som skal være opmærksom på den sidste udførelse, der skal være "break" eller "c.ebreak".
Tabel 7-11 definition af progbuf-register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | progbuf | RW | Instruktionskodning til cache-operationer, som
kan indeholde kompressionsinstruktioner |
0 |
Pause statusregister (haltsum0)
Dette register bruges til at angive, om mikroprocessoren er suspenderet eller ej. Hver bit angiver den suspenderede status for en mikroprocessor, og når der kun er én kerne, bruges kun den laveste bit i dette register til at angive det.
Tabel 7-12 haltsum0 register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:1] | Reserveret | RO | Reserveret | 0 |
| 0 | haltsum0 | RO | 0: Mikroprocessor fungerer normalt
1: Mikroprocessorstop |
0 |
- Ud over de ovennævnte registre for debug-modulet, involverer debug-funktionen også nogle CSR-registre, hovedsageligt fejlretningskontrol- og statusregistret dcsr og debug-instruktionsmarkøren dpc, som er beskrevet detaljeret som følger.
- Debug kontrol og statusregister (dcsr)
Tabel 7-13 dcsr register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:28] | xdebugver | DRO | 0000: Ekstern fejlretning er ikke understøttet 0100: Understøtter standard ekstern fejlretning
1111: Ekstern debugging er understøttet, men opfylder ikke specifikationen |
0x4 |
| [27:16] | Reserveret | DRO | Reserveret | 0 |
| 15 | pause | DRW | 0: Pausekommandoen i maskintilstand opfører sig som beskrevet i privilegiet file
1: Pause-kommandoen i maskintilstand kan gå i fejlretningstilstand |
0 |
| [14:13] | Reserveret | DRO | Reserveret | 0 |
| 12 | brud |
DRW |
0: Pause-kommandoen i brugertilstand opfører sig som beskrevet i privilegiet file
1: Pause-kommandoen i brugertilstand kan gå i fejlretningstilstand |
0 |
| 11 | trin | DRW | 0: Afbrydelser er deaktiveret under enkelttrins debugging
1: Aktiver afbrydelser under enkelttrins debugging |
0 |
| 10 | Reserveret | DRO | Reserveret | 0 |
| 9 | stop tid | DRW | 0: Systemtimer kører i fejlretningstilstand
1: Systemtimeren stopper i fejlretningstilstand |
0 |
| [8:6] | årsag | DRO | Årsager til at gå ind i debugging
001: Indtastning af fejlretning i form af break-kommando (prioritet 3) 010: Indtastning af fejlretning i form af et triggermodul (prioritet 4, den højeste) 011: Indtastning af fejlretning i form af pauseanmodning (prioritet 1) 100: debugging i form af enkelt-trins debugging (prioritet 0, den laveste) |
0 |
| 101: gå ind i fejlretningstilstand direkte efter mikroprocessornulstilling (prioritet 2) Andet: Reserveret | ||||
| [5:3] | Reserveret | DRO | Reserveret | 0 |
| 2 | trin | DRW | 0: Slå enkelttrins-fejlretning fra
1: Aktiver enkelttrins debugging |
0 |
| [1:0] | Forrige | DRW | Privilege mode 00: Bruger mode
01: Supervisor-tilstand (ikke understøttet) 10: Reserveret 11: Maskintilstand Bemærk: Registrer den privilegerede tilstand, når du går ind i fejlretningstilstand, debuggeren kan ændre denne værdi for at ændre den privilegerede tilstand, når fejlretningen afsluttes |
0 |
Debug mode program pointer (DPC)
- Dette register bruges til at lagre adressen på den næste instruktion, der skal udføres, efter at mikroprocessoren går ind i debug-tilstand, og dens værdi opdateres med forskellige regler afhængigt af årsagen til at gå ind i debug. dpc register er beskrevet i detaljer som følger.
Tabel 7-14 definitioner af dpc-register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | DPC | DRW | Instruktionsadresse | 0 |
Reglerne for opdatering af registrene er vist i nedenstående tabel.
Tabel 7-15 dpc-opdateringsregler
| Indtast fejlfindingsmetoden | dpc-opdateringsregler |
| pause | Adresse på Ebreak-instruktionen |
| enkelt trin | Instruktionsadresse for den næste instruktion af den aktuelle instruktion |
| udløsermodul | Midlertidigt ikke understøttet |
| stop anmodning | Adressen på den næste instruktion, der skal udføres, når Debug indtastes |
Fejlfindingsgrænseflade
- Forskellig fra standard JTAG grænseflade defineret af RISC-V, QingKe V3-seriens mikroprocessor anvender 1- en wire/2-wire seriel debug-grænseflade og følger WCH debug-interfaceprotokol V1.0.
- Debug-grænsefladen er ansvarlig for kommunikationen mellem debug-værten og debug-modulet og realiserer debug-værtens læse-/skriveoperation til debug-modulregistrene.
- WCH designet WCH_Link og open source dets skematiske og programbinære files, som kan bruges til fejlretning af alle mikroprocessorer af RISC-V-arkitektur.
- Se WCH Debug Protocol Manual for specifikke debug-grænsefladeprotokoller.
CSR-registerliste
- RISC-V-arkitekturen definerer et antal kontrol- og statusregistre (CSR'er) til styring og registrering af mikroprocessorens driftsstatus.
- Nogle af CSR'erne er blevet introduceret i det foregående afsnit, og dette kapitel vil detaljere CSR-registrene implementeret i QingKe V3-seriens mikroprocessorer.
CSR-registerliste
Tabel 8-1 Liste over mikroprocessor-CSR-registre
| Type | Navn | CSR Adresse | Adgang | Beskrivelse |
| RISC-V
Standard CSR |
marchid | 0xF12 | MRO | Arkitekturnummerregister |
| mimpid | 0xF13 | MRO | Hardwareimplementeringsnummereringsregister | |
| mstatus | 0x300 | MRW | Statusregister | |
| misa | 0x301 | MRW | Hardware instruktionssæt register | |
| mtvec | 0x305 | MRW | Undtagelsesbaseadresseregister | |
| mscratch | 0x340 | MRW | Maskintilstand staging register | |
| MEPC | 0x341 | MRW | Undtagelsesprogram pointer register | |
| årsag | 0x342 | MRW | Undtagelsesårsagsregister | |
| mtval | 0x343 | MRW | Undtagelsesværdiregister | |
| pmpcfg | 0x3A0+i | MRW | PMP konfigurationsregister | |
| pmpaddr | 0x3B0+i | MRW | PMP adresseregister | |
| tvælg | 0x7A0 | MRW | Debug triggervalgregister | |
| tdata1 | 0x7A1 | MRW | Debug trigger dataregister 1 | |
| tdata2 | 0x7A2 | MRW | Debug trigger dataregister 2 | |
| dcsr | 0x7B0 | DRW | Debug kontrol og statusregistre | |
| dpc | 0x7B1 | DRW | Debug mode program pointer register | |
| dscratch0 | 0x7B2 | DRW | Fejlretningstilstand staging register 0 | |
| dscratch1 | 0x7B3 | DRW | Fejlretningstilstand staging register 1 | |
|
Leverandørdefineret CSR |
gintenr | 0x800 | URW | Globalt afbrydelsesaktiveringsregister |
| intsyscr | 0x804 | URW | Afbryd systemkontrolregister | |
| corecfgr | 0xBC0 | MRW | Mikroprocessorkonfigurationsregister | |
| inestcr | 0xBC1 | MRW | Afbryd indlejret kontrolregister |
RISC-V Standard CSR-registre
- Arkitekturnummerregister (marchid)
- Dette register er et skrivebeskyttet register til at angive det aktuelle mikroprocessorhardwarearkitekturnummer, som hovedsageligt består af leverandørkode, arkitekturkode, seriekode og versionskode. Hver af dem er defineret som følger.
Tabel 8-2 definition af marchidregister
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | Reserveret | MRO | Reserveret | 1 |
| [30:26] | Leverandør0 | MRO | Producentkode 0
Fastgjort til bogstavet "W"-koden |
0x17 |
| [25:21] | Leverandør1 | MRO | Producentkode1
Fastgjort til bogstavet "C"-koden |
0x03 |
| [20:16] | Leverandør2 | MRO | Producentkode 2
Fastgjort til bogstavet "H"-koden |
0x08 |
| 15 | Reserveret | MRO | Reserveret | 1 |
| [14:10] | Arch | MRO | Arkitektur kode | 0x16 |
| RISC-V-arkitekturen er fastgjort til bogstavet "V"-kode | ||||
| [9:5] | Seriel | MRO | Serie kode
QingKe V3-serien, fastgjort til nummeret "3" |
0x03 |
| [4:0] | Version | MRO | Versionskode
Kan være versionen "A", "B", "C" og andre bogstaver i koden |
x |
Producentnummeret og versionsnummeret er alfabetisk, og serienummeret er numerisk. Kodningstabellen med bogstaver er vist i følgende tabel.
Tabel 8-3 Alfabetisk kortlægningstabel
| 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 |
- Blandt dem, QingKe V3A mikroprocessor, læser registeret tilbage til 0.
Hardwareimplementeringsnummereringsregister (klar)
- Dette register er hovedsageligt sammensat af leverandørkoder, som hver er defineret som følger.
Tabel 8-4 definition af klar register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | Reserveret | MRO | Reserveret | 1 |
| [30:26] | Leverandør0 | MRO | Producentkode 0
Fastgjort til bogstavet "W"-koden |
0x17 |
| [25:21] | Leverandør1 | MRO | Producentkode1
Fastgjort til bogstavet "C"-koden |
0x03 |
| [20:16] | Leverandør2 | MRO | Producentkode 2
Fastgjort til bogstavet "H"-koden |
0x08 |
| 15 | Reserveret | MRO | Reserveret | 1 |
| [14:8] | Reserveret | MRO | Reserveret | 0 |
| [7:4] | Mindre | MRO | Subversion nummer | 0xX |
| [3:0] | Major | MR0 | Hovedversionsnummer | 0xX |
- Dette register kan læses i enhver maskinimplementering, og i QingKe V3A-seriens processor læser dette register tilbage til nul.
Maskintilstandsstatusregister (mstatus)
- Dette register er blevet delvist beskrevet i det foregående afsnit, og dets folk er placeret som følger.
Tabel 8-5 definition af mstatusregister
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:13] | Reserveret | MRO | Reserveret | 0 |
| [12:11] | MPP | MRW | Privilegeret tilstand før pausen | 0 |
| [10:8] | Reserveret | MRO | Reserveret | 0 |
| 7 | MPIE | MRW | Afbrydelsesaktiveringstilstand, før du går ind i en afbrydelse | 0 |
| [6:4] | Reserveret | MRO | Reserveret | 0 |
| 3 | MIE | MRW | Aktivering af afbrydelse af maskintilstand | 0 |
| [2:0] | Reserveret | MRO | Reserveret | 0 |
- MPP-feltet bruges til at gemme den privilegerede tilstand, før du går ind i undtagelsen eller afbrydelsen, og bruges til at gendanne den privilegerede tilstand efter at have forladt undtagelsen eller afbrydelsen. MIE er den globale interrupt-aktiveringsbit, og når du indtaster undtagelsen eller interrupt, opdateres værdien af MPIE til værdien af MIE, og det skal bemærkes, at i QingKe V3-seriens mikroprocessorer vil MIE ikke blive opdateret til 0 før sidste niveau af indlejrede interrupts for at sikre, at interrupt-nesting i maskintilstand fortsætter med at blive udført. Når en undtagelse eller afbrydelse afsluttes, vender mikroprocessoren tilbage til maskintilstanden gemt af MPP, og MIE'en gendannes til MPIE-værdien.
- QingKe V3 mikroprocessor understøtter maskintilstand og brugertilstand, hvis du skal få mikroprocessoren til kun at fungere i maskintilstand, kan du indstille MPP til 0x3 i initialiseringen af boot file, det vil sige, efter returnering vil den altid forblive i maskintilstand.
Hardware instruktionssæt register (misa)
- Dette register bruges til at angive arkitekturen af mikroprocessoren og de understøttede instruktionssætudvidelser, som hver især er beskrevet som følger.
Tabel 8-6 misa register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:30] | MXL | MRO | Maskinordlængde 1:32
2:64 3:128 |
1 |
| [29:26] | Reserveret | MRO | Reserveret | 0 |
| [25:0] | Udvidelser | MRO | Instruktionssæt udvidelser | x |
- MXL bruges til at angive ordlængden af mikroprocessoren, QingKe V3 er 32-bit mikroprocessorer, og domænet er fastsat til 1.
- Udvidelser bruges til at angive, at mikroprocessoren understøtter udvidede instruktionssætdetaljer, hver angiver en klasse af udvidelser, dens detaljerede beskrivelse er vist i følgende tabel.
Tabel 8-7 Instruktionssæt udvidelsesdetaljer
| Bit | Navn | Beskrivelse |
| 0 | A | Atomisk forlængelse |
| 1 | B | Foreløbigt reserveret til Bit-Manipulation-udvidelse |
| 2 | C | Komprimeret udvidelse |
| 3 | D | Dobbelt-præcision floating-point forlængelse |
| 4 | E | RV32E base ISA |
| 5 | F | Enkelt-præcision floating-point forlængelse |
| 6 | G | Yderligere standardudvidelser til stede |
| 7 | H | Hypervisor udvidelse |
| 8 | I | RV32I/64I/128I base ISA |
| 9 | J | Foreløbigt reserveret til Dynamically Translated Languages-udvidelsen |
| 10 | K | Reserveret |
| 11 | L | Foreløbigt reserveret til Decimal Floating-Point-udvidelse |
| 12 | M | Heltal Multiplicer/Divid udvidelse |
| 13 | N | Afbrydelser på brugerniveau understøttes |
| 14 | O | Reserveret |
| 15 | P | Foreløbigt reserveret til Packed-SIMD-udvidelse |
| 16 | Q | Quad-præcision floating-point forlængelse |
| 17 | R | Reserveret |
| 18 | S | Supervisor mode implementeret |
| 19 | T | Foreløbigt reserveret til Transactional Memory-udvidelse |
| 20 | U | Brugertilstand implementeret |
| 21 | V | Foreløbigt reserveret til Vector extension |
| 22 | W | Reserveret |
| 23 | X | Ikke-standardudvidelser til stede |
| 24 | Y | Reserveret |
| 25 | Z | Reserveret |
- F.eksample, for QingKe V3A-mikroprocessoren er registerværdien 0x401001105, hvilket betyder, at den understøttede instruktionssætarkitektur er RV32IMAC, og den har implementering af brugertilstand.
Maskintilstand undtagelse base adresseregister (mtvec)
- Dette register bruges til at gemme basisadressen for undtagelses- eller interrupt-behandleren, og de nederste to bits bruges til at konfigurere tilstanden og identifikationsmetoden for vektortabellen som beskrevet i afsnit 3.2.
Maskintilstand staging register (mscratch)
Tabel 8-8 mscratch register definitioner
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | mscratch | MRW | Datalagring | 0 |
Dette register er et 32-bit læsbart og skrivbart register i maskintilstand til midlertidig datalagring. F.eksample, når der indtastes en undtagelses- eller afbrydelsesbehandler, lagres brugerstakmarkøren SP i dette register, og afbrydelsesstakmarkøren tildeles SP-registret. Når du har forladt undtagelsen eller afbrydelsen, skal du gendanne værdien af brugerstakmarkøren SP fra bunden. Det vil sige, at afbrydelsesstakken og brugerstakken kan isoleres.
Maskintilstand undtagelsesprogram pointer register (kort)
Tabel 8-9 mepc register definitioner
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | mepc | MRW | Undtagelsesprocedure pointer | 0 |
- Dette register bruges til at gemme programmarkøren ved indtastning af en undtagelse eller afbrydelse.
- Den bruges til at gemme instruktions-pc-markøren, før der indtastes en undtagelse, når en undtagelse eller afbrydelse genereres, og mepc bruges som returadresse, når undtagelsen eller afbrydelsen håndteres og bruges til en undtagelse eller afbrydelsesretur.
- Det er dog vigtigt at bemærke det.
- Når der opstår en undtagelse, opdateres mepc til pc-værdien for den instruktion, der i øjeblikket genererer undtagelsen.
- Når der opstår en afbrydelse, opdateres mepc til pc-værdien for den næste instruktion.
- Når du skal returnere en undtagelse efter at have behandlet undtagelsen, skal du være opmærksom på at ændre værdien af mepc'en, og flere detaljer kan findes i Kapitel 2 Undtagelser.
Maskintilstand undtagelsesårsagsregister (mcause)
Tabel 8-10 definition af mcause register
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| 31 | Afbryde | MRW | Afbrydelsesindikationsfelt 0: Undtagelse
1: Afbrydelse |
0 |
| [30:0] | Undtagelseskode | MRW | For undtagelseskoder, se Tabel 2-1 for detaljer | 0 |
- Dette register bruges hovedsageligt til at gemme årsagen til undtagelsen eller afbrydelsesnummeret for afbrydelsen. Dens højeste bit er Interrupt-feltet, som bruges til at angive, om den aktuelle forekomst er en undtagelse eller en interrupt.
- Den nederste bit er undtagelseskoden, som bruges til at angive den specifikke årsag. Dens detaljer kan findes i kapitel 2 Undtagelser.
Maskintilstand undtagelsesværdiregister (mtval)
Tabel 8-11 mtval register definition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | mtval | MRW | Undtagelsesværdi | 0 |
- Dette register bruges til at holde den værdi, der forårsagede undtagelsen, når der opstår en undtagelse. For detaljer såsom værdien og tidspunktet for dets lagring henvises til kapitel 2 Undtagelser.
PMP-konfigurationsregister (pmpcfg
- Dette register bruges hovedsageligt til at konfigurere den fysiske hukommelsesbeskyttelsesenhed, og hver 8. bit af dette register bruges til at konfigurere beskyttelsen af et område. Se venligst kapitel 4 for en detaljeret definition.
PMP-adresseregister (pmpaddr
- Dette register bruges hovedsageligt til adressekonfigurationen af den fysiske hukommelsesbeskyttelsesenhed, som koder de øverste 32 bit af en 34-bit fysisk adresse. Se venligst kapitel 4 for den specifikke konfigurationsmetode.
Debug mode program pointer register (DPC)
- Dette register bruges til at lagre adressen på den næste instruktion, der skal udføres, efter at mikroprocessoren går ind
- Debug-tilstand og dens værdi opdateres med forskellige regler afhængigt af årsagen til at gå ind i debug. Se afsnit 6.1 for en detaljeret beskrivelse.
Debug trigger select register (vælg)
- Den er kun gyldig for mikroprocessorer, der understøtter hardware-brudpunkter og understøtter højst 4-kanals brudpunkter, og dens nederste 2 bits er gyldige.
- Når du konfigurerer hvert kanalbrudpunkt, skal du vælge den tilsvarende kanal gennem dette register før konfiguration.
Tabel 8-12 vælg registerdefinition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:2] | Reserveret | MRO | Reserveret | 0 |
| [1:0] |
VÆLGE |
MRW |
Brydepunktskanalvalgsregisteret er konfigureret, det vil sige, efter at den tilsvarende kanal er valgt, kan tdata1 og tdata2 registrene betjenes for at konfigurere et breakpoint
information. |
X |
Debug trigger dataregister 1(tdata1)
Den er kun gyldig for mikroprocessorer, der understøtter hardware breakpoints. Mikroprocessorer understøtter kun instruktionsadresse og dataadressebrudpunkter, hvor bit TYPE af tdata1 registeret er en fast værdi på 2, og andre bits er i overensstemmelse med definitionen af kontrol i fejlretningsstandarden.
Tabel 8-13 tdata1 registerdefinition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:28] | TYPE | MRO | Breakpoint type definition, kontrol type. | 0x2 |
|
27 |
DMODE |
MRO |
0: De relevante registre for flip-flop'en kan modificeres i både maskintilstand og fejlretningstilstand;
1: Kun debug mode kan ændre de relevante registre på flip-flop'en. |
1 |
| [26:21] |
MASKMAX |
MRO |
Når MATCH=1, er det maksimale eksponentielle effektområde for matchning tilladt, det vil sige, at det maksimalt tilladte matchingsområde er 231 bytes. |
0x1F |
| [20:13] | Reserveret | MRO | Reserveret | 0 |
|
12 |
HANDLING |
MRW |
Indstil behandlingstilstanden, når et brudpunkt udløses:
0: Når du udløser, skal du indtaste brudpunktet og kalde afbrydelsen tilbage; 1: Gå ind i fejlretningstilstand, når den udløses. |
0 |
| [11:8] | Reserveret | MRO | Reserveret | 0 |
|
7 |
KAMP |
MRW |
Matchende politikkonfiguration:
0: Match, når triggerværdien er lig med TDATA2; 1: Triggerværdien matcher den høje m bit af TDATA2, hvor m = 31–n, og n er det første 0-citat af TDATA2 (startende fra den lave bit). |
0 |
|
6 |
M |
MRW |
Aktiver flip-flop i M-tilstand:
0: Deaktiver triggeren i M-tilstand; 1: Aktiver udløseren i M-tilstand. |
0 |
| [5:4] | Reserveret | MRO | Reserveret | 0 |
|
3 |
U |
MRW |
Aktiver trigger i U-tilstand:
0: Deaktiver triggeren i U-tilstand; 1: Aktiver udløseren i U-tilstand. |
0 |
|
2 |
UDFØR |
MRW |
Instruktion læse adresse trigger aktiveret: 0: Deaktiver;
1: Aktiver. |
0 |
|
1 |
BUTIK |
MRW |
Dataskriveadresseudløser aktiveret: 0: Deaktiver;
1: Aktiver. |
0 |
|
0 |
LÆS |
MRW |
Udløser for datalæsningsadresse aktiveret: 0: Deaktiver;
1: Aktiver. |
0 |
Debug trigger dataregister 2(tdata2)
Det er kun gyldigt for mikroprocessorer, der understøtter hardware breakpoints og bruges til at gemme den matchende værdi af triggeren.
Tabel 8-14 tdata2 registerdefinition
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | TDATA2 | MRW | Bruges til at gemme matchende værdier. | X |
Debug kontrol og statusregister (dcsr)
Dette register bruges til at kontrollere og registrere driftstilstanden for fejlretningstilstanden. Se afsnit 7.1 for detaljer.
Debug mode program pointer (DPC)
Dette register bruges til at lagre adressen på den næste instruktion, der skal udføres, efter at mikroprocessoren går ind i debugging-tilstanden, dens værdi er forskellig i overensstemmelse med årsagerne til at gå ind i debugging-tilstanden, og opdateringsreglerne er også forskellige. Se afsnit 7.1 for en detaljeret beskrivelse.
Fejlretningstilstand staging register (dscratch0-1)
Denne gruppe af registre bruges til midlertidig lagring af data i fejlretningstilstand.
Tabel 8-15 dscratch0-1 register definitioner
| Bit | Navn | Adgang | Beskrivelse | Nulstil værdi |
| [31:0] | dscratch | DRW | Fejlretningstilstand data staging værdi | 0 |
Brugerdefineret CSR Register
Brugertilstand globalt afbrydelsesaktiveringsregister (gintr)
- Dette register bruges til at styre aktiveringen og masken af global afbrydelse. Aktiveringen og masken af global afbrydelse i maskintilstand kan styres af MIE- og MPIE-bits i status, men dette register kan ikke betjenes i brugertilstand.
- Mens den globale interrupt aktiverer register gintenr er kortlægningen af MIE og MPIE i status.
- I brugertilstand kan hensigt bruges til at indstille og slette MIE og MPIE, som beskrevet i afsnit 3.2 for detaljer.
Note
- Globale afbrydelser inkluderer ikke umaskerede afbrydelser NMI og undtagelser.
Afbryd systemkontrolregister (intsyscr)
Dette register bruges hovedsageligt til at konfigurere interrupt-nesting-dybde, hardware-stackpresning og andre relaterede funktioner, som beskrevet i afsnit 3.2 for detaljer.
Mikroprocessorkonfigurationsregister (corecfgr)
Dette register bruges til at kontrollere, om NMI-afbrydelsen er tilladt, efter at afbrydelsen løber over, og om afbrydelsesanmodningen slettes, når hegnsinstruktionen udføres. Se venligst afsnit 3.2 for den specifikke definition.
Afbryd indlejret kontrolregister (inestcr)
Dette register bruges til at angive afbrydelsesindlejringstilstanden, og om den løber over eller ej, og til at kontrollere det maksimale redeniveau. Se venligst afsnit 3.2 for den specifikke definition.
Dokumenter/ressourcer
![]() |
WH V3 mikroprocessor [pdfBrugermanual V3 mikroprocessor, V3, mikroprocessor |





