Logo-ul WH

Microprocesor WH V3

WH-V3-Microprocesor-PRO

Specificații

  • Model de microprocesor: QingKeV3
  • Versiune: V1.2
  • Caracteristici ISA:
    • Pipeline FPU
    • Predicția ramurilor
    • Întrerupeți suportul
    • HPE Physical Memory Protection (PMP)
    • Mod consum redus de energie
    • Depanare set de instrucțiuni extins

Instrucțiuni de utilizare a produsului

Pesteview a microprocesorului QingKe V3

Microprocesoarele din seria QingKe V3 includ modelele V3A, V3B și V3C. Fiecare model are caracteristici și diferențe specifice în funcție de aplicația sa.

Set de instrucțiuni

Setul de instrucțiuni RV32I include 32 de seturi de registre de la x0 la x31. Seria V3 nu acceptă extensia în virgulă mobilă (F). Fiecare registru are o dimensiune de 32 de biți.

Set de înregistrare

Setul de registre RV32I este format din următoarele registre.

  • x0: Hardcoded 0
  • x1: Adresa expeditorului
  • x2: indicator de stivă
  • x3: Indicator global
  • x4: Indicatorul de fir
  • x5-x7: Registre temporare
  • x8: Salvați indicatorul de registru/cadru
  • x9: Salvați registrul/parametrii funcției/valorile returnate
  • x10-x11: Parametrii funcției
  • x12-x17: Salvați registre
  • x18-x27: Registre temporare
  • x28-x31: Registrele apelant/apelat

Mod privilegiu

Arhitectura standard RISC-V include trei moduri privilegiate: modul mașină, modul supervizor și modul utilizator. Microprocesoarele din seria QingKe V3 acceptă modul Machine și modul Supervisor.

Întrebări frecvente

Î: Care sunt diferitele modele ale microprocesoarelor din seria QingKe V3?

A: Seria QingKe V3 include modelele V3A, V3B și V3C, fiecare cu caracteristici și diferențe specifice detaliate în manualul de utilizare.

Î: Câte seturi de registre sunt disponibile în setul de instrucțiuni RV32I?

A: Setul de instrucțiuni RV32I oferă 32 de seturi de registre de la x0 la x31.

Î: Ce moduri privilegiate sunt acceptate de microprocesorul QingKe V3?

A: Microprocesoarele din seria QingKe V3 acceptă modul Machine și modul Supervisor ca parte a arhitecturii RISC-V.

Pesteview

Microprocesoarele din seria QingKe V3 sunt microprocesoare MCU de uz general pe 32 de biți, auto-dezvoltate, bazate pe arhitectura standard de set de instrucțiuni RISC-V. Această serie include V3A, V3B și V3C, dintre care V3A acceptă extensia setului de instrucțiuni standard RV32IMAC și V3B/C acceptă extensia setului de instrucțiuni standard RV32IMCB și extensia setului de instrucțiuni personalizat XW. Ambele suportă multiplicarea într-un singur ciclu și diviziunea hardware, în plus față de stiva de presiune hardware (HPE), întrerupere fără masă (VTF), interfețe de depanare simplificate cu 1 și 2 fire, instrucțiuni „WFE” și alte caracteristici speciale. În plus, acceptă și Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), interfață simplificată de depanare cu 1/2 fire și suport pentru instrucțiunile „WFE”.

Caracteristici

Caracteristici Descriere
ISA RV32IM[A]C[B]
Conductă 3
FPU Nu este acceptat
Predicția ramurilor Predicția ramurilor statice
Întrerupe Acceptă un total de 256 de întreruperi, inclusiv excepții și acceptă VTF
HPE Suportă 2 niveluri de HPE
Protecția memoriei fizice (PMP) Sprijinit
Mod consum redus de energie Suportă modurile Sleep și Deep sleep și acceptă metodele de somn WFI și WFE
Set de instrucțiuni extins Sprijinit
Depanați SDI cu 1/2 fire, depanare standard RISC-V

Pesteview

Microprocesoarele din seria QingKe V3 includ V3A, V3B și V3C, există unele diferențe între serii în funcție de aplicație, diferențele specifice sunt detaliate în Tabelul 1-1.

Tabelul 1-1 Pesteview a microprocesorului QingKe V3

Caracteristică Model ISA Numărul de niveluri HPE Întreruperi cuibărit număr de niveluri VTF numărul de canale Conductă Vector modul de masă Instrucțiuni extinse (XW) Numărul de zone de protecție a memoriei
V3A RV32IMAC 2 2 4 3 Instruire × ×
V3B RV32IMCB 2 2 4 3 Adresă/Instrucțiune ×
V3C RV32IMCB 2 2 4 3 Adresă/Instrucțiune 4

Nota: Comutarea sarcinilor sistemului de operare utilizează în general push push, care nu se limitează la numărul de niveluri

Set de instrucțiuni

  • Microprocesoarele din seria QingKe V3 urmează arhitectura standard RISC-V Instruction Set Architecture (ISA). Documentația detaliată a standardului poate fi găsită în „Manualul setului de instrucțiuni RISC-V, volumul I: ISA la nivel de utilizator, versiunea documentului 2.2” de pe RISC-V International website-ul. Setul de instrucțiuni RISC-V are o arhitectură simplă și acceptă un design modular, permițând combinații flexibile bazate pe diferite nevoi, iar seria V3 acceptă următoarele extensii de set de instrucțiuni.
  • RV32: Arhitectură pe 32 de biți, lățime de biți a registrului de uz general de 32 de biți
  • I: Sprijină operația de modelare, cu 32 de registre de modelare
  • M: Sprijină instrucțiuni de înmulțire și împărțire pentru modelare
  • A: Suport comenzi atomice
  • C: Suportă instrucțiuni de compresie pe 16 biți
  • B: Suport pentru instrucțiuni de manipulare a biților
  • XW: Instrucțiuni de compresie pe 16 biți pentru operații cu auto-extindere pe octeți și jumătate de cuvânt

Nota:

  • Subsetul de instrucțiuni acceptat de diferite modele poate fi diferit, vă rugăm să consultați Tabelul 1-1 pentru detalii;
  • Pentru a îmbunătăți și mai mult densitatea codului, extindeți subsetul XW, adăugați următoarele instrucțiuni de compresie c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shop , a cărui utilizare trebuie să se bazeze pe compilatorul MRS sau pe lanțul de instrumente pe care îl oferă;
  • V3B acceptă extragerea unei instrucțiuni de cuvânt (32 de biți) dintr-un cuvânt dublu (64 de biți) și extragerea unei instrucțiuni de cuvânt (32 de biți) dintr-un rezultat de înmulțire (64 de biți). Metoda de utilizare specifică se poate referi la funcția de bibliotecă și poate coopera cu compilatorul MRS sau lanțul de instrumente furnizat de acesta;
  • V3B/C acceptă instrucțiuni de copiere în memorie. Pentru utilizare specifică, vă rugăm să consultați funcția de bibliotecă și să cooperați cu compilatorul MRS sau cu lanțul de instrumente al acestuia.

Set de înregistrare

RV32I are 32 de seturi de registre de la x0-x31. Seria V3 nu acceptă extensia „F”, adică nu există un set de registru în virgulă mobilă. În RV32, fiecare registru are 32 de biți. Tabelul 1-2 de mai jos listează registrele RV32I și descrierile acestora.

Tabelul 1-2 Registru RISC-V

Registru Nume ABI Descriere Depozitar
x0 zero Hardcoded 0
x1 ra Adresa expeditorului Apelant
x2 sp Indicator de stivă Callee
x3 GP Indicator global
x4 tp Indicatorul de fir
x5-7 t0-2 Registrul temporar Apelant
x8 s0/fp Salvați indicatorul de registru/cadru Callee
x9 s1 Salvați înregistrarea Callee
x10-11 a0-1 Parametrii funcției/valorile de returnare Apelant
x12-17 a2-7 Parametrii funcției Apelant
x18-27 a2-11 Salvați înregistrarea Callee
X28-31 t3-6 Registrul temporar Apelant

Atributul Caller din tabelul de mai sus înseamnă că procedura apelată nu salvează valoarea registrului, iar atributul Callee înseamnă că procedura apelată salvează registrul.

Mod privilegiu

  • Arhitectura standard RISC-V include trei moduri privilegiate: modul mașină, modul supervizor și modul utilizator, așa cum se arată în Tabelul 1-3 de mai jos.
  • Modul mașină este obligatoriu, iar celelalte moduri sunt opționale. Pentru detalii, puteți consulta Manualul setului de instrucțiuni RISC-V Volumul II: Arhitectură privilegiată”, care poate fi descărcat gratuit de la RISC-V International. website-ul.

Tabelul 1-3 Mod de privilegiu arhitectura RISC-V

Cod Nume Abrevieri
0b00 Modul utilizator U
0b01 Model de supraveghetor S
0b10 Rezervat Rezervat
0b11 Modul mașină M
  • Microprocesoarele din seria QingKe V3 acceptă două dintre aceste moduri privilegiate.

Modul mașină

  • Modul Mașină are cea mai înaltă autoritate, programul în acest mod poate accesa toate Registrul de control și stare (CSR), dar poate accesa și toate zonele de adrese fizice.
  • Valoarea implicită de pornire este în modul mașină, când execuția mret (instrucțiunea de returnare în modul mașină) revine, în funcție de starea registrului CSR (registrul de stare a modului mașină) în bitul MPP, dacă MPP = 0b00, apoi ieșiți din modul mașină în modul Utilizator, MPP = 0b11, apoi continuați să păstrați modul Mașină.

Modul utilizator

  • Modul utilizator are cel mai mic privilegiu și numai registre limitate CSR pot fi accesate în acest mod. Când apare o excepție sau o întrerupere, microprocesorul trece din modul Utilizator în modul Mașină pentru a gestiona excepțiile și întreruperile.

Registrul CSR

O serie de registre CSR sunt definite în arhitectura RISC-V pentru a controla și înregistra starea de funcționare a microprocesorului. Aceste CSR-uri pot fi extinse cu 4096 de registre folosind un spațiu intern dedicat de codificare a adreselor de 12 biți. Și utilizați cele două CSR mari[11:10] pentru a defini permisiunea de citire/scriere a acestui registru, 0b00, 0b01, 0b10 pentru citire/scriere permisă și 0b11 pentru numai citire. Utilizați cei doi biți CSR[9:8] pentru a defini cel mai scăzut nivel de privilegiu care poate accesa acest registru, iar valoarea corespunde modului de privilegiu definit în Tabelul 1-3. Registrele CSR implementate în microprocesorul QingKe V3 sunt detaliate în Capitolul 8.

Excepţie

Mecanism de excepție, care este un mecanism pentru interceptarea și gestionarea „evenimentelor de operare neobișnuite”. Microprocesoarele din seria QingKe V3 sunt echipate cu un sistem de răspuns la excepții care poate gestiona până la 256 de excepții, inclusiv întreruperi. Când are loc o excepție sau o întrerupere, microprocesorul poate răspunde rapid și gestiona evenimentele de excepție și întrerupere.

Tipuri de excepții

Comportamentul hardware al microprocesorului este același indiferent dacă apare o excepție sau o întrerupere. Microprocesorul suspendă programul curent, trece la manevrătorul de excepții sau întreruperi și revine la programul suspendat anterior când procesarea este completă. În linii mari, întreruperile fac și ele parte din excepții. Dacă exact apariția curentă este o întrerupere sau o excepție poate fi viewprin excepția modului Machine cauza registrului cauza. mcause[31] este câmpul de întrerupere, care este folosit pentru a indica dacă cauza excepției este o întrerupere sau o excepție. mcause[31]=1 înseamnă întrerupere, mcause[31]=0 înseamnă excepție. mcause[30:0] este codul de excepție, care este folosit pentru a indica cauza specifică a excepției sau numărul de întrerupere, așa cum se arată în tabelul următor.

Tabelul 2-1 Codurile de excepție ale microprocesorului V3

Întrerupe Excepţie coduri Sincron/Asincron Motivul excepției
1 0-1 Rezervat
1 2 Asincron precis NMI se întrerupe
1 3-11 Rezervat
1 12 Asincron precis SysTick întrerupe
1 13 Rezervat
1 14 Sincron Software-ul se întrerupe
1 15 Rezervat
1 16-255 Asincron precis Întreruperea externă 16-255
0 0 Sincron Alinierea greșită a adresei instrucțiunilor
0 1 Sincron Eroare de acces la comanda Preluare
0 2 Sincron Instrucțiuni ilegale
0 3 Sincron Puncte de întrerupere
0 4 Sincron Încărcați alinierea greșită a adresei de acces la instrucțiuni
0 5 Asincron fără precizie Eroare de acces la comanda de încărcare
0 6 Sincron Adresă de acces la instrucțiunile Store/AMO nealiniată
0 7 Asincron fără precizie Eroare de acces la comanda Store/AMO
0 8 Sincron Apel de mediu în modul Utilizator
0 11 Sincron Apel de mediu în modul Mașină
  • Sincron” din tabel înseamnă că o instrucțiune poate fi localizată exact acolo unde este executată, cum ar fi o instrucțiune de pauză sau de apel, și fiecare execuție a acelei instrucțiuni va declanșa o excepție. „Asincron” înseamnă că nu este posibilă identificarea unei instrucțiuni, iar valoarea instrucțiunii PC poate fi diferită de fiecare dată când apare o excepție. „Asincron precis” înseamnă că o excepție poate fi localizată exact la limita unei instrucțiuni, adică starea după executarea unei instrucțiuni, cum ar fi o întrerupere externă. „Asincron fără precizie” înseamnă că limita unei instrucțiuni nu poate fi localizată cu precizie și poate starea după o instrucțiune a fost întreruptă la jumătatea execuției, cum ar fi o eroare de acces la memorie.
  • Accesul la memorie durează, iar microprocesorul de obicei nu așteaptă sfârșitul accesului atunci când accesează memorie, ci continuă să execute instrucțiunea, când excepția erorii de acces apare din nou, microprocesorul a executat deja instrucțiunile ulterioare și nu poate fi precis. situat.

Se introduce Excepție

Când programul este în proces de funcționare normală, dacă dintr-un motiv oarecare, declanșează o excepție sau o întrerupere. Comportamentul hardware al microprocesorului în acest moment poate fi rezumat după cum urmează.

  1. Suspendați fluxul curent al programului și treceți la execuția funcțiilor de gestionare a excepțiilor sau întreruperilor. Adresa de bază de intrare și modul de adresare al funcției de excepție sau întrerupere sunt definite de registrul de adrese de bază de intrare de excepție mtvec. mtvec[31:2] definește adresa de bază a funcției de excepție sau de întrerupere. mtvec[1:0] definește modul de adresare al funcției de gestionare. când mtvec[1:0]=0, toate excepțiile și întreruperile folosesc o intrare unificată, adică, când apare o excepție sau întrerupere, se întoarce la mtvec[31:2] care definește adresa de bază de executat. Când mtvec[1:0]=1, excepțiile și întreruperile folosesc modul tabel vectorial, adică fiecare excepție și întrerupere este numerotată, iar adresa este compensată în funcție de numărul de întrerupere*4, iar când apare o excepție sau întrerupere, aceasta este deplasată la adresa de bază definită de mtvec[31:2] + numărul de întrerupere*4 Execuție. Tabelul vector de întrerupere conține o instrucțiune pentru a trece la funcția de gestionare a întreruperilor sau poate fi alte instrucțiuni.
  2. Actualizați registrul CSR
    • Când este introdusă o excepție sau o întrerupere, microprocesorul actualizează automat registrele CSR relevante, inclusiv registrul de cauză a excepției modului Mașină mcause, registrul pointerului de excepție al modului Mașină mepc, registrul metal al valorii excepției din modul Mașină și starea registrului de stare a modului Mașină.

Actualizați mcause

După cum sa menționat anterior, după introducerea unei excepții sau a unei întreruperi, valoarea acesteia reflectă tipul de excepție sau numărul de întrerupere curent, iar software-ul poate citi această valoare de registru pentru a verifica cauza excepției sau pentru a determina sursa întreruperii, așa cum este detaliat în Tabelul 2. -1.

Actualizați mepc

  • Definiția standard a adresei de retur a microprocesorului după ieșirea dintr-o excepție sau întrerupere este stocată în mepc.
  • Deci, atunci când are loc o excepție sau o întrerupere, hardware-ul actualizează automat valoarea mepc la valoarea curentă a instrucțiunii PC atunci când este întâlnită excepția sau la următoarea valoare PC a instrucțiunii pre-executate înainte de întrerupere.
  • După ce excepția sau întreruperea este procesată, microprocesorul folosește valoarea sa salvată ca adresă de retur pentru a reveni la locația întreruperii pentru a continua execuția.
  • Cu toate acestea, merită remarcat faptul că.
  1. MEPC este un registru care poate fi citit și inscriptibil, iar software-ul poate modifica, de asemenea, valoarea pentru a modifica locația pointerului PC care rulează după întoarcere.
  2. Când apare o întrerupere, adică atunci când cauza excepției înregistrează mcause[31]=1, valoarea hărților este actualizată la valoarea PC a următoarei instrucțiuni neexecutate în momentul întreruperii.
    • Când apare o excepție, valoarea hărților este actualizată la valoarea de instrucțiune PC a excepției curente atunci când excepția cauzează registrul mcause[31]=0. Deci, în acest moment în care excepția revine, dacă revenim direct folosind valoarea mepc, continuăm să executăm instrucțiunea care a generat excepția anterior și, în acest moment, vom continua să introducem excepția. De obicei, după ce gestionăm excepția, putem modifica valoarea lui mepc la valoarea următoarei instrucțiuni neexecutate și apoi revenim. De example, dacă provocăm o excepție din cauza call/break, după gestionarea excepției, deoarece recall/break (c.ebreak este de 2 octeți) este o instrucțiune de 4 octeți, avem nevoie doar de software pentru a modifica valoarea mepc la mepc +4 (c.ebreak este mepc+2) și apoi întoarcere.

Actualizați mtval

Când sunt introduse excepții și întreruperi, hardware-ul va actualiza automat valoarea mtval, care este valoarea care a cauzat excepția. Valoarea este de obicei.

  1. Dacă o excepție este cauzată de un acces la memorie, hardware-ul va stoca adresa accesului la memorie la momentul excepției în mtval.
  2. Dacă excepția este cauzată de o instrucțiune ilegală, hardware-ul va stoca codul de instrucțiune al instrucțiunii în mtval.
  3. Dacă excepția este cauzată de un punct de întrerupere hardware, hardware-ul va stoca valoarea PC la punctul de întrerupere în mtval.
  4. Pentru alte excepții, hardware-ul setează valoarea mtval la 0, cum ar fi break, excepția cauzată de instrucțiunea de apel.
  5. Când introduceți întrerupere, hardware-ul setează valoarea mtval la 0.

Actualizați mstatus

La introducerea de excepții și întreruperi, hardware-ul actualizează anumiți biți în mstatus.

  1. MPIE este actualizat la valoarea MIE înainte de a introduce excepția sau întrerupere, iar MPIE este folosit pentru a restabili MIE după ce excepția și întreruperea s-au încheiat.
  2. MPP este actualizat la modul privilegiat înainte de a introduce excepții și întreruperi, iar după terminarea excepțiilor și întreruperile, MPP este folosit pentru a restabili modul privilegiat anterior.
  3. Microprocesorul QingKe V3 acceptă imbricarea întreruperilor în modul Machine, iar MIE nu va fi șters după introducerea excepțiilor și întreruperilor.

Actualizați modul de privilegii al microprocesorului

  • Când apar excepții și întreruperi, modul privilegiat al microprocesorului este actualizat la modul Machine.

Funcții de tratare a excepțiilor

  • La introducerea unei excepții sau întreruperi, microprocesorul execută programul din adresa și modul definite de registrul mtvec. Când folosește intrarea unificată, microprocesorul preia o instrucțiune de salt de la adresa de bază definită de mtvec[31:2] pe baza valorii mtvec[1] sau primește adresa de intrare a funcției de gestionare a excepțiilor și a întreruperilor și o execută în schimb. . În acest moment, funcția de gestionare a excepțiilor și a întreruperilor poate determina dacă cauza este o excepție sau o întrerupere pe baza valorii mcause[31], iar tipul și cauza excepției sau întreruperea corespunzătoare pot fi judecate după codul de excepție. și tratate în consecință.
  • Când utilizați adresa de bază + numărul de întrerupere *4 pentru offset, hardware-ul sare automat la tabelul vectorial pentru a obține adresa de intrare a excepției sau funcției de întrerupere pe baza numărului de întrerupere și sare pentru a o executa.

Excepție Ieșire

  • După ce gestionarea excepției sau întreruperilor este finalizată, este necesar să părăsiți programul de service. După ce a introdus excepții și întreruperi, microprocesorul intră în modul Mașină din modul Utilizator, iar procesarea excepțiilor și întreruperilor este, de asemenea, finalizată în modul Mașină. Când este necesar să ieșiți din excepții și întreruperi, este necesar să utilizați instrucțiunea mret pentru a reveni. În acest moment, hardware-ul microprocesorului va efectua automat următoarele operații.
  • Pointer-ul PC este restaurat la valoarea registrului CSR mepc, adică execuția începe la adresa instrucțiunii salvate de mepc. Este necesar să se acorde atenție operațiunii de compensare a mepc după finalizarea gestionării excepțiilor.
  • Actualizați starea registrului CSR, MIE este restaurat la MPIE și MPP este folosit pentru a restabili modul privilegiat al microprocesorului anterior.
  • Întregul proces de răspuns la excepție poate fi descris în următoarea Figura 2-1.WH-V3-Microprocesor-fig-1

PFIC și Controlul întreruperii

  • Microprocesorul QingKe V3 este proiectat cu un controler programabil de întrerupere rapidă (PFIC) care poate gestiona până la 256 de întreruperi, inclusiv excepții.
  • Primele 16 dintre ele sunt fixate ca întreruperi interne ale microprocesorului, iar restul sunt întreruperi externe, adică numărul maxim de întreruperi externe poate fi extins la 240. Principalele sale caracteristici sunt următoarele.
  • 240 de întreruperi externe, fiecare cerere de întrerupere are biți independenți de declanșare și control al măștii, cu biți de stare dedicati
  • Prioritatea programabilă de întrerupere acceptă 2 niveluri de imbricare
  • Întreruperea rapidă specială de intrare/ieșire a mecanismului, stivuire automată hardware și recuperare, adâncime HPE maximă de 2 niveluri
  • Mecanism de răspuns la întrerupere Vector Table Free (VTF), acces direct programabil pe 2 canale la adresele vectorului de întrerupere
  • Nota: Adâncimea maximă de imbricare și adâncimea HPE acceptate de controlerele de întrerupere variază pentru diferite modele de microprocesoare, care pot fi găsite în Tabelul 1-1.
  • Tabelul vectorial al întreruperilor și excepțiilor este prezentat în Tabelul 3-1 de mai jos.

Tabelul 3-1 Tabelul vectorului de excepții și întreruperi

Număr Prioritate Tip Nume Descriere
0
1
2 -5 Fix NMI Întreruperea nemascabilă
3 -4 Fix EXC Întreruperea excepției
4
5 -3 Fix ECALL-M Întreruperea apel invers în modul aparat
6-7
8 -2 Fix ECALL-U Întreruperea apelului în modul utilizator
9 -1 Fix PUNCT DE PARURU Întreruperea apelului pentru punctul de întrerupere
10-11
12 0 Programabil SysTick Întreruperea temporizatorului sistemului
13
14 1 Programabil SWI Întreruperea software-ului
15
16-255 2-241 Programabil Întreruperea externă Întreruperea externă 16-255

Nota: ECALL-M, ECALL-U și BREAKPOINT sunt toate tipuri diferite de excepții EXC, care sunt independente în V3B/C pentru ușurință în utilizare, iar cele trei adrese de intrare de mai sus sunt partajate cu EXC în V3A.

Set de registru PFIC

Tabelul 3-2 Registre PFIC

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_ISRx 0xE000E000

-0xE000E01C

RO Întreruperea registrului de stare de activare x 0x00000000
PFIC_IPRx 0xE000E020

-0xE000E03C

RO Întreruperea registrului de stare în așteptare x 0x00000000
PFIC_ITHRESDR 0xE000E040 RW Registrul de configurare a pragului de prioritate de întrerupere 0x00000000
PFIC_VTFBADDRR 0xE000E044 RW Registrul adresei de bază VTF

Notă: Valabil numai pentru V3A

0x00000000
PFIC_CFGR 0xE000E048 RW Întreruperea registrului de configurare

Notă: Valabil numai pentru V3A

0x00000000
PFIC_GISR 0xE000E04C RO Întrerupeți registrul de stare globală 0x00000002
 

PFIC_VTFIDR

 

0xE000E050

 

RW

Registrul de configurare a ID-ului de întrerupere VTF

Notă: Valabil numai pentru V3B/C.

 

0x00000000

PFIC_VTFADDRRx 0xE000E060

-0xE000E06C

RW Registrul de adrese VTF x offset 0xXXXXXXXXX
PFIC_IENRx 0xE000E100

-0xE000E11C

WO Întreruperea activării registrului de setare x 0x00000000
PFIC_IRERx 0xE000E180

-0xE000E19C

WO Activare întrerupere șterge registrul x 0x00000000
PFIC_IPSRx 0xE000E200

-0xE000E21C

WO Întreruperea registrului de setare în așteptare x 0x00000000
PFIC_IPRRx 0xE000E280

-0xE000E29C

WO Întreruperea așteaptă ștergerea registrului x 0x00000000
PFIC_IACTRx 0xE000E300

-0xE000E31C

RO Registrul stării activării întreruperii x 0x00000000
PFIC_IPRIORx 0xE000E400

-0xE000E43C

RW Întreruperea registrului de configurare cu prioritate 0x00000000
PFIC_SCTLR 0xE000ED10 RW Registrul de control al sistemului 0x00000000

Nota:

  1. NMI, EXC, ECALL-M, ECALL-U și BREAKPOINT sunt întotdeauna activate implicit.
  2. ECALL-M, ECALL-U și BREAKPOINT sunt un caz de EXC.
  3. NMI, EXC, ECALL-M, ECALL-U și BREAKPOINT acceptă întreruperi în așteptarea operațiunii de ștergere și setare, dar nu întrerupe activarea operațiunii de ștergere și setare.

Fiecare registru este descris după cum urmează:

Starea de activare a întreruperii și registrele de stare de întrerupere în așteptare (PFIC_ISR<0-7>/PFIC_IPR<0-7>)

Nume Adresa de acces Acces Descriere Resetează valoarea
 PFIC_ISR0  0xE000E000  RO Întreruperea 0-31 activează registrul de stare, un total de 32 de biți de stare [n], indicând #n întreruperea activează starea

Notă: NMI și EXC sunt activate implicit

 Pentru V3A: 0x0000000C

Pentru V3B/C: 0x0000032C

PFIC_ISR1 0xE000E004 RO Întreruperea 32-63 de activare a registrului de stare, un total de 32 de biți de stare 0x00000000
PFIC_ISR7 0xE000E01C RO Întreruperea 224-255 activează registrul de stare, un total de 32 de biți de stare 0x00000000
PFIC_IPR0 0xE000E020 RO Stare de întrerupere 0-31 în așteptare 0x00000000
registru, un total de 32 de biți de stare [n], indicând starea în așteptare a întreruperii #n
PFIC_IPR1 0xE000E024 RO Întreruperea 32-63 registre de stare în așteptare, 32 de biți de stare în total 0x00000000
PFIC_IPR7 0xE000E03C RO Întreruperea 244-255 registru de stare în așteptare, 32 de biți de stare în total 0x00000000

Două seturi de registre sunt utilizate pentru a activa și dezactiva întreruperile corespunzătoare.

Setarea de activare a întreruperii și ștergerea registrelor (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_IENR0 0xE000E100 WO Întreruperea 0-31 permite setarea registrului, un total de 32 de biți de setare [n], pentru setarea de activare a întreruperii #n

Nota: NMI şi EXC sunt activat implicit

 

 

 

0x00000000

PFIC_IENR1 0xE000E104 WO Întrerupeți 32-63 pentru a activa registrul de setare, un total de 32 de biți de setare 0x00000000
PFIC_IENR7 0xE000E11C WO Setarea de activare a întreruperii 224-255

registru, un total de 32 de biți de setare

0x00000000
 PFIC_IRER0  0xE000E180  WO Întreruperile 0-31 permit ștergerea registrului, un total de 32 de biți de ștergere [n], pentru întrerupere #n activarea ștergerii Notă: NMI și EXC nu pot fi operate  

 

0x00000000

PFIC_IRER1 0xE000E184 WO Întreruperea 32-63 permite un registru clar, un total de 32 de biți clari 0x00000000
PFIC_IRER7 0xE000E19C WO Întreruperea 244-255 permite un registru clar, un total de 32 de biți clari 0x00000000

Două seturi de registre sunt utilizate pentru a activa și dezactiva întreruperile corespunzătoare.

Întreruperea setării în așteptare și ștergerea registrelor (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)

Nume Adresa de acces Acces Descriere Resetează valoarea
 

PFIC_IPSR0

 

0xE000E200

 

WO

Întreruperea 0-31 registrul de setare în așteptare, 32

setarea biților [n], pentru întrerupere #n în așteptare

 

0x00000000

PFIC_IPSR1 0xE000E204 WO Întreruperea 32-63 în așteptarea registrului de configurare,

total 32 de biți de configurare

0x00000000
PFIC_IPSR7 0xE000E21C WO Întreruperea 224-255 în așteptare setare

registru, 32 de biți de setare în total

0x00000000
 

PFIC_IPRR0

 

0xE000E280

 

WO

Întreruperea 0-31 în așteptarea registrului de ștergere, un total de 32 de biți de ștergere [n], pentru întrerupere #n

în așteptarea clarării

 

0x00000000

PFIC_IPRR1 0xE000E284 WO Întreruperea 32-63 în așteptarea registrului clar,

total 32 de biți clari

0x00000000
PFIC_IPRR7 0xE000E29C WO Întreruperea 244-255 în așteptarea registrului clar,

total 32 de biți clari

0x00000000

Când microprocesorul activează o întrerupere, aceasta poate fi setată direct prin registrul de întrerupere în așteptare pentru a declanșa întrerupere. Utilizați registrul de întrerupere în așteptare pentru a șterge declanșatorul în așteptare.

Registrul stării activării întreruperii (PFIC_IACTR<0-7>)

Nume Adresa de acces Acces Descriere Resetează valoarea
 PFIC_IACTR0  0xE000E300  RO Întreruperea 0-31 activează registrul de stare cu 32 de biți de stare [n], indicând că întreruperea #n este în curs de executare  0x00000000
 PFIC_IACTR1  0xE000E304  RO Întrerupe 32-63 registre de stare de activare, 32 de biți de stare

total

 

0x00000000

 PFIC_IACTR7  0xE000E31C  RO Întrerupeți 224-255 registre de stare de activare, un total de 32 de biți de stare  0x00000000

Fiecare întrerupere are un bit de stare activ care este configurat când întreruperea este introdusă și șters de hardware când piața revine.

Prioritatea întreruperii și registrele de prag de prioritate (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_IPRIOR0 0xE000E400 RW Întreruperea configurației cu prioritate 0. V3A: [7:4]: Biți de control prioritar Dacă configurația nu este imbricată, nici un bit de preempțiune Dacă imbricarea este configurată, bit7 este bitul preempțiat. [3:0]: Rezervat, fixat la 0  V3B: [7:6]: Biți de control prioritar Dacă configurația nu este imbricată, nici un biți preventiv configurați, toți biții sunt preempționați, dar sunt permise să apară până la două niveluri de întreruperi [5:0]: Rezervat, fixat la 0
V3C:
[7:5]: Biți de control prioritar
Dacă configurația nu este imbricată, nu există biți preventivi
Dacă sunt configurați imbricați, toți biții sunt preempționați, dar sunt permise să apară până la două niveluri de întreruperi [4:0]: Rezervat, fixat la 0 Notă: Cu cât valoarea priorității este mai mică, cu atât prioritatea este mai mare. Dacă aceeași întrerupere cu prioritate de preempțiune se blochează în același timp, întreruperea cu prioritate mai mare va fi executată mai întâi.
0x00
PFIC_IPRIOR1 0xE000E401 RW Setarea priorității întrerupe 1, aceeași funcție ca PFIC_IPRIOR0 0x00
PFIC_IPRIOR2 0xE000E402 RW Setarea priorității întrerupe 2, aceeași funcție ca PFIC_IPRIOR0
PFIC_IPRIOR254 0xE000E4FE RW Setarea priorității întrerupe 254, aceeași funcție ca PFIC_IPRIOR0 0x00
PFIC_IPRIOR255 0xE000E4FF RW Setarea priorității întrerupe 255, aceeași funcție ca PFIC_IPRIOR0 0x00
PFIC_ITHRESDR 0xE000E040 RW Setarea pragului priorității întreruperii

V3A:

[31:8]: Rezervat, fixat la 0 [7:4]: Prag de prioritate [3:0]: Rezervat, fixat la 0

 V3B:

[31:8]: Rezervat, fixat la 0 [7:5]: Prag de prioritate [4:0]: Rezervat, fixat la 0

 V3C:

[31:8]: Rezervat, fixat la 0 [7:5]: Prag de prioritate [4:0]: Rezervat, fixat la 0

Nota: Pentru întreruperi cu valoare de prioritate ≥ prag, funcția de serviciu de întrerupere nu este executată atunci când are loc o blocare, iar când acest registru este 0, înseamnă că registrul de prag este invalid.

0x00

Registrul de configurare a întreruperii (PFIC_CFGR)

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_CFGR 0xE000E048 RW Întreruperea registrului de configurare 0x00000000

Acest registru este valabil numai pentru V3A, biții săi sunt definiți astfel:

Pic Nume Acces Descriere Resetează valoarea
[31:16] COD CHEIE WO Corespunzând diferiților biți de control al țintei, datele corespunzătoare de identificare a accesului de securitate trebuie să fie scrise simultan pentru a fi modificate, iar datele de citire sunt fixate la 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF。 0
[15:8] Rezervat RO Rezervat 0
7 SYSRESET WO Resetare sistem (scriere simultană pe KEY3). Ștergere automată 0.

Scrierea 1 este validă, scrierea 0 este invalidă.

Notă: Aceeași funcție ca bitul SYSRESET al registrului PFIC_SCTLR.

0
6 PFICRESET WO Resetarea modulului PFIC. Ștergere automată 0.

Scrierea 1 este validă, scrierea 0 este invalidă.

0
5 EXPRES WO Întreruperea excepției în așteptare la ștergere (scriere simultană pe KEY2)

Scrierea 1 este validă, scrierea 0 este invalidă.

0
4 EXCSET WO Setare de întrerupere a excepției în așteptare (scriere simultană la KEY2)

Scrierea 1 este validă, scrierea 0 este invalidă.

0
3 NMIRESET WO Întreruperea NMI în așteptare la ștergere (scriere simultană pe KEY2)

Scrierea 1 este validă, scrierea 0 este invalidă.

0
2 NMISET WO Setare de întrerupere NMI în așteptare (scriere simultană la KEY2)

Scrierea 1 este validă, scrierea 0 este invalidă.

0
1 NESTCTRL RW Imbricarea întreruperii permite controlul.

1: oprit; 0: activat (scriere sincronă la KEY1)

0
0 HWSTKCTRL RW HPE activați controlul

1: oprit; 0: activat (scriere sincronă la KEY1)

0

Întreruperea registrului de stare globală (PFIC_GISR)

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_GISR 0xE000E04C RO Întrerupeți registrul de stare globală 0x00000000

Oamenii săi sunt definiți ca

Pic Nume Acces Descriere Resetează valoarea
[31:14] Rezervat RO Rezervat 0
 

 

13

 

 

LOCKSTA

 

 

RO

Dacă procesorul este în prezent într-o stare blocată:

1: Stare blocată;

0: stare neblocata.

Notă: Acest bit este valabil numai pentru V3B/C.

 

 

0

 

 

12

 

 

DBGMODE

 

 

RO

Dacă procesorul este în prezent în stare de depanare: 1: stare de depanare;

0: stare fără depanare.

Notă: Acest bit este valabil numai pentru V3B/C.

 

 

0

 

 

11

 

 

GLOBIE

 

 

RO

Activare întrerupere globală:

1: Activare întrerupere;

0: Dezactivează întrerupere.

Notă: Acest bit este valabil numai pentru V3B/C.

10 Rezervat RO Rezervat 0
9 GPENDSTA RO Dacă o întrerupere este în așteptare.

1: Da; 0: Nu.

0
8 GACTSTA RO Dacă o întrerupere este în curs de executare.

1: Da; 0: Nu.

0
 

 

[7:0]
 

 

NESTSTA

 

 

RO

Starea actuală de imbricare a întreruperii. 0x03: la nivelul 2 întrerupere.

0x01: în întrerupere de nivel 1. 0x00: nu apar întreruperi.

Altele: situație imposibilă.

 

 

0

Adresa de bază ID-ul VTF și registrele de adrese compensate (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)

Nume Adresa de acces Acces Descriere Resetează valoarea
 

 

PFIC_VTFBADDRR

 

 

0xE000E044

 

 

RW

[31:28]: Înaltă 4 biți ai adresei țintă a VTF [27:0]: Rezervat

Acest registru este valabil doar pentru V3A.

 

 

0x00000000

 

 

 

PFIC_VTFIDR

 

 

 

0xE000E050

 

 

 

RW

[31:24]: Numărul VTF 3 [23:16]: Numărul VTF 2 [15:8]: Numărul VTF 1 [7:0]: Numărul VTF 0

Acest registru este valabil doar pentru V3B/C.

 

 

 

0x00000000

 

 

 

 

 

 

 

 

PFIC_VTFADDRR0

 0xE000E060  RW V3A: [31:24]: numărul de întrerupere VTF 0 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0 .

 V3B/C:

[31:1]: adresa VTF 0, aliniat pe 2 octeți [0]:

1: Activați canalul VTF 0

0: Dezactivează

 

 

 

 

 

 

 

Pentru V3A: 0x00000000

Pentru V3B/C: 0xXXXXXXXXX

 

 

 

 

 

 

 

 

PFIC_VTFADDRR1

 

 

 

 

 

 

 

 

0xE000E064

 

 

 

 

 

 

 

 

RW

V3A: [31:24]: Numărul de întrerupere VTF 1 [23:0]: Cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi și [23:20] este fixat la 0.

 

V3B/C:

[31:1]: adresa VTF 1, aliniat pe 2 octeți [0]:

1: Activați canalul VTF 1

0: Dezactivează

 

 

 

 

 

 

 

Pentru V3A: 0x00000000

Pentru V3B/C: 0xXXXXXXXXX

 

 

 

 

 

 

 

 

PFIC_VTFADDRR2

 

 

 

 

 

 

 

 

0xE000E068

 

 

 

 

 

 

 

 

RW

V3A: [31:24]: numărul de întrerupere VTF 2 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0 .

 

V3B/C:

[31:1]: adresa VTF 2, aliniat pe 2 octeți [0]:

1: Activați canalul VTF 2

0: Dezactivează

 

 

 

 

 

 

 

Pentru V3A: 0x00000000

Pentru V3B/C: 0xXXXXXXXXX

PFIC_VTFADDRR3 0xE000E06C RW V3A: Pentru V3A:
[31:24]: Numărul de întrerupere VTF 3 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0.

 V3B/C:

[31:1]: adresa VTF 3, aliniat pe 2 octeți [0]:

1: Activați canalul VTF 3

0: Dezactivează

0x00000000

Pentru V3B/C: 0xXXXXXXXXX

Registrul de control al sistemului (PFIC_SCTLR)

Nume Adresa de acces Acces Descriere Resetează valoarea
PFIC_SCTLR 0xE000ED10 RW Registrul de control al sistemului 0x00000000

Fiecare dintre ele este definit după cum urmează.

Pic Nume Acces Descriere Resetează valoarea
31 SYSRESET WO Resetare sistem, ștergere automată 0. Scrierea 1 este validă, iar scrierea 0 este invalidă.

Notă: Acest bit este valabil numai pentru V3B/C

0
[30:6] Rezervat RO Rezervat 0
5 SETEVENT WO Setați evenimentul pentru a trezi cazul WFE. 0
 

4

SEVONPEND RW Când apare un eveniment sau întrerupe o stare în așteptare, sistemul poate fi trezit după instrucțiunea WFE, sau dacă instrucțiunea WFE nu este executată, sistemul va fi trezit imediat după următoarea execuție a instrucțiunii.

1: Evenimentele activate și toate întreruperile (inclusiv întreruperile neactivate) pot trezi sistemul.

0: Numai evenimentele activate și activate

întreruperile pot trezi sistemul.

 

 

 

0

3 WFITOWFE RW Executați comanda WFI ca și cum ar fi un WFE.

1: Tratați instrucțiunea WFI ulterioară ca instrucțiune WFE.

0: Niciun efect.

0
2 DORMĂ ADÂNC RW Modul de putere redusă al sistemului de control. 0
1: somn profund 0: somn
1 SLEEPONEXI T RW Starea sistemului după ce controlul părăsește programul de service întrerupere.

1: Sistemul intră în modul de consum redus.

0: Sistemul intră în programul principal.

0
0 Rezervat RO Rezervat 0

Registre CSR legate de întreruperi

În plus, următoarele registre CSR au, de asemenea, un impact semnificativ asupra procesării întreruperilor. Întreruperea registrului de control al sistemului (intsyscr)

Acest registru nu este valabil doar pentru V3A:

Nume CSR Adresa Acces Descriere Resetează valoarea
intsyscr 0x804 URW Întreruperea registrului de control al sistemului 0x0000E002

Oamenii săi sunt definiți astfel:

Pic Nume Acces Descriere Resetează valoarea
 

 

 

31

 

 

 

BLOCARE

 

 

 

URO

0: Acest registru poate fi citit și scris în modul utilizator;

1: Acest registru poate fi citit și scris numai în modul mașină.

Notă: Acest bit de configurare este valabil de la

versiunea 1.0 înainte.

 

 

 

0

[30:6] Rezervat URO Rezervat 0x380
 

 

 

 

 

5

 

 

 

 

 

GIHWSTKNEN

 

 

 

 

 

URW1

Întreruperea globală și oprirea stivei hardware sunt activate.

Notă: Acest bit este adesea folosit în sistemele de operare în timp real. Când contextul este comutat în timpul unei întreruperi, setarea acestui bit poate dezactiva întreruperea globală și poate împinge stiva hardware. Când comutarea contextului este finalizată și întreruperea revine, hardware-ul o va face

ștergeți automat acest bit.

 

 

 

 

 

0

4 Rezervat URO Rezervat 0
[3:2] PMTCFG URW Configurarea biților de prioritate de prioritate:

00: numărul de biți de preempțiune este 0; 01: Numărul de biți de preempțiune este 1; 10: Numărul de biți de preempțiune este 2; 11: Numărul de biți de preempțiune este 3; Notă: Acest bit de configurare este valabil după 1.0.

0
1 ASCULTA URW Funcția de imbricare întrerupere este activată, iar valoarea fixă ​​este 1: 1
0: Dezactivare;

1: Activați.

Notă: 1. Nivelul real de imbricare este controlat de NEST_LVL în CSR 0xBC1;

2. Numai versiunile după 1.0 pot fi

scris.

0 HWSTKEN URW Activare stivă hardware:

0: Funcția de apăsare a stivei hardware este dezactivată;

1: Funcția de presare a stivei hardware este activată.

0

Registrul de adrese de bază de excepție în modul mașină (mtvec)

Nume CSR Adresa Acces Descriere Resetează valoarea
mtvec 0x305 MRW Registrul de adrese de bază de excepție 0x00000000

Oamenii săi sunt definiți ca

Pic Nume Acces Descriere Resetează valoarea
[31:2] BASEADDR[31:2] MRW Adresa de bază a tabelului vectorial de întrerupere, unde

biții [9:2] sunt fixați la 0.

0
1 MODUL 1  

MRO

Mod de recunoaștere a tabelului vector de întrerupere: 0: Identificați prin instrucțiuni de salt, cu sferă limitată și suportă instrucțiuni fără sărituri;

1: Identificați prin adresă absolută, acceptați gama completă, dar trebuie să sară.

Notă: Acest bit este valabil numai pentru V3B/C.

0
0 MODUL 0 MRW Selectarea modului de intrare a adresei de întrerupere sau excepție.

0: Utilizarea adresei uniforme de intrare.

1: Compensarea adresei pe baza numărului de întrerupere *4.

0

Pentru MCU-urile cu microprocesoare din seria V3, MODE0 este configurat să fie 1 în mod implicit la pornire file, iar intrările pentru excepții sau întreruperi sunt compensate în funcție de numărul de întreruperi *4. Rețineți că microprocesorul V3A stochează o instrucțiune de salt la tabelul vectorial, în timp ce microprocesorul V3B/C poate fie o instrucțiune de salt, fie să folosească adresa absolută a funcției de întrerupere, care este configurată ca o adresă absolută în pornirea implicită. file.

Registrul de configurare a microprocesorului (corector)

Acest registru este invalid pentru V3A:

Nume CSR Adresa Acces Descriere Resetează valoarea
corecfgr 0xBC0 MRW Registrul de configurare a microprocesorului 0x00000001

Oamenii săi sunt definiți ca

Pic Nume Acces Descriere Resetează valoarea
[31:8] Rezervat MRO Rezervat 0
 

 

7

 

 

CSTA_FAULT_IE

 

 

MRW

Activare întreruperea erorii de stare de bază:

0: La eroare de stare, nu este generată nicio întrerupere NMI;

1: La eroare de stare, întreruperea NMI este

generate.

 

 

0

6 Rezervat MRO Păstrează-l 0. 0
5 IE_REMAP_EN MRW Maparea registrului MIE permite:

0: adresa CSR 0x800 este un registru numai pentru citire, iar valoarea returnată este valoarea STATUS;

1: Biții 3 și 7 ai adresei CSR 0x800 sunt mapați la bit MIE al registrului STATUS și, respectiv, bit MPIE al registrului STATUS.

 

 

 

 

0

4 Rezervat MRO Rezervat 0
3 ROM_LOOP_ACC MRW Activarea accelerației buclei de instrucțiuni din zona ROM:

0: Opriți funcția de accelerare ciclică în zona ROM;

1: Instrucțiunile continue cu un corp de buclă în 128 de octeți vor fi complet accelerate, în timp ce cele cu un corp de buclă în 256 de octeți vor fi parțial accelerate;

0
2 ROM_JUMP_ACC MRW Accelerarea săriturii de instrucțiuni în zona ROM este activată:

0: Dezactivează accelerarea săriturii instrucțiunilor din zona ROM;

1: Activați accelerarea saltului de instrucțiuni în zona ROM.

0
[1:0] FETCH_MODE MRW Modul de preluare:

00: Preluare este dezactivată. Funcția de preluare a instrucțiunilor este dezactivată pentru a evita operațiunile de preluare a instrucțiunilor nevalide și există cel mult o instrucțiune validă pe conducta CPU. Acest model are cel mai mic consum de energie, iar performanța sa scade de aproximativ 2 ~ 3 ori. 01: Modul de preluare preliminară 1. Când funcția de preluare preliminară a instrucțiunilor este activată, CPU va continua să acceseze memoria de instrucțiuni până când numărul de instrucțiuni care urmează să fie executate în bufferul de instrucțiuni intern depășește un anumit număr sau bufferul de instrucțiuni este plin și preluarea instrucțiunilor va fi suspendată; (Eșecul predicției CPU va duce la operațiune redundantă de preluare, iar în unele cazuri, unitatea de execuție va introduce 0 ~ 2 cicluri de bule, iar performanța majorității programelor nu va scădea evident); 10: Rezervat;
11: Modul de preluare preliminară 2. Când funcția de preluare preliminară a instrucțiunilor este activată, CPU va continua să acceseze memoria de instrucțiuni, iar dacă bufferul de instrucțiuni este plin, CPU va continua să încerce din nou adresa. Acest mod are cea mai mare performanță și consum de energie. Eșecul predicției CPU și reîncercarea vor introduce operațiuni redundante de preluare și pot continua să ocupe lățimea de bandă a memoriei. (Pentru zona ROM, reîncercarea înseamnă acces discontinuu la adresa, deci este recomandat să activați ROM_ACC_EN).

0x1

Întreruperea registrului de control imbricat (inestcr)

Acest registru este invalid numai pentru V3A:

Nume CSR Adresa Acces Descriere Resetează valoarea
investitor 0xBC1 MRW Întrerupeți registrul de control imbricat 0x00000000

Oamenii săi sunt definiți ca

Pic Nume Acces Descriere Resetează valoarea
31 Rezervat MRO Rezervat 0
30 NEST_OV MRW Bit de semnalizare de depășire imbricată întrerupere/excepție, scrieți 1 pentru a șterge:

0: Întreruperea nu sa revărsat; 1: Indicatorul de întrerupere a depășirii.

Notă: Overflow de întrerupere va avea loc numai atunci când se execută funcția de serviciu de întrerupere secundară pentru a genera o excepție de instrucțiune sau o întrerupere NMI. În acest moment, excepția și întreruperea NMI intră în mod normal, dar stiva CPU depășește, așa că nu puteți ieși din această excepție și

întrerupere NMI.

0
[29:12] Rezervat MRO Rezervat 0
[11:8] NEST_STA MRO Bit de steag de stare imbricat:

0000: Fără întrerupere;

0001: întrerupere de nivel 1;

0011: întrerupere nivel 2 (imbricare cu 1 nivel);

0
0111: întrerupere de nivel 3 (depășire);

1111: întrerupere de nivel 4 (depășire).

[7:2] Rezervat MRO Rezervat 0
[1:0] NEST_LVL MRW Nivel de imbricare:

00: Imbricarea este interzisă și funcția de imbricare este dezactivată;

01: Imbricare de prim nivel, care activează funcția de cuibărit;

Altele: invalid.

Notă: Scrieți 10 sau 11 în acest câmp, iar câmpul va fi setat la 01. Când scrieți 11 în acest câmp, citiți acest registru pentru a obține cel mai înalt nivel de imbricare al cipului.

0

Registrul de activare a întreruperii globale a modului utilizator (intern)

Acest registru este invalid numai pentru V3A:

Nume CSR Adresa Acces Descriere Resetează valoarea
gintenr 0x800 URW Registrul de activare a întreruperii globale 0x00000000

Acest registru este folosit pentru a controla activarea și masca întreruperii globale. Activarea și masca întreruperii globale în modul mașină pot fi controlate de biții MIE și MPIE în stare, dar acest registru nu poate fi operat în modul utilizator.
Registrul global de activare a întreruperii gintenr este maparea MIE și MPIE în mstatus și poate fi folosit pentru a seta și șterge MIE și MPIE prin operarea gintenr în modul utilizator.

Fiecare dintre ele este definit ca:

Pic Nume Acces Descriere Resetează valoarea
[31:13] Rezervat URO Rezervat 0
[12:11] MPP URO Intrați în modul privilegiat înainte de întrerupere. 0
[10:8] Rezervat URO Rezervat 0
7 MPIE URW Când 0xBC0(CSR)bit5 este activat, acest bit

poate fi citit și scris în modul utilizator.

0
[6:4] Rezervat URO Rezervat 0
3 MIE URW Când 0xBC0(CSR)bit5 este activat, acest bit

poate fi citit și scris în modul utilizator.

0
[1:0] Rezervat URO Rezervat 0

Întrerupeți imbricarea

Împreună cu registrul de întrerupere, de configurare PFIC_CFGR și registrul de prioritate de întrerupere PFIC_IPRIOR, se poate permite să apară imbricarea întreruperilor. Activați imbricarea în registrul de configurare a întreruperilor (Imbricarea este activată în mod implicit pentru microprocesoarele din seria V3) și configurați prioritatea întreruperii corespunzătoare. Cu cât valoarea priorității este mai mică, cu atât este mai mare. Cu cât valoarea bitului de preempțiune este mai mică, cu atât este mai mare prioritatea de preempțiune. Dacă există întreruperi suspendate în același timp sub aceeași prioritate de preempțiune, microprocesorul răspunde mai întâi la întrerupere cu valoarea de prioritate mai mică (prioritate mai mare).

Prolog/Epilog hardware (HPE)

  • Când are loc o excepție sau o întrerupere, microprocesorul oprește fluxul de program curent și trece la execuția funcției de gestionare a excepției sau a întreruperilor, locul fluxului de program curent trebuie salvat. După revenirea excepției sau a întreruperii, este necesar să restabiliți site-ul și să continuați execuția fluxului de program oprit. Pentru microprocesoarele din seria V3, „site-ul” de aici se referă la toate registrele de apelant salvate din Tabelul 1-2.
  • Microprocesoarele din seria V3 acceptă salvarea automată hardware într-un singur ciclu a 16 dintre registrele formate salvate de apelant într-o zonă internă de stivă care nu este vizibilă pentru utilizator. Când revine o excepție sau o întrerupere, ciclul unic hardware restaurează automat datele din zona internă a stivei în registrele în formă de 16. HPE acceptă imbricarea până la 2 nivele adâncime.
  • O schemă a stivei de presiune a microprocesorului este prezentată în figura următoare.WH-V3-Microprocesor-fig-2

Nota:

  1. Funcțiile de întrerupere care utilizează HPE trebuie compilate folosind MRS sau lanțul de instrumente furnizat de acesta, iar funcția de întrerupere trebuie să fie declarată cu __attribute__((interrupt(„WCH-Interrupt-fast”))).
  2. Funcția de întrerupere care utilizează stack push este declarată de __attribute__((interrupt())).

Tabel vectorial gratuit (VTF)

  • Controlerul de întrerupere rapidă programabil (PFIC) oferă 4 canale VTF, adică acces direct la intrarea funcției de întrerupere fără a trece prin procesul de căutare a tabelului vector de întrerupere.
  • Canalul VTF poate fi activat prin scrierea numărului său de întrerupere, a adresei de bază a funcției de întrerupere a serviciului și a adresei de compensare în registrul controlerului PFIC corespunzător, în timp ce se configurează o funcție de întrerupere în mod normal.
  • Procesul de răspuns PFIC pentru întreruperi rapide și fără tabel este prezentat în Figura 3-2 de mai jos.WH-V3-Microprocesor-fig-3

Protecția memoriei fizice PMP

  • Pentru a îmbunătăți securitatea sistemului, modulul de protecție a memoriei fizice (PMP) este proiectat conform standardului de arhitectură RISC-V pentru microprocesoarele din seria V3 de orz de munte. Este acceptată gestionarea drepturilor de acces pentru până la 4 regiuni fizice. Permisiunile includ atribute de citire (R), scriere (W) și execuție (X), iar lungimea zonei protejate poate fi setată la cel puțin 4 octeți. Modulul PMP are întotdeauna efect în modul utilizator, dar poate avea efect opțional prin blocarea atributului (L) în modul mașină.
  • Dacă accesul încalcă limita actuală de permisiune, va declanșa o întrerupere anormală. Modulul PMP include patru grupuri de registre de configurare de 8 biți (Un grup de 32 de biți) și patru grupuri de registre de adrese, toate acestea trebuind accesate în modul mașină prin instrucțiuni CSR.
  • Nota: Numărul de zone protejate suportate de PMP în diferite modele de microprocesoare poate fi diferit, iar numărul suportat de registrele pmpcfg și pmpaddr este, de asemenea, diferit. Consultați Tabelul 1-1 pentru detalii.

Set de registru PMP

Lista registrelor CSR suportate de modulul PMP al microprocesorului V3 este prezentată în Tabelul 4-1 de mai jos.

Tabelul 4-1 Setul de registre al modulului PMP

Nume adresa CSR Acces Descriere Resetează valoarea
pmpcfg0 0x3A0 MRW Registrul de configurare PMP 0 0x00000000
pmpaddr0 0x3B0 MRW Registrul de adrese PMP 0 0xXXXXXXXXX
pmpaddr1 0x3B1 MRW Registrul de adrese PMP 1 0xXXXXXXXXX
pmpaddr2 0x3B2 MRW Registrul de adrese PMP 2 0xXXXXXXXXX
pmpaddr3 0x3B3 MRW Registrul de adrese PMP 3 0xXXXXXXXXX

pmp

pmpcfg este registrul de configurare al unității PMP și fiecare registru conține patru câmpuri de pompare de 8 biți, corespunzătoare configurației a patru regiuni, iar pomparea reprezintă valoarea de configurare a regiunii i. Formatul acestuia este prezentat în următorul tabel 4-2.

Tabelul 4-2 Registrul pmpcfg0WH-V3-Microprocesor-fig-4

pmpcfg este folosit pentru a configura zona I, iar definiția sa de biți este descrisă în următorul tabel 4-3.

Tabelul 4-3

Pic Nume Descriere
7 L Blocarea este activată și poate fi deblocată în modul mașină. 0: Nu este blocat;

1: Blocați registrul relevant.

[6:5] Rezervat
[4:3] A Alinierea adresei și selectarea zonei de protecție. 00: OFF (PMP dezactivat)

01: TOR (protecție de aliniere superioară) 10: NA4 (protecție fixă ​​pe patru octeți)

11: NAPOT (protecție 2(G+2) octeți, G≥1)

2 X Atribut executabil.
0: Fără permisiune de execuție;

1: Executați permisiunea.

 

1

 

W

Atribut care poate fi scris.

0: Fără permisiune de scriere 1: Permisiune de scriere.

 

0

 

R

Atribut care poate fi citit

0: Fără permisiunea de citire 1: Permisiunea de citire.

pmpaddr

Registrul pmpaddr este utilizat pentru a configura adresa zonei I. Definiția standard este sub arhitectura RV32, care este codificarea celor 32 de biți superiori ai unei adrese fizice de 34 de biți, iar formatul acesteia este prezentat în următorul tabel 4-4. .
Întregul spațiu de adrese fizice al microprocesorului V3 este 4G, astfel încât cei doi biți superiori ai acestui registru nu sunt utilizați.

Tabelul 4-4 pmpaddrWH-V3-Microprocesor-fig-5

Când este selectat NAPOT, bitul scăzut al registrului de adrese este, de asemenea, utilizat pentru a indica dimensiunea zonei de protecție curentă, așa cum se arată în tabelul următor, unde „y” este un bit din registru.
Tabelul 4-5 Tabel de relații dintre configurația PMP și registrul de adrese și zona protejată.

pmpaddr pmpcfg. O Adresa de bază și dimensiunea potrivire
aaaaaaaaaaa NA4 Cu „yy…yyyy00” ca adresă de bază, zona de 4 octeți este protejată.
aaaa…aaaa0 NAPOT Cu „yy…yyy000” ca adresă de bază, zona de 8 octeți este protejată.
aaaa… aaa01 NAPOT Cu „yy…yy0000” ca adresă de bază, zona de 16 octeți este protejată.
aaaa… y011 NAPOT Cu „yy…y00000” ca adresă de bază, zona de 16 octeți este protejată.
aaa01…111 NAPOT Cu „y0…000000” ca adresă de bază, zona de 231 de octeți este protejată.
aa011…111 NAPOT Protejați întreaga zonă de 232 de octeți.

Mecanism de protecție

X/W/R în pmpcfg este folosit pentru a seta autoritatea de protecție a zonei I, iar încălcarea autorității relevante va cauza o excepție corespunzătoare:

  1. Când încercați să preluați instrucțiuni în zona PMP fără autorizare de execuție, va provoca o excepție de eroare de acces la preluarea instrucțiunii (mcause=1).
  2. Când încercați să scrieți date în zona PMP fără permisiunea scrisă, va provoca o excepție de eroare (mcause=7) în accesul la instrucțiunile din magazin.
  3. Când încercați să citiți date din zona PMP fără permisiunea de citire, va provoca o eroare anormală de acces la memorie (mcause=5) pentru instrucțiunea de încărcare.

A din pmpcfg este folosit pentru a seta intervalul de protecție și alinierea adresei regiunii I și pentru a proteja memoria A_ADDR ≤ regiune < i > < B_ADDR (atât A_ADDR, cât și B_ADDR trebuie să fie aliniați în 4 octeți):

  1. Dacă B _ ADDR–A_ADDR = = 22, se adoptă modul NA4;
  2. Dacă B _ ADDR–A_ADDR = = 2(G+2), G≥1, iar o adresă _ este 2(g+2), se adoptă metoda NAPOT;
  3. În caz contrar, se adoptă modul TOP.

Tabelul 4-6 Metode de potrivire a adreselor PMP

O valoare Nume Descriere
0b00 OFF Nici o zonă de protejat
0b01 TOR Protecția zonei aliniate de sus.

Sub pmp

pmpaddri = B_ADDR >> 2.

Notă: Dacă zona 0 a PMP este configurată ca mod TOR (i=0), limita inferioară a zonei de protecție este adresa 0, adică 0 ≤ addr < pmpaddr0, toate în intervalul de potrivire.

0b10 NA4 Protecție fixă ​​a zonei de 4 octeți.

pmp

0b11 NAPOT Protejați regiunea 2(G+2) cu G ≥ 1, când A_ADDR este aliniat la 2(G+2). pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< >1.
  • Bitul L din pmp
  • Microprocesoarele din seria QingKe V3 suportă protecția mai multor zone. Când aceeași operațiune se potrivește cu mai multe zone în același timp, zona cu numărul mai mic este potrivită mai întâi.

Temporizator sistem (SysTick)

  • Microprocesorul din seria QingKe V3 este proiectat cu un contor de 32 sau 64 de biți (SysTick) în interior. Sursa sa de ceas este ceasul de sistem sau diviziunea sa în 8 frecvențe, iar V3A acceptă doar diviziunea în 8 frecvențe.
  • Poate oferi o bază de timp, sincronizare și timp de măsurare pentru un sistem de operare în timp real. Diferitele tipuri de registre implicate în temporizator au adrese de mapare diferite, așa cum se arată în tabelele 5-1 și 5-2 de mai jos.

Tabelul 5-1 Lista de registre SysTick V3A

Nume Adresa de acces Descriere Resetează valoarea
STK_CTLR 0xE000F000 Registrul de control al contorului sistemului 0x00000000
STK_CNTL 0xE000F004 Registrul contor de sistem scăzut 0xXXXXXXXXX
STK_CNTH 0xE000F008 Contor de sistem registru ridicat

Notă: valabil numai pentru V3A.

0xXXXXXXXXX
STK_CMPLR 0xE000F00C Valoarea de comparație a numărului de sistem registru scăzut 0xXXXXXXXXX
STK_CMPHR 0xE000F010 Registrul de valoare de comparație a numărului de sistem ridicat

Notă: valabil numai pentru V3A.

0xXXXXXXXXX

Tabelul 5-2 Lista de registre SysTick V3 a altor modele

Nume Adresa de acces Descriere Resetează valoarea
STK_CTLR 0xE000F000 Registrul de control al contorului sistemului 0x00000000
STK_SR 0xE000F004 Registrul de stare a contorului sistemului 0x00000000
STK_CNTL 0xE000F008 Registrul scăzut al contorului de sistem 0xXXXXXXXXX
STK_CMPLR 0xE000F010 Valoarea de comparație a numărului registru scăzut 0xXXXXXXXXX

Fiecare registru este descris în detaliu după cum urmează.

Registrul de control al contorului de sistem (STK_CTLR)

Tabelul 5-3 Registru de control SysTick

Pic Nume Acces Descriere Resetează valoarea
[31:5] Rezervat RO Rezervat 0
 

 

4

 

 

MOD

 

 

RW

Mod de numărare: 1: numărătoare inversă;

0: Numără în sus.

Notă: nevalid pentru V3A.

 

 

0

 

 

 

3

 

 

 

STRE

 

 

 

RW

Bit de activare a numărului de reîncărcări automate:

1: Numărați din nou de la 0 după numărarea până la valoarea de comparație și numărați din nou de la valoarea de comparație după numărătoarea inversă până la 0;

0: Continuați numărătoarea în sus/în jos.

Notă: nevalid pentru V3A.

 

 

 

0

 

 

2

 

 

STCLK

 

 

RW

Bit de selectare a sursei de contraclock:

1: HCLK ca bază de timp; 0: HCLK/8 ca bază de timp.

Notă: este invalid pentru V3A, care acceptă doar

HCLK/8 ca bază de timp.

 

 

0

1 SITE RW Biți de control de activare a întreruperii contorului: 0
1: Activează întreruperea contorului; 0: Dezactivează întreruperea contorului.

Notă: nevalid pentru V3A.

0 STE RW Contorul de sistem activează un bit de control. 1: Activați contorul de sistem STK;

0: Dezactivați contorul de sistem STK și contorul nu mai numără.

0

Registrul de stare a contorului de sistem (STK_SR)

Acest registru nu se aplică pentru V3A.

Tabelul 5-4 Registrul scăzut al contorului SysTick

Pic Nume Acces Descriere Resetează valoarea
 

 

31

 

 

SWIE

 

 

RW

Activare declanșare întrerupere software (SWI): 1: Declanșare întrerupere software;

0: Opriți declanșatorul.

Notă: Acest bit trebuie șters după introducerea întreruperii software, altfel se va declanșa întotdeauna.

 

 

0

[30:1] Rezervat RO Rezervat 0
 

 

0

 

 

CNTIF

 

 

RW

Indicatorul de comparație de numărare, scrieți 0 clar, scrieți 1 nu este valid:

1: numărați până la valoarea de comparație și numărați până la 0;

0: Valoarea de comparație nu este atinsă.

 

 

0

Registrul contor de sistem scăzut (STK_CNTL)

Tabelul 5-5 Registrul scăzut al contorului SysTick

Pic Nume Acces Descriere Resetează valoarea
[31:0] CNTL RW Valoarea curentă a contorului este cu 32 de biți mai mică. Pentru V3A, acest registru poate fi citit ca 8-bit/16-bit

/32 de biți, dar poate fi scris doar ca pe 8 biți și altele

modelele nu sunt limitate.

0xXXXXXX XXX

Nota: Înregistrați STK_CNTL și înregistrați STK_CNTH în V3A împreună constituie un contor de sistem pe 64 de biți.

Registrul de contor de sistem înalt (STK_CNTH)

Tabelul 5-6 Registrul înalt al contorului SysTick

Pic Nume Acces Descriere Resetează valoarea
[31:0] CNTH RW Valoarea curentă a contorului este cu 32 de biți mai mare. Acest registru poate fi citit pe 8-bit/16-bit/32-bit, dar poate fi scris doar pe 8-bit.

Notă: valabil numai pentru V3A.

0xXXXXXX XXX

Nota: Înregistrați STK_CNTL și înregistrați STK_CNTH în V3A împreună constituie un contor de sistem pe 64 de biți.

Registrul scăzut al valorii de comparație a numărului de sistem (STK_CMPLR)

Tabelul 5-7 Registrul scăzut al valorii de comparație SysTick

Pic Nume Acces Descriere Resetează valoarea
[31:0] CMPL RW Setați valoarea de comparație a contorului la 32 de biți mai mică. Când valoarea CMP și valoarea CNT sunt egale, va fi declanșată o întrerupere STK. Pentru V3A, acest registru poate fi citit pe 8 biți /16 biți /32 biți, dar poate fi doar

scris ca pe 8 biți, iar alte modele nu sunt limitate.

0xXXXXXX XXX

Nota: Registrul STK_CMPLR și registrul STK_CMPHR din V3A constituie împreună valoarea de comparație a contorului de 64 de biți.

Registrul ridicat al valorii de comparație a numărului de sistem (STK_CMPHR)

Tabelul 5-8 Registrul ridicat al valorii de comparație SysTick

Pic Nume Acces Descriere Resetează valoarea
[31:0] CMPH RW Setați valoarea de comparație a contorului cu 32 de biți mai mare. Întreruperea STK va fi declanșată când valoarea CMP și valoarea CNT sunt egale.

Acest registru poate fi citit pe 8-bit/16-bit/32-bit, dar poate fi scris doar pe 8-bit.

Notă: valabil numai pentru V3A.

0xXXXXXX XXX

Nota: Registrul STK_CMPLR și registrul STK_CMPHR din V3A constituie împreună valoarea de comparație a contorului de 64 de biți.

Setări de putere redusă a procesorului

  • Microprocesoarele din seria QingKe V3 acceptă starea de repaus prin instrucțiuni WFI (Așteptați întrerupere) pentru a obține un consum de energie statică scăzut.
  • Împreună cu registrul de control al sistemului PFIC (PFIC_SCTLR), pot fi implementate diferite moduri Sleep și instrucțiuni WFE.

Intră în somn

  • Microprocesoarele din seria QingKe V3 pot intra în stare de repaus în două moduri, Wait for Interrupt (WFI) și Wait For Event (WFE). Metoda WFI înseamnă că microprocesorul intră în stare de repaus, așteaptă să se trezească o întrerupere și apoi se trezește la întreruperea corespunzătoare pentru a se executa. Metoda WFE înseamnă că microprocesorul intră în stare de repaus, așteaptă ca un eveniment să se trezească și se trezește pentru a continua să execute fluxul de program oprit anterior.
  • RISC-V standard acceptă instrucțiuni WFI, iar comanda WFI poate fi executată direct pentru a intra în repaus prin metoda WFI. Pentru metoda WFE, bitul WFITOWFE din registrul de control al sistemului PFIC_SCTLR este utilizat pentru a controla comenzile WFI ulterioare ca procesare WFE pentru a realiza metoda WFE pentru a intra în repaus.
  • Adâncimea somnului este controlată în funcție de bitul SLEEPDEEP din PFIC_SCTLR.
  • Dacă SLEEPDEEP din registrul PFIC_SCTLR este șters la zero, microprocesorul intră în modul Sleep și ceasul unității interne poate fi oprit, cu excepția SysTick și a unei părți a logicii de trezire.
  • Dacă SLEEPDEEP în registrul PFIC_SCTLR este setat, microprocesorul intră în modul de repaus profund și toate ceasurile celulelor pot fi oprite.
  • Când microprocesorul este în modul Debug, nu este posibil să intrați în niciun fel de modul Sleep.

Trezirea somnului

Microprocesoarele din seria QingKe V3 pot fi trezite după somn datorită WFI și WFE în următoarele moduri.

După ce metoda WFI intră în somn, poate fi trezită de

  1. Microprocesorul poate fi trezit de sursa de întrerupere la care răspunde controlerul de întrerupere. După trezire, microprocesorul execută mai întâi funcția de întrerupere.
  2. Intrați în modul Sleep, cererea de depanare poate face ca microprocesorul să se trezească și să intre în somn profund, cererea de depanare nu poate trezi microprocesorul.

După ce metoda WFE intră în stare de repaus, microprocesorul poate fi trezit prin următoarele.

  1. Evenimentele interne sau externe, când nu este nevoie să configurați controlerul de întrerupere, treziți-vă și continuați să executați programul.
  2. Dacă o sursă de întrerupere este activată, microprocesorul este trezit când este generată o întrerupere, iar după trezire, microprocesorul execută mai întâi funcția de întrerupere.
  3. Dacă bitul SEVONPEND din PFIC_SCTLR este configurat, controlerul de întrerupere nu activează întreruperea, dar atunci când este generat un nou semnal de întrerupere în așteptare (semnalul în așteptare generat anterior nu are efect), poate face și microprocesorul să se trezească, iar indicatorul corespunzător de întrerupere în așteptare trebuie șters manual după trezire.
  4. Solicitarea de depanare în modul Sleep poate face ca microprocesorul să se trezească și să intre în somn profund, cererea de depanare nu poate trezi microprocesorul.
  • În plus, starea microprocesorului după trezire poate fi controlată prin configurarea bitului SLEEPONEXIT în PFIC_SCTLR.
  • SLEEPONEXIT este setat și instrucțiunea de revenire la ultimul nivel de întrerupere (mret) va declanșa modul de repaus WFI.

SLEEPONEXIT este ștearsă fără efect.

Diverse produse MCU echipate cu microprocesoare din seria V3 pot adopta diferite moduri de repaus, pot opri diferite periferice și ceasuri, pot implementa politici diferite de gestionare a energiei și metode de trezire în funcție de diferite configurații ale PFIC_SCTLR și pot realiza diverse moduri de consum redus.

Suport pentru depanare

  • Microprocesoarele din seria QingKe V3 includ un modul hardware de depanare care acceptă operațiuni complexe de depanare. Când microprocesorul este suspendat, modulul de depanare poate accesa GPR-urile, CSR-urile, memoria, dispozitivele externe ale microprocesorului, etc. prin comenzi abstracte, instrucțiuni de implementare a bufferului de program etc. Modulul de depanare poate suspenda și relua funcționarea microprocesorului.
  • Modulul de depanare urmează specificația RISC-V External Debug Support Version0.13.2, documentația detaliată poate fi descărcată de la RISC-V International website-ul.

Modul de depanare

  • Modulul de depanare din interiorul microprocesorului, capabil să efectueze operațiuni de depanare emise de gazda de depanare, include.
  • Acces la registre prin interfața de depanare
  • Resetați, suspendați și reluați microprocesorul prin interfața de depanare
  • Citiți și scrieți memoria, registrele de instrucțiuni și dispozitivele externe prin interfața de depanare
  • Implementați mai multe instrucțiuni arbitrare prin interfața de depanare
  • Setați punctele de întrerupere software prin interfața de depanare
  • Setați punctele de întrerupere hardware prin interfața de depanare
  • Acceptă execuția automată a comenzii abstracte
  • Suportă depanare într-un singur pas
  • Nota: V3A nu acceptă punctele de întrerupere hardware, punctele de întrerupere hardware V3B acceptă potrivirea adreselor de instrucțiuni, iar punctele de întrerupere hardware V3C acceptă potrivirea adresei de instrucțiuni și adresei datelor.
  • Registrele interne ale modulului de depanare folosesc un cod de adresă de 7 biți, iar următoarele registre sunt implementate în interiorul microprocesoarelor din seria QingKe V3.

Tabelul 7-1 Lista registrului modulului de depanare

Nume Adresa de acces Descriere
date0 0x04 Registrul de date 0, poate fi utilizat pentru stocarea temporară a datelor
date1 0x05 Registrul de date 1, poate fi utilizat pentru stocarea temporară a datelor
decontrol 0x10 Registrul de control al modulului de depanare
dmstatus 0x11 Registrul de stare al modulului de depanare
hartinfo 0x12 Registrul de stare al microprocesorului
rezumate 0x16 Registrul abstract de stare a comenzii
comanda 0x17 Registrul comenzilor abstracte
auto abstractă 0x18 Execuție automată a comenzii abstracte
progbuf0-7 0x20-0x27 Registrele cache de instrucțiuni 0-7
stopsum0 0x40 Întrerupeți registrul de stare
  • Gazda de depanare poate controla suspendarea, reluarea, resetarea, etc. a microprocesorului prin configurarea registrului de decontrol. Standardul RISC-V definește trei tipuri de comenzi abstracte: registru de acces, acces rapid și memorie de acces.
  • Microprocesorul QingKe V3A acceptă doar acces la registru, alte modele acceptă acces la registru și memorie, dar nu acces rapid. Accesul la registre (GPR, CSR) și accesul continuu la memorie pot fi realizate prin comenzi abstracte.
  • Modulul de depanare implementează 8 registre cache de instrucțiuni progbuf0-7, iar gazda de depanare poate stoca în cache mai multe instrucțiuni (care pot fi instrucțiuni comprimate) în buffer și poate alege să continue executarea instrucțiunilor din registrele cache de instrucțiuni după executarea comenzii abstracte sau executarea direct instrucțiunile din cache.
  • Nota că ultima instrucțiune din programe trebuie să fie o instrucțiune „ebreak” sau „c.ebreak”. Accesul la stocare, periferice etc. este posibil și prin comenzi abstracte și instrucțiuni stocate în cache în programe.
  • Fiecare registru este descris în detaliu după cum urmează.
  • Registrul de date 0 (data0)

Tabelul 7-2 Definiția registrului de date

Pic Nume Acces Descriere Resetați valoarea
[31:0] date0 RW Registrul de date 0, utilizat pentru stocarea temporară a datelor 0

Registrul de date 1 (data1)

Tabelul 7-3 definiția registrului data1

Pic Nume Acces Descriere Resetați valoarea
[31:0] date1 RW Registrul de date 1, utilizat pentru stocarea temporară a datelor 0

Registrul de control al modulului de depanare (decontrol)

Acest registru controlează întreruperea, resetarea și reluarea microprocesorului. Gazda de depanare scrie date în câmpul corespunzător pentru a realiza pauză (haltreq), resetare (ndmreset), reluare (resumereq). Descrieți următoarele.

Tabelul 7-4 definirea registrului de decontrol

Pic Nume Acces Descriere Resetați valoarea
31 haltreq WO 0: Ștergeți solicitarea de pauză

1: Trimiteți o solicitare de pauză

0
30 resumereq W1 0: Invalid

1: Restaurați microprocesorul actual

Notă: Scrierea 1 este validă și hardware-ul este șters după ce microprocesorul este recuperat

0
29 Rezervat RO Rezervat 0
28 ackhavereset W1 0: Invalid

1: Ștergeți bitul de stare de recoltare al microprocesorului

0
[27:2] Rezervat RO Rezervat 0
1 ndmreset RW 0: Ștergeți resetarea

1: Resetați întregul sistem, altul decât modulul de depanare

 

0

0 dezactivați RW 0: Resetați modulul de depanare

1: Modulul Debug funcționează corect

0

Registrul de stare al modulului de depanare (starea dm)

  • Acest registru este folosit pentru a indica starea modulului de depanare și este un registru numai pentru citire cu următoarea descriere a fiecărui bit.

Masă 7-5 definiția registrului dmstatus

Pic Nume Acces Descriere Resetați valoarea
[31:20] Rezervat RO Rezervat 0
19 allhavereset RO 0: Invalid

1: Resetarea microprocesorului

0
18 anyhavereset RO 0: Invalid

1: Resetarea microprocesorului

0
17 allresumeack RO 0: Invalid

1: Resetarea microprocesorului

0
16 anyresumeack RO 0: Invalid

1: Resetarea microprocesorului

0
[15:14] Rezervat RO Rezervat 0
13 aluvionare RO 0: Invalid

1: Microprocesorul nu este disponibil

0
12 orice folos RO 0: Invalid

1: Microprocesorul nu este disponibil

0
11 toate alergând RO 0: Invalid

1: Microprocesorul rulează

0
10 orice alergare RO 0: Invalid

1: Microprocesorul rulează

0
9 oprit RO 0: Invalid

1: Microprocesorul este în suspensie

0
8 orice oprit RO 0: Invalid

1: Microprocesorul în suspensie

0
7 autentificat  

RO

0: Este necesară autentificarea înainte de a utiliza modulul de depanare

1: Modulul de depanare a fost certificat

 

0x1

[6:4] Rezervat RO Rezervat 0
[3:0] versiune RO Arhitectura de suport pentru sistemul de depanare versiunea 0010: V0.13 0x2

Registrul de stare al microprocesorului (hartinfo)

Acest registru este folosit pentru a furniza informații despre microprocesor gazdei de depanare și este un registru numai pentru citire cu fiecare bit descris după cum urmează.

Tabelul 7-6 Definiția registrului hartinfo

Pic Nume Acces Descriere Resetați valoarea
[31:24] Rezervat RO Rezervat 0
[23:20] zgâria RO Numărul de registre scratch acceptate 0x3
[19:17] Rezervat RO Rezervat 0
16 DataAccess RO 0: Registrul de date este mapat la adresa CSR

1: Registrul de date este mapat la adresa de memorie

0x1
[15:12] dimensiunea datelor RO Numărul de registre de date 0x2
  [11:0] adăugare de date  

RO

Adresa offset a registrului de date data0,

a cărei adresă de bază este 0xe0000000, este supusă citirii specifice.

0xXXX

Controlul comenzilor abstracte și registrele de stare (rezumate)

Acest registru este folosit pentru a indica executarea comenzii abstracte. Gazda de depanare poate citi acest registru pentru a ști dacă ultima comandă abstractă este executată sau nu și poate verifica dacă este generată o eroare în timpul execuției comenzii abstracte și tipul erorii, care este descrisă în detaliu după cum urmează.

Tabelul 7-7 definițiile registrului de rezumate

Pic Nume Acces Descriere Resetați valoarea
[31:29] Rezervat RO Rezervat 0
[28:24] progbufsize RO Indică numărul programului tampon de program

registre cache

0x8
[23:13] Rezervat RO Rezervat 0
12 ocupat RO 0: Nu se execută nicio comandă abstractă

1: Există comenzi abstracte în curs de executare

Notă: După execuție, hardware-ul este șters.

 

0

11 Rezervat RO Rezervat 0
[10:8] cmder RW Tip eroare de comandă abstractă 000: Nicio eroare

001: Execuția comenzii abstracte pentru a scrie în comandă, rezumate, registre automate abstracte sau pentru a citi și scrie în registrele de date și progbuf

010: Nu acceptă comanda abstractă curentă 011: Executarea comenzii abstracte cu excepția 100: Microprocesorul nu este suspendat sau indisponibil și nu poate executa comenzi abstracte 101: Eroare magistrală

110: Eroare bit de paritate în timpul comunicării 111: Alte erori

Notă: Pentru scrierea biților, 1 este folosit pentru a șterge zero.

 

 

 

 

 

 

 

0

[7:4] Rezervat RO Rezervat 0
[3:0] reducere RO Numărul de registre de date 0x2
  • Gazdele de depanare pot accesa GPR-urile, registrele CSR și memoria prin scrierea diferitelor valori de configurare în registrul de comenzi abstracte.
  • La accesarea registrelor, biții registrului de comandă sunt definiți după cum urmează.
  • Tabelul 7-8 Definiția registrului de comandă la accesarea registrelor
Pic Nume Acces Descriere Resetați valoarea
[31:24] tip cmd WO Tipul de comandă abstractă 0: Registrul de acces;

1: Acces rapid (nu este acceptat);

2: Acces la memorie.

0
23 Rezervat WO Rezervat 0
[22:20] aarsize WO Lățimea de biți a datelor registrului de acces 000: 8 biți

001: 16 bit

010: 32 bit

0
011: 64 de biți (neacceptat) 100: 128 de biți (neacceptat)

Notă: La accesarea registrelor în virgulă mobilă

FPR, doar accesul pe 32 de biți este acceptat.

19 aarpostincrement WO 0: Niciun efect

1: Creșteți automat valoarea regno după accesarea registrului

 

0

18 post exec WO 0: Niciun efect

1: Executați comanda abstractă și apoi executați comanda în progbuf

 

0

17 transfer WO 0: Nu executați operația specificată de scriere

1: Executați manipularea specificată de scriere

0
16 scrie WO 0: Copiați datele din registrul specificat în data0 1: Copiați datele din registrul data0 în registrul specificat  

0

[15:0] regatul WO Specificați registrele de acces 0x0000-0x0fff sunt CSR-uri 0x1000-0x101f sunt GPR-uri  

0

La accesarea memoriei, biții din registrul de comenzi sunt definiți după cum urmează.

Tabelul 7-9 Definiția comenzii Register when Accessing Memory

Pic Nume Acces Descriere Resetați valoarea
[31:24] tip cmd WO Tipul de comandă abstractă 0: Registrul de acces;

1: Acces rapid (nu este acceptat);

2: Accesați memoria.

0
23 aamvirtual WO 0: Acces adresa fizică;

1: Accesați adresa virtuală.

0
[22:20] dimensiunea brațului WO Lățimea biților datelor memoriei de acces 000: 8 biți;

001: 16 biți;

010: 32 biți;

011: 64 de biți (nu este acceptat); 100: 128 de biți (nu este acceptat);

 

0

19 aampostincrement WO 0: Fără influență;

1: După accesarea cu succes a memoriei, măriți adresa stocată în registrul data1 cu numărul de octeți corespunzător lățimii de biți configurate în funcție de dimensiunea brațului.

Aamsize=0, accesat prin octet, data1 plus 1.

Aamsize=1, accesat prin jumătate de cuvânt, data1 plus 2. aamsize=2, accesat prin bit, data1 plus 4.

 

0

18 post exec WO 0: Fără influență;

1: Executați comanda în progbuf după executarea comenzii abstracte.

0
17 Rezervaţie RO Rezervat 0
 

 

16

 

 

scrie

 

 

WO

0: Citiți datele de la adresa specificată de data1 la data0

1: Scrieți datele în data0 la adresa specificată de

date1.

 

 

0

 

 

 

 

 

 

[15:14]
 

 

 

 

 

 

specifice țintei

 

 

 

 

 

 

WO

Definiția modului de citire și scriere Scriere:

00, 01: Scrieți direct în memorie;

10: După ce datele din data0 sunt SAU cu biții de date din memorie, rezultatul este scris în memorie (este acceptat doar accesul la cuvinte).

11: După însumarea datelor din data0 cu biții de date din memorie, scrieți rezultatul în memorie (este acceptat doar accesul la cuvinte).

Citire:

00, 01, 10, 11: Citiți 0 direct din memorie.

 

 

 

 

 

 

0

[13:0] Rezervaţie RO Rezervat

Registrul de execuție automată a comenzii abstracte (auto abstract)

Acest registru este folosit pentru a configura modulul de depanare. Când citiți și scrieți progbufx și datele modulului de depanare, comanda abstractă poate fi executată din nou.

Descrierea acestui registru este următoarea:

Tabelul 7-10 Definiție abstractă a registrului automat

Pic Nume Acces Descriere Resetați valoarea
[31:16] autoexecprogbuf RW Dacă este setat un bit, citirea și scrierea corespunzătoare a lui progbufx va face ca comanda abstractă din registrul de comenzi să fie executată din nou.

Notă: Seria V3 este proiectată cu 8 progbuf-uri, corespunzător biților [23:16].

 

0

[15:12] Rezervaţie RO Rezervat 0
[11:0] autoexecdata  

RW

Dacă un bit este setat la 1, citirea și scrierea corespunzătoare a registrului de date va face ca comanda abstractă din registrul de comandă să fie executată din nou.

Notă: seria V3 este proiectată cu două date registre, corespunzătoare biților [1:0].

0

Registrul cache de instrucțiuni (progbufx)

Acest registru este folosit pentru a stoca orice instrucțiune și pentru a implementa operația corespunzătoare, inclusiv 8, care trebuie să acorde atenție ultimei execuții care trebuie să fie „break” sau „c.ebreak”.

Tabelul 7-11 Definiția registrului progbuf

Pic Nume Acces Descriere Resetați valoarea
[31:0] progbuf RW Codificarea instrucțiunilor pentru operațiunile de cache, care

poate include instrucțiuni de compresie

0

Întrerupeți registrul de stare (haltsum0)

Acest registru este folosit pentru a indica dacă microprocesorul este suspendat sau nu. Fiecare bit indică starea suspendată a unui microprocesor, iar când există un singur nucleu, doar bitul cel mai mic al acestui registru este folosit pentru a-l indica.

Tabelul 7-12 definiția registrului haltsum0

Pic Nume Acces Descriere Resetați valoarea
[31:1] Rezervat RO Rezervat 0
0 stopsum0 RO 0: Microprocesorul funcționează normal

1: Oprire microprocesor

0
  • Pe lângă registrele menționate mai sus ale modulului de depanare, funcția de depanare implică și unele registre CSR, în principal registrul de control și stare de depanare dcsr și pointerul instrucțiunii de depanare dpc, care sunt descrise în detaliu după cum urmează.
  • Control de depanare și registru de stare (dcsr)

Tabelul 7-13 definirea registrului dcsr

Pic Nume Acces Descriere Resetați valoarea
[31:28] xdebugver DRO 0000: Depanarea externă nu este acceptată 0100: Suportă depanarea externă standard

1111: Depanarea externă este acceptată, dar nu se îndeplinește

caietul de sarcini

 

 

0x4

[27:16] Rezervat DRO Rezervat 0
15 pauză DRW 0: Comanda break în modul mașină se comportă așa cum este descris în privilegiu file

1: Comanda break în modul mașină poate intra în modul depanare

 

 

0

[14:13] Rezervat DRO Rezervat 0
12 despărți  

DRW

0: Comanda break în modul utilizator se comportă așa cum este descris în privilegiu file

1: Comanda break în modul utilizator poate intra în modul depanare

 

 

0

11 pas DRW 0: Întreruperile sunt dezactivate la depanarea într-un singur pas

1: Activați întreruperile în depanarea într-un singur pas

0
10 Rezervat DRO Rezervat 0
9 opri timpul DRW 0: Cronometrul de sistem rulează în modul Depanare

1: Cronometrul sistemului se oprește în modul Depanare

0
  [8:6] cauza DRO Motive pentru a intra în depanare

001: Introducerea depanării sub formă de comandă break (prioritatea 3)

010: Introducerea depanării sub forma unui modul de declanșare (prioritatea 4, cea mai mare)

011: Introducerea depanării sub formă de solicitare de pauză (prioritatea 1)

100: depanare sub formă de depanare într-un singur pas

(prioritatea 0, cea mai mică)

0
101: intrați în modul de depanare direct după resetarea microprocesorului (prioritatea 2) Altele: rezervat
[5:3] Rezervat DRO Rezervat 0
2 pas DRW 0: dezactivați depanarea într-un singur pas

1: Activați depanarea într-un singur pas

0
[1:0] Prev DRW Mod privilegiu 00: Mod utilizator

01: Mod supervizor (nu este acceptat) 10: Rezervat

11: Modul mașină

Notă: Înregistrați modul privilegiat când intrați în modul de depanare, depanatorul poate modifica această valoare pentru a modifica modul privilegiat la ieșirea din depanare

 

 

 

 

0

Indicator de program pentru modul de depanare (DPC)

  • Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după ce microprocesorul intră în modul de depanare, iar valoarea acestuia este actualizată cu reguli diferite în funcție de motivul intrării în depanare. Registrul dpc este descris în detaliu după cum urmează.

Tabelul 7-14 Definițiile registrului dpc

Pic Nume Acces Descriere Resetați valoarea
[31:0] DPC DRW Adresa de instrucție 0

Regulile de actualizare a registrelor sunt prezentate în tabelul următor.

Tabelul 7-15 reguli de actualizare dpc

Introduceți metoda de depanare Regulile de actualizare dpc
pauză Adresa instrucțiunii Ebreak
un singur pas Adresa instrucțiunii următoarei instrucțiuni a instrucțiunii curente
modul de declanșare Nu este acceptat temporar
cerere de oprire Adresa următoarei instrucțiuni care urmează să fie executată la intrarea în Debug

Interfață de depanare

  • Diferit de standardul JTAG interfață definită de RISC-V, microprocesorul din seria QingKe V3 adoptă 1-o interfață de depanare serială cu fir/2 fire și urmează protocolul de interfață de depanare WCH V1.0.
  • Interfața de depanare este responsabilă pentru comunicarea dintre gazda de depanare și modulul de depanare și realizează operația de citire/scriere a gazdei de depanare în registrele modulului de depanare.
  • WCH a proiectat WCH_Link și open source schematica și programul său binar files, care poate fi folosit pentru depanarea tuturor microprocesoarelor cu arhitectura RISC-V.
  • Consultați Manualul protocolului de depanare WCH pentru protocoale specifice de interfață de depanare.

Lista Registrului CSR

  • Arhitectura RISC-V definește un număr de registre de control și stare (CSR) pentru controlul și înregistrarea stării de funcționare a microprocesorului.
  • Unele dintre CSR-uri au fost introduse în secțiunea anterioară, iar acest capitol va detalia registrele CSR implementate în microprocesoarele din seria QingKe V3.

Lista Registrului CSR

Tabelul 8-1 Lista registrelor CSR ale microprocesorului

Tip Nume CSR Adresa Acces Descriere
RISC-V

CSR standard

marchid 0xF12 MRO Registrul numerelor de arhitectură
mimpid 0xF13 MRO Registrul de numerotare implementare hardware
mstatus 0x300 MRW Registrul de stare
misa 0x301 MRW Registrul setului de instrucțiuni hardware
mtvec 0x305 MRW Registrul de adrese de bază de excepție
mscratch 0x340 MRW Modul mașină stagregistru ing
MEPC 0x341 MRW Registrul indicator al programului de excepție
mcauza 0x342 MRW Registrul cauzelor de excepție
mtval 0x343 MRW Registrul valorii de excepție
pmpcfg 0x3A0+i MRW Registrul de configurare PMP
pmpaddr 0x3B0+i MRW Registrul de adrese PMP
tselect 0x7A0 MRW Depanați registrul de selecție a declanșatorului
tdata1 0x7A1 MRW Depanați registrul de date de declanșare 1
tdata2 0x7A2 MRW Depanați registrul de date de declanșare 2
dcsr 0x7B0 DRW Controlul de depanare și registrele de stare
dpc 0x7B1 DRW Registrul indicator al programului în modul de depanare
dscratch0 0x7B2 DRW Modul de depanare stagregistru 0
dscratch1 0x7B3 DRW Modul de depanare stagregistru 1
 

CSR definit de furnizor

gintenr 0x800 URW Registrul de activare a întreruperii globale
intsyscr 0x804 URW Întreruperea registrului de control al sistemului
corecfgr 0xBC0 MRW Registrul de configurare a microprocesorului
inestcr 0xBC1 MRW Întrerupeți registrul de control imbricat

Registrele CSR standard RISC-V

  • Registrul numerelor de arhitectură (marchid)
  • Acest registru este un registru numai pentru citire pentru a indica numărul actual al arhitecturii hardware a microprocesorului, care este compus în principal din codul furnizorului, codul arhitecturii, codul seriei și codul versiunii. Fiecare dintre ele este definit după cum urmează.

Tabelul 8-2 Definiția registrului marchid

Pic Nume Acces Descriere Resetați valoarea
31 Rezervat MRO Rezervat 1
[30:26] Vender0 MRO Cod producator 0

Fixat la codul litera „W”.

0x17
[25:21] Vender1 MRO Cod producator 1

Fixat la codul litera „C”.

0x03
[20:16] Vender2 MRO Cod producator 2

Fixat la codul litera „H”.

0x08
15 Rezervat MRO Rezervat 1
[14:10] Arc MRO Cod de arhitectură 0x16
Arhitectura RISC-V este fixată la codul litera „V”.
[9:5] Serial MRO Cod de serie

Seria QingKe V3, fixată la numărul „3”

0x03
[4:0] Versiune MRO Codul versiunii

Poate fi versiunea „A”, „B”, „C” și alte litere ale codului

x

Numărul producătorului și numărul versiunii sunt alfabetice, iar numărul seriei este numeric. Tabelul de codificare al literelor este prezentat în tabelul următor.

Tabelul 8-3 Tabelul de cartografiere alfabetică

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
  • Printre acestea, microprocesorul QingKe V3A, registrul citește înapoi la 0.

Registrul de numerotare implementare hardware (limpid)

  • Acest registru este compus în principal din coduri de furnizor, fiecare dintre acestea fiind definit după cum urmează.

Tabelul 8-4 Definiția registrului limpid

Pic Nume Acces Descriere Resetați valoarea
31 Rezervat MRO Rezervat 1
[30:26] Vender0 MRO Cod producator 0

Fixat la codul litera „W”.

0x17
[25:21] Vender1 MRO Cod producator 1

Fixat la codul litera „C”.

0x03
[20:16] Vender2 MRO Cod producator 2

Fixat la codul litera „H”.

0x08
15 Rezervat MRO Rezervat 1
[14:8] Rezervat MRO Rezervat 0
[7:4] Minor MRO Numărul de subversiune 0xX
[3:0] Major MR0 Numărul major al versiunii 0xX
  • Acest registru este citibil în orice implementare a mașinii, iar în procesorul din seria QingKe V3A, acest registru citește înapoi la zero.

Registrul de stare a modului mașină (mstatus)

  • Acest registru a fost parțial descris în secțiunea anterioară, iar oamenii săi sunt poziționați după cum urmează.

Tabelul 8-5 Definiția registrului mstatus

Pic Nume Acces Descriere Resetați valoarea
[31:13] Rezervat MRO Rezervat 0
[12:11] MPP MRW Mod privilegiat înainte de a intra în pauză 0
[10:8] Rezervat MRO Rezervat 0
7 MPIE MRW Starea de activare a întreruperii înainte de a intra într-o întrerupere 0
[6:4] Rezervat MRO Rezervat 0
3 MIE MRW Activare întreruperea modului mașină 0
[2:0] Rezervat MRO Rezervat 0
  • Câmpul MPP este folosit pentru a salva modul privilegiat înainte de a intra în excepție sau întrerupere și este folosit pentru a restabili modul privilegiat după ieșirea din excepție sau întrerupere. MIE este bitul de activare globală a întreruperii, iar la introducerea excepției sau a întreruperii, valoarea MPIE este actualizată la valoarea MIE și trebuie remarcat că la microprocesoarele din seria QingKe V3, MIE nu va fi actualizat la 0 înainte de ultimul nivel de întreruperi imbricate pentru a se asigura că imbricarea întreruperilor în modul Machine continuă să fie executată. Când o excepție sau o întrerupere este ieșită, microprocesorul revine la modul Machine salvat de MPP și MIE este restabilit la valoarea MPIE.
  • Microprocesorul QingKe V3 acceptă modul Machine și modul User, dacă trebuie să faceți ca microprocesorul să funcționeze numai în modul Machine, puteți seta MPP la 0x3 la inițializarea boot-ului file, adică după întoarcere, va rămâne întotdeauna în modul Machine.

Registrul set de instrucțiuni hardware (misa)

  • Acest registru este folosit pentru a indica arhitectura microprocesorului și extensiile setului de instrucțiuni suportate, fiecare dintre acestea fiind descrisă după cum urmează.

Tabelul 8-6 ​​Definiția registrului misa

Pic Nume Acces Descriere Resetați valoarea
[31:30] MXL MRO Lungimea cuvântului mașină 1:32

2:64

3:128

1
[29:26] Rezervat MRO Rezervat 0
[25:0] Extensii MRO Extensii pentru setul de instrucțiuni x
  • MXL este folosit pentru a indica lungimea cuvântului microprocesorului, QingKe V3 sunt microprocesoare pe 32 de biți, iar domeniul este fixat la 1.
  • Extensiile sunt folosite pentru a indica faptul că microprocesorul acceptă detalii ale setului de instrucțiuni extinse, fiecare indicând o clasă de extensii, descrierea sa detaliată este prezentată în tabelul următor.

Tabelul 8-7 Detalii extensie set de instrucțiuni

Pic Nume Descriere
0 A Extensie atomică
1 B Rezervat provizoriu pentru extensia Bit-Manipulation
2 C Extensie comprimată
3 D Extensie în virgulă mobilă cu dublă precizie
4 E RV32E baza ISA
5 F Extensie cu virgulă mobilă cu o singură precizie
6 G Sunt prezente extensii standard suplimentare
7 H Extensie hypervisor
8 I RV32I/64I/128I bază ISA
9 J Rezervat provizoriu pentru extensia Limbi traduse dinamic
10 K Rezervat
11 L Rezervat provizoriu pentru extensia Decimal Floating-Point
12 M Extensia Integer Multiply/Divide
13 N Sunt acceptate întreruperi la nivel de utilizator
14 O Rezervat
15 P Rezervat provizoriu pentru extensia Packed-SIMD
16 Q Extensie în virgulă mobilă cu patru precizie
17 R Rezervat
18 S Modul supervizor implementat
19 T Rezervat provizoriu pentru extensia memoriei tranzacționale
20 U Modul utilizator implementat
21 V Rezervat provizoriu pentru extensia Vector
22 W Rezervat
23 X Sunt prezente extensii non-standard
24 Y Rezervat
25 Z Rezervat
  • De example, pentru microprocesorul QingKe V3A, valoarea registrului este 0x401001105, ceea ce înseamnă că arhitectura setului de instrucțiuni acceptată este RV32IMAC și are implementarea modului utilizator.

Registrul de adrese de bază de excepție în modul mașină (mtvec)

  • Acest registru este folosit pentru a stoca adresa de bază a excepției sau a gestionatorului de întreruperi, iar cei doi biți inferiori sunt utilizați pentru a configura modul și metoda de identificare a tabelului vectorial, așa cum este descris în Secțiunea 3.2.

Modul mașină stagregistru de operare (mscratch)

Tabelul 8-8 definițiile registrului mscratch

Pic Nume Acces Descriere Resetați valoarea
[31:0] mscratch MRW Stocarea datelor 0

Acest registru este un registru de 32 de biți care poate fi citit și scris în modul mașină pentru stocarea temporară a datelor. De exampla introducerea unei excepții sau a unui handler de întrerupere, indicatorul de stivă de utilizator SP este stocat în acest registru și pointerul de stivă de întreruperi este atribuit registrului SP. După ieșirea din excepție sau întrerupere, restabiliți de la zero valoarea indicatorului de stivă de utilizator SP. Adică, stiva de întreruperi și stiva de utilizator pot fi izolate.

Registrul indicator al programului de excepție în modul mașină (hartă)

Tabelul 8-9 definițiile registrului mepc

Pic Nume Acces Descriere Resetați valoarea
[31:0] mepc MRW Indicatorul procedurii de excepție 0
  • Acest registru este folosit pentru a salva indicatorul programului atunci când introduceți o excepție sau întrerupere.
  • Este folosit pentru a salva indicatorul PC cu instrucțiuni înainte de a introduce o excepție atunci când este generată o excepție sau o întrerupere, iar mepc este folosit ca adresă de retur atunci când excepția sau întreruperea este gestionată și utilizată pentru o excepție sau întrerupere.
  • Cu toate acestea, este important să rețineți că.
  • Când apare o excepție, mepc este actualizat la valoarea PC a instrucțiunii care generează în prezent excepția.
  • Când apare o întrerupere, mepc este actualizat la valoarea PC a instrucțiunii următoare.
  • Când trebuie să returnați o excepție după procesarea excepției, ar trebui să acordați atenție modificării valorii mepc, iar mai multe detalii puteți găsi în Capitolul 2 Excepții.

Registrul cauzei excepții în modul mașină (mcause)

Tabelul 8-10 definiția registrului de cauze

Pic Nume Acces Descriere Resetați valoarea
31 Întrerupe MRW Câmpul de indicare a întreruperii 0: Excepție

1: întrerupere

 

0

[30:0] Cod de excepție MRW Pentru codurile de excepție, consultați Tabelul 2-1 pentru detalii 0
  • Acest registru este utilizat în principal pentru a stoca cauza excepției sau numărul de întrerupere al întreruperii. Cel mai înalt bit al său este câmpul de întrerupere, care este folosit pentru a indica dacă apariția curentă este o excepție sau o întrerupere.
  • Bitul inferior este codul de excepție, care este folosit pentru a indica cauza specifică. Detaliile sale pot fi găsite în Capitolul 2 Excepții.

Registrul valorii de excepție în modul mașină (mtval)

Tabelul 8-11 definiția registrului mtval

Pic Nume Acces Descriere Resetați valoarea
[31:0] mtval MRW Valoare de excepție 0
  • Acest registru este folosit pentru a păstra valoarea care a cauzat excepția atunci când apare o excepție. Pentru detalii precum valoarea și timpul de stocare, vă rugăm să consultați Capitolul 2 Excepții.

Registrul de configurare PMP (pmpcfg

  • Acest registru este folosit în principal pentru configurarea unității de protecție a memoriei fizice, iar fiecare 8 biți ai acestui registru sunt utilizați pentru a configura protecția unei zone. Vă rugăm să consultați capitolul 4 pentru definiția detaliată.

Registrul adresei PMP (pmpaddr

  • Acest registru este utilizat în principal pentru configurarea adresei unității de protecție a memoriei fizice, care codifică cei 32 de biți superiori ai unei adrese fizice de 34 de biți. Consultați capitolul 4 pentru metoda de configurare specifică.

Registru indicator al programului în modul de depanare (DPC)

  • Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după intrarea microprocesorului
  • Modul de depanare și valoarea acestuia sunt actualizate cu reguli diferite în funcție de motivul pentru care ați introdus depanarea. Consultați Secțiunea 6.1 pentru o descriere detaliată.

Depanare registru de selectare a declanșatorului (selectare)

  • Este valabil doar pentru microprocesoarele care acceptă puncte de întrerupere hardware și acceptă puncte de întrerupere pe 4 canale cel mult, iar cei 2 biți inferiori sunt validi.
  • Când configurați fiecare punct de întrerupere a canalului, trebuie să selectați canalul corespunzător prin acest registru înainte de configurare.

Tabelul 8-12 selectați definiția registrului

Pic Nume Acces Descriere Resetați valoarea
[31:2] Rezervat MRO Rezervat 0
[1:0]  

SELECTA

 

MRW

Registrul de selecție a canalului punctului de întrerupere este configurat, adică după ce canalul corespunzător este selectat, registrele tdata1 și tdata2 pot fi operate pentru a configura un punct de întrerupere

informaţii.

 

X

Depanați registrul de date de declanșare 1 (tdata1)

Este valabil numai pentru microprocesoarele care acceptă puncte de întrerupere hardware. Microprocesoarele acceptă numai punctele de întrerupere pentru adresa de instrucțiuni și adresa de date, unde TIPUL de bit al registrului tdata1 este o valoare fixă ​​de 2, iar alți biți se conformează definiției de control din standardul de depanare.

Tabelul 8-13 Definiția registrului tdata1

Pic Nume Acces Descriere Resetați valoarea
[31:28] TIP MRO Definiție tip breakpoint, tip control. 0x2
 

 

27

 

 

DMODE

 

 

MRO

0: Registrele relevante ale flip-flop-ului pot fi modificate atât în ​​modul mașină, cât și în modul de depanare;

1: Numai modul de depanare poate modifica registrele relevante ale flip-flop-ului.

 

 

1

  [26:21]  

MASKMAX

 

MRO

Când MATCH=1, intervalul maxim de putere exponențială de potrivire este permis, adică intervalul maxim de potrivire permis este de 231 de octeți.  

0x1F

[20:13] Rezervat MRO Rezervat 0
 

 

12

 

 

ACŢIUNE

 

 

MRW

Setați modul de procesare la declanșarea unui punct de întrerupere:

0: La declanșare, introduceți punctul de întrerupere și apelați întreruperea;

1: Intrați în modul de depanare când este declanșat.

 

 

0

[11:8] Rezervat MRO Rezervat 0
 

 

 

7

 

 

 

MECI

 

 

 

MRW

Configurația politicii potrivite:

0: Se potrivește când valoarea declanșatorului este egală cu TDATA2;

1: Valoarea de declanșare se potrivește cu bitul m înalt al TDATA2, unde m = 31–n, iar n este primul citat 0 al TDATA2 (începând de la bitul scăzut).

 

 

 

0

 

6

 

M

 

MRW

Activați flip-flop în modul M:

0: Dezactivează declanșatorul în modul M; 1: Activați declanșatorul în modul M.

 

0

[5:4] Rezervat MRO Rezervat 0
 

3

 

U

 

MRW

Activați declanșarea în modul U:

0: Dezactivați declanșatorul în modul U; 1: Activați declanșatorul în modul U.

 

0

 

2

 

EXECUTA

 

MRW

Declanșatorul adresei de citire a instrucțiunii este activat: 0: Dezactivare;

1: Activați.

 

0

 

1

 

MAGAZIN

 

MRW

Activat declanșarea adresei de scriere a datelor: 0: Dezactivare;

1: Activați.

 

0

 

0

 

ÎNCĂRCA

 

MRW

Declanșatorul adresei de citire a datelor este activat: 0: Dezactivat;

1: Activați.

 

0

Depanați registrul de date de declanșare 2 (tdata2)

Este valabil numai pentru microprocesoarele care acceptă puncte de întrerupere hardware și este folosit pentru a salva valoarea potrivită a declanșatorului.

Tabelul 8-14 Definiția registrului tdata2

Pic Nume Acces Descriere Resetați valoarea
[31:0] TDATA2 MRW Folosit pentru a salva valorile care se potrivesc. X

Control de depanare și registru de stare (dcsr)

Acest registru este folosit pentru a controla și înregistra starea de funcționare a modului de depanare. Consultați Secțiunea 7.1 pentru detalii.

Indicator de program pentru modul de depanare (DPC)

Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după ce microprocesorul intră în modul de depanare, valoarea acestuia este diferită în funcție de motivele intrării în modul de depanare, iar regulile de actualizare sunt și ele diferite. Consultați Secțiunea 7.1 pentru o descriere detaliată.

Modul de depanare stagregistru de înregistrare (dscratch0-1)

Acest grup de registre este folosit pentru stocarea temporară a datelor în modul Debug.

Tabelul 8-15 definițiile registrului dscratch0-1

Pic Nume Acces Descriere Resetați valoarea
[31:0] dscratch DRW Date mod de depanare stagvaloare ing 0
Registrul CSR definit de utilizator

Registrul de activare a întreruperii globale a modului utilizator (gintenr)

  • Acest registru este folosit pentru a controla activarea și masca întreruperii globale. Activarea și masca întreruperii globale în modul mașină pot fi controlate de biții MIE și MPIE în stare, dar acest registru nu poate fi operat în modul utilizator.
  • În timp ce întreruperea globală permite înregistrarea, gintenr este maparea MIE și MPIE în stare.
  • În modul utilizator, intenția poate fi utilizată pentru a seta și șterge MIE și MPIE, așa cum este descris în Secțiunea 3.2 pentru detalii.

Nota

  • Întreruperile globale nu includ întreruperi nemascate NMI și excepții.

Întreruperea registrului de control al sistemului (intsyscr)

Acest registru este folosit în principal pentru a configura adâncimea de imbricare a întreruperii, presarea stivei hardware și alte funcții conexe, așa cum este descris în Secțiunea 3.2 pentru detalii.

Registrul de configurare a microprocesorului (corecfgr)

Acest registru este folosit pentru a controla dacă întreruperea NMI este permisă după depășirea întreruperii și dacă cererea de întrerupere este șters atunci când instrucțiunea de gard este executată. Vă rugăm să consultați Secțiunea 3.2 pentru definiția specifică.

Întreruperea registrului de control imbricat (inestcr)

Acest registru este folosit pentru a indica starea de imbricare a întreruperii și dacă depășește sau nu și pentru a controla nivelul maxim de imbricare. Vă rugăm să consultați Secțiunea 3.2 pentru definiția specifică.

Documente/Resurse

Microprocesor WH V3 [pdfManual de utilizare
Microprocesor V3, V3, Microprocesor

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *