Microprocessore WH V3
Specificazioni
- Modellu di microprocessore: QingKeV3
- Versione: V1.2
- Caratteristiche ISA:
- Pipeline FPU
- Previsione di ramu
- Interrompe u sustegnu
- HPE Prutezzione di Memoria Fisica (PMP)
- Modu di cunsumu di bassa energia
- Debug di Instruction Set Extended
Istruzzioni per l'usu di u produttu
Overview di u microprocessore QingKe V3
I microprocessori di a serie QingKe V3 includenu mudelli V3A, V3B è V3C. Ogni mudellu hà caratteristiche specifiche è differenze basate nantu à a so applicazione.
Set di istruzioni
U set di istruzioni RV32I include 32 setti di registru da x0 à x31. A serie V3 ùn sustene micca l'estensione in virgule flottante (F). Ogni registru hè di 32 bits.
Registru Set
U set di registri RV32I hè custituitu da i seguenti registri.
- x0: Hardcoded 0
- x1: Indirizzu di ritornu
- x2: puntatore di stack
- x3: Puntatore globale
- x4: Puntatore di filu
- x5-x7: Registri pruvisorii
- x8: Salvà u registru / puntatore di quadru
- x9: Salvà registru / paràmetri di funzione / valori di ritornu
- x10-x11: Paràmetri di funzione
- x12-x17: Salvà i registri
- x18-x27: Registri pruvisorii
- x28-x31: Registri di chjamante / Callee
Modu Privilege
L'architettura standard RISC-V include trè modi privilegiati: Modu Machine, Modu Supervisore è Modu User. I microprocessori di a serie QingKe V3 supportanu u modu Machine è u modu Supervisor.
Domande Frequenti
Q: Chì sò i diversi mudelli in i microprocessori di a serie QingKe V3?
A: A serie QingKe V3 include mudelli V3A, V3B è V3C, ognunu cù caratteristiche specifiche è differenze dettagliate in u manuale d'utilizatore.
Q: Quanti setti di registru sò dispunibili in u set di struzzioni RV32I?
A: U set di struzzioni RV32I furnisce 32 setti di registru da x0 à x31.
Q: Quali modi privilegiati sò supportati da u microprocessore QingKe V3?
A: I microprocessori di a serie QingKe V3 supportanu u Modu Machine è u Modu Supervisor cum'è parte di l'architettura RISC-V.
Overview
I microprocessori di a serie QingKe V3 sò microprocessori MCU per scopi generali di 32 bit auto-sviluppati basati nantu à l'architettura standard di set di istruzioni RISC-V. Questa serie include V3A, V3B è V3C, di quale V3A supporta l'estensione di set di istruzioni standard RV32IMAC è V3B / C supporta l'estensione di set di istruzioni standard RV32IMCB è l'estensione di set d'istruzzioni persunalizati XW. Tramindui supportanu a multiplicazione in un ciclu è a divisione hardware, in più di stack di pressione di hardware (HPE), interruzzione senza table (VTF), interfacce di debugging simplificate 1 è 2 fili, struzzioni "WFE" è altre funziunalità speciale. Inoltre, supporta ancu Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), interfaccia di debugging simplificata 1-/2-wire, è supportu per l'istruzzioni "WFE".
Features
Features | Descrizzione |
ISA | RV32IM[A]C[B] |
Pipeline | 3 |
FPU | Ùn hè micca supportatu |
Previsione di ramu | Previsione di ramu staticu |
Interruzzione | Supporta un totale di 256 interruzioni cumprese eccezioni, è supporta VTF |
HPE | Supporta 2 livelli di HPE |
Prutezzione di a Memoria Fisica (PMP) | Supportatu |
Modu di cunsumu di bassa energia | Supporta i modi Sleep è Deep, è sustene i metudi di sonnu WFI è WFE |
Set di istruzioni estensi | Supportatu |
Debug | 1/2-wire SDI, standard RISC-V debug |
Overview
I microprocessori di a serie QingKe V3 includenu V3A, V3B è V3C, ci sò parechje differenzi trà a serie secondu l'applicazione, e differenzi specifiche sò detallati in a Tabella 1-1.
Table 1-1 Overview di u microprocessore QingKe V3
Feature Mudellu | ISA | HPE numeru di livelli | Interruzzioni nidificazione numeru di livelli | VTF numeru di canali | Pipeline | Vettore modu di tavulinu | Istruzzioni estesa (XW) | Numero di spazii di prutezzione di memoria |
V3A | RV32IMAC | 2 | 2 | 4 | 3 | Istruzzioni | × | × |
V3B | RV32IMCB | 2 | 2 | 4 | 3 | Indirizzu / Istruzzioni | √ | × |
V3C | RV32IMCB | 2 | 2 | 4 | 3 | Indirizzu / Istruzzioni | √ | 4 |
Nota: U cambiamentu di u travagliu di u SO generalmente usa stack push, chì ùn hè micca limitatu à u numeru di livelli
Set di istruzioni
- I microprocessori di a serie QingKe V3 seguenu l'architettura standard di RISC-V Instruction Set Architecture (ISA). A documentazione dettagliata di u standard pò esse truvata in "The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 2.2" in u RISC-V International. websitu. U set d'istruzzioni RISC-V hà una architettura simplice è sustene un disignu modulare, chì permette combinazioni flessibili basate nantu à e diverse esigenze, è a serie V3 supporta e seguenti estensioni di set di struzzioni.
- RV32: Architettura a 32 bit, larghezza di bit di registru generale di 32 bit
- I: Supporta l'operazione di formatura, cù 32 registri di formatura
- M: Supporta l'istruzzioni di multiplicazione è divisione
- A: Supporta cumandamenti atomichi
- C: Supporta l'istruzzioni di compressione 16-bit
- B: Supportu per l'istruzzioni di manipulazione di bit
- XW: Istruzzioni di compressione di 16 bit per operazioni di byte è mezze parole auto-estensione
Nota:
- U sottumessu di struzzioni supportati da mudelli diffirenti pò esse sfarenti, per piacè riferite à a Tabella 1-1 per i dettagli;
- Per migliurà ulteriormente a densità di codice, estende u subset XW, aghjunghje e seguenti struzzioni di compressione c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.lhusp/c.sbsp/c.shop, l'usu di quale deve esse basatu annantu à u compilatore MRS o a catena di strumenti chì furnisce;
- V3B supporta l'estrazione di una parolla (32 bit) da una doppia parola (64 bit) è l'estrazione di una parola (32 bit) da un risultatu di multiplicazione (64 bit). U metudu di usu specificu pò riferite à a funzione di a biblioteca è cooperate cù u compilatore MRS o a catena di strumenti furnita da questu;
- V3B/C supporta l'istruzzioni di copia di memoria. Per un usu specificu, fate riferimentu à a funzione di a biblioteca è cooperate cù u compilatore MRS o a so catena di strumenti.
Registru Set
L'RV32I hà 32 gruppi di registri da x0-x31. A serie V3 ùn sustene micca l'estensione "F", vale à dì, ùn ci hè micca un settore di registru à virgule flottante. In l'RV32, ogni registru hè 32 bit. A Tabella 1-2 sottu elenca i registri di RV32I è e so descrizzioni.
Tabella 1-2 Registri RISC-V
Registrate | Nome ABI | Descrizzione | Storer |
x0 | zeru | Hardcoded 0 | – |
x1 | ra | Indirizzu di ritornu | Chjamatore |
x2 | sp | Puntatore di stack | Callee |
x3 | GP | Puntatore globale | – |
x4 | tp | Puntatore di filu | – |
x5-7 | t0-2 | Registru pruvisoriu | Chjamatore |
x8 | s0/fp | Salvà u registru / puntatore di quadru | Callee |
x9 | s1 | Salvà u registru | Callee |
x10-11 | a0-1 | Parametri di funzione / valori di ritornu | Chjamatore |
x12-17 | a2-7 | Paràmetri di funzione | Chjamatore |
x18-27 | a2-11 | Salvà u registru | Callee |
X28-31 | t3-6 | Registru pruvisoriu | Chjamatore |
L'attributu Caller in a tabella sopra significa chì a prucedura chjamata ùn salva micca u valore di u registru, è l'attributu Callee significa chì a prucedura chjamata salva u registru.
Modu Privilege
- L'architettura standard RISC-V include trè modi privilegiati: Modu Machine, Modu Supervisore è Modu User, cum'è mostra in a Tabella 1-3 sottu.
- U modu di macchina hè ubligatoriu, è l'altri modi sò opzionali. Per i dettagli, pudete riferite à The RISC-V Instruction Set Manual Volume II: Privileged Architecture ", chì pò esse scaricatu gratuitamente da RISC-V International. websitu.
Tabella 1-3 Modu di privilegiu di l'architettura RISC-V
Codice | Nome | Abbreviazioni |
0b00 | Modu User | U |
0b01 | U mudellu di supervisore | S |
0b10 | Riservatu | Riservatu |
0b11 | Modu macchina | M |
- I microprocessori di a serie QingKe V3 supportanu dui di sti modi privilegiati.
Modu macchina
- U modu di a macchina hà a più alta autorità, u prugramma in questu modu pò accede à tutti i Controlli è Status Register (CSR), ma ancu ponu accede à tutti l'indirizzi fisici.
- U predeterminatu di putenza hè in u modu di a macchina, quandu l'esekzione di mret (istruzzioni di ritornu in modalità Machine) torna, secondu u statutu di u registru CSR (registru di u statu di a macchina) in u bit MPP, se MPP = 0b00, allora esce da u modu Machine in u modu User, MPP = 0b11, poi cuntinuà à mantene u modu Machine.
Modu d'utilizatore
- U modu d'utilizatore hà u privilegiu più bassu, è solu i registri CSR limitati ponu accede in questu modu. Quandu si verifica una eccezzioni o interruzzione, u microprocessore passa da u Modu User à u Modu Machine per trattà l'eccezzioni è l'interruzioni.
Registre CSR
Una serie di registri CSR sò definiti in l'architettura RISC-V per cuntrullà è registrà u statu di u funziunamentu di u microprocessore. Questi CSR ponu esse allargati da 4096 registri utilizendu un spaziu internu di codificazione di indirizzu di 12 bit dedicatu. È utilizate l'alti dui CSR [11:10] per definisce u permessu di lettura / scrittura di stu registru, 0b00, 0b01, 0b10 per lettura / scrittura permessa è 0b11 per sola lettura. Aduprate i dui bits CSR[9:8] per definisce u livellu di privilegiu più bassu chì pò accede à stu registru, è u valore currisponde à u modu di privilegiu definitu in a Tabella 1-3. I registri CSR implementati in u microprocessore QingKe V3 sò detallati in Capitulu 8.
Eccezzioni
Meccanisimu d'eccezzioni, chì hè un mecanismu per intercepte è trattà "avvenimenti di operazione inusual". I microprocessori di a serie QingKe V3 sò dotati di un sistema di risposta d'eccezzioni chì ponu trattà finu à 256 eccezzioni, cumprese interruzioni. Quandu si verifica una eccezzioni o interruzzione, u microprocessore pò risponde rapidamente è gestisce l'eccezzioni è l'interruzzione.
Tipi di eccezzioni
U cumpurtamentu di u hardware di u microprocessore hè u stessu sia una eccezzioni o una interruzzione. U microprocessatore suspende u prugramma attuale, si move à l'eccezzioni o l'interruzzione di u gestore, è torna à u prugramma suspesu prima quandu u prucessu hè cumpletu. In generale, l'interruzioni sò ancu parte di l'eccezzioni. Sia esattamente l'occurrenza attuale hè una interruzzione o una eccezzioni pò esse viewed through the Machine mode exception cause register cause. L'mcause[31] hè u campu di interruzzione, chì hè utilizatu per indicà se a causa di l'eccezzioni hè una interruzzione o una eccezzioni. mcause[31]=1 significa interruzzione, mcause[31]=0 significa eccezzioni. mcause[30: 0] hè u codice d'eccezzioni, chì hè utilizatu per indicà a causa specifica di l'eccezzioni o u numeru di interruzzione, cum'è mostra in a tabella seguente.
Tabella 2-1 Codici d'eccezzioni di microprocessore V3
Interruzzione | Eccezzioni codici | Sincronu / Asynchrone | Ragione per eccezzioni |
1 | 0-1 | – | Riservatu |
1 | 2 | Asynchrone precisu | NMI interrompe |
1 | 3-11 | – | Riservatu |
1 | 12 | Asynchrone precisu | SysTick interrompe |
1 | 13 | – | Riservatu |
1 | 14 | Sincronu | U software interrompe |
1 | 15 | – | Riservatu |
1 | 16-255 | Asynchrone precisu | Interrupt esterna 16-255 |
0 | 0 | Sincronu | Disalignamentu di l'indirizzu di l'istruzzioni |
0 | 1 | Sincronu | Errore d'accessu di cumandamentu Fetch |
0 | 2 | Sincronu | Istruzzioni illegali |
0 | 3 | Sincronu | Punti d'interruzione |
0 | 4 | Sincronu | Disalignamentu di l'indirizzu di accessu à l'istruzzioni di carica |
0 | 5 | Asynchrone senza precisione | Errore di accessu à u cumandamentu di carica |
0 | 6 | Sincronu | Disalignamentu di l'indirizzu di accessu à l'istruzzioni Store / AMO |
0 | 7 | Asynchrone senza precisione | Errore di accessu à u cumandamentu Store / AMO |
0 | 8 | Sincronu | Chjama di l'ambiente in u modu User |
0 | 11 | Sincronu | Chjama di l'ambiente in modu Machine |
- Sincronu" in a tavula significa chì una struzzione pò esse situata esattamente induve hè eseguita, cum'è una struzzione di pausa o di chjama, è ogni esecuzione di quella struzzione attivarà una eccezzioni. "Asynchronous" significa chì ùn hè micca pussibule di identificà una struzzione, è u valore di l'istruzzioni PC pò esse diversu ogni volta chì una eccezzioni si trova. "Asincrona precisa" significa chì una eccezzioni pò esse situata esattamente à u cunfini di una struzzione, vale à dì, u statu dopu l'esekzione di una struzzione, cum'è una interruzzione esterna. "Non-precision asynchronous" significa chì u cunfini di una struzzione ùn pò esse situatu precisamente, è forse u statu dopu chì una struzzione hè stata interrotta à a mità di l'esekzione, cum'è un errore d'accessu à a memoria.
- L'accessu à a memoria piglia u tempu, è u microprocessore ùn aspetta micca a fine di l'accessu quandu accede à a memoria, ma cuntinueghja à eseguisce l'istruzzioni, quandu l'eccezzioni d'errore d'accessu si ripresentanu, u microprocessore hà digià eseguitu l'istruzzioni sussegwenti, è ùn pò esse precisamente. situatu.
Entra in Eccezzioni
Quandu u prugramma hè in u prucessu di u funziunamentu normale, se per una certa ragione, attiva una eccezzioni o interrupzione. U cumpurtamentu hardware di u microprocessore à questu puntu pò esse riassuntu cum'è seguitu.
- Suspende u flussu di u prugramma attuale è passa à l'esekzione di e funzioni di gestione d'eccezzioni o interruzzione. L'indirizzu di basa di l'ingressu è u modu di indirizzu di l'eccezzioni o a funzione di interruzzione sò definiti da u registru di l'indirizzu di basa di l'eccezzioni mtvec. mtvec[31:2] definisce l'indirizzu di basa di l'eccezzioni o a funzione di interruzzione. mtvec[1:0] definisce u modu di indirizzu di a funzione di gestione. quandu mtvec [1: 0] = 0, tutte l'eccezzioni è l'interruzioni utilizanu una entrata unificata, vale à dì, quandu una eccezzioni o interruzzione si trova, turna à u mtvec [31: 2] definisce l'indirizzu di basa per eseguisce. Quandu mtvec [1: 0] = 1, l'eccezzioni è l'interruzioni utilizanu u modu di tabella di vettore, vale à dì, ogni eccezzioni è interruzzione hè numerata, è l'indirizzu hè offset secondu u numeru d'interruzzione * 4, è quandu si trova una eccezzioni o interruzzione, hè cambiatu. à l'indirizzu di basa definitu da mtvec[31:2] + numero d'interruzzione * 4 Esecuzione. A tavola di vettore di interruzzione cuntene una struzzione per saltà à a funzione di gestione di l'interruzzione, o pò esse altre struzzioni.
- Aghjurnate u registru CSR
- Quandu una eccezzioni o interruzzione hè inserita, u microprocessore aghjurnà automaticamente i registri CSR pertinenti, cumpresu u registru di causa di l'eccezzioni di u Modu Machine, u registru di l'indicatore di l'eccezzioni di u Modu Machine, u registru di u valore di l'eccezzioni di u Modu Machine, è u Statu di u Statu di u Statu di Machine.
Aghjurnà mcause
Cumu l'anu dettu prima, dopu avè inseritu una eccezzioni o interruzzione, u so valore riflette u tipu d'eccezzioni attuale o u numeru di interruzzione, è u software pò leghje stu valore di registru per verificà a causa di l'eccezzioni o determinà a fonte di l'interruzzione, cum'è detallatu in a Tabella 2-1.
Aghjurnà mepc
- A definizione standard di l'indirizzu di ritornu di u microprocessore dopu l'uscita di una eccezzioni o interruzzione hè almacenata in mepc.
- Allora quandu una eccezzioni o una interruzzione si trova, u hardware aghjurnà automaticamente u valore mepc à u valore attuale di l'istruzzioni PC quandu l'eccezzioni hè scontru, o u prossimu valore di PC di istruzzioni pre-eseguita prima di l'interruzzione.
- Dopu chì l'eccezzioni o l'interruzzione hè processata, u microprocessore usa u so valore salvatu cum'è l'indirizzu di ritornu per vultà à u locu di l'interruzzione per cuntinuà l'esekzione.
- Tuttavia, vale a pena nutà chì.
- MEPC hè un registru leggibile è scrivibile, è u software pò ancu mudificà u valore per mudificà u locu di u puntatore di PC chì curreghja dopu à u ritornu.
- Quandu si verifica una interruzzione, vale à dì, quandu a causa di l'eccezzioni registra mcause[31]=1, u valore di e carte hè aghjurnatu à u valore di u PC di a prossima struzzione ineseguita à u mumentu di l'interruzzione.
- Quandu si trova una eccezzioni, u valore di e carte hè aghjurnatu à u valore di l'istruzzioni PC di l'eccezzioni attuale quandu l'eccezzioni provoca registru mcause[31]=0. Allora in questu tempu quandu l'eccezzioni torna, se vultemu direttamente cù u valore di mepc, cuntinuemu à eseguisce l'istruzzioni chì hà generatu l'eccezzioni prima, è à questu tempu, continueremu à entre in l'eccezzioni. Di solitu, dopu avè trattatu l'eccezzioni, pudemu mudificà u valore di mepc à u valore di a prossima struzzione ineseguita è poi vultà. Per esample, s'è no pruvucamu una eccezzioni a causa di call / break, dopu à a gestione di l'eccezzioni, postu chì ricurdà / pause (c.ebreak hè 2 byte) hè una struzzione di 4 byte, avemu solu bisognu di u software per mudificà u valore di mepc à mepc + 4 (c.ebreak hè mepc + 2) è poi torna.
Aghjurnà mtval
Quandu l'eccezzioni è l'interruzioni sò inseriti, u hardware aghjurnà automaticamente u valore di mtval, chì hè u valore chì hà causatu l'eccezzioni. U valore hè tipicamenti.
- Se una eccezzioni hè causata da un accessu di memoria, u hardware guarda l'indirizzu di l'accessu di memoria à u mumentu di l'eccezzioni in mtval.
- Se l'eccezzioni hè causata da una struzzione illegale, u hardware guardarà u codice d'istruzzioni di l'istruzzioni in mtval.
- Se l'eccezzioni hè causata da un puntu di ruptura di hardware, u hardware guardà u valore di u PC à u puntu di ruptura in mtval.
- Per altri eccezzioni, u hardware stabilisce u valore di mtval à 0, cum'è break, l'eccezzioni causata da l'istruzzioni di chjama.
- Quandu entra in l'interruzzione, u hardware stabilisce u valore di mtval à 0.
Aghjurnà mstatus
À l'entrata di eccezzioni è interruzioni, u hardware aghjurnà certi bit in mstatus.
- MPIE hè aghjurnatu à u valore MIE prima di entre in l'eccezzioni o l'interruzzione, è MPIE hè utilizatu per restaurà u MIE dopu chì l'eccezzioni è l'interruzzione sò finite.
- MPP hè aghjurnatu à u modu privilegiatu prima di inserisce eccezzioni è interruzioni, è dopu chì l'eccezzioni è l'interruzioni sò finite, MPP hè utilizatu per restaurà u modu privilegiatu precedente.
- U microprocessore QingKe V3 supporta l'interruzzione di nidificazione in u modu Machine, è MIE ùn serà micca sguassatu dopu avè inseritu eccezzioni è interruzioni.
Aghjurnate u modu di privilegiu di u microprocessore
- Quandu si verificanu eccezzioni è interruzioni, u modu privilegiatu di u microprocessore hè aghjurnatu à u modu Machine.
Funzioni di gestione di eccezzioni
- Dopu à inserisce una eccezzioni o interruzzione, u microprocessore eseguisce u prugramma da l'indirizzu è u modu definitu da u registru mtvec. Quandu si usa l'entrata unificata, u microprocessore piglia una struzzione di salto da l'indirizzu di basa definitu da mtvec [31: 2] basatu annantu à u valore di mtvec [1], o riceve l'eccezzioni è l'indirizzu di gestione di a funzione di interruzzione è va à eseguisce invece. À questu tempu, a funzione di gestione di l'eccezzioni è di l'interruzzione pò determinà se a causa hè una eccezzioni o una interruzzione basatu annantu à u valore di mcause [31], è u tipu è a causa di l'eccezzioni o l'interruzzione currispundenti pò esse ghjudicati da u codice d'eccezzioni è trattatu in cunseguenza.
- Quandu si usa l'indirizzu di basa + u numeru di interruzzione * 4 per l'offset, u hardware salta automaticamente à a tavola di vettore per uttene l'indirizzu d'ingressu di l'eccezzioni o a funzione di interruzzione basatu annantu à u numeru di interruzzione è salta per eseguisce.
Eccezzioni Exit
- Dopu chì l'eccezzioni o l'interruzzione di u gestore hè cumpletu, hè necessariu di esce da u prugramma di serviziu. Dopu avè inseritu l'eccezzioni è l'interruzioni, u microprocessore entra in u Modu Machine da u Modu User, è u trattamentu di l'eccezzioni è l'interruzioni hè ancu cumpletu in u Modu Machine. Quandu hè necessariu di esce da l'eccezzioni è l'interruzioni, hè necessariu di utilizà l'istruzzioni mret per vultà. À questu tempu, u hardware di u microprocessore realizà automaticamente e seguenti operazioni.
- L'indicatore di u PC hè restauratu à u valore di u registru CSR mepc, vale à dì, l'esekzione principia à l'indirizzu d'istruzzioni salvatu da mepc. Hè necessariu attentu à l'operazione offset di mepc dopu chì a gestione di l'eccezzioni hè finita.
- Aghjurnate u statutu di u registru CSR, MIE hè restauratu à MPIE, è MPP hè utilizatu per restaurà u modu privilegiatu di u microprocessore precedente.
- U prucessu di risposta d'eccezzioni tutale pò esse descrittu da a seguente Figura 2-1.
PFIC è Interrupt Control
- U microprocessore QingKe V3 hè cuncepitu cù un Controller d'Interruzione Rapida Programmable (PFIC) chì pò gestisce finu à 256 interruzioni cumprese eccezioni.
- I primi 16 di elli sò fissi cum'è interruzioni internu di u microprocessatore, è u restu sò interruzioni esterni, vale à dì chì u numeru massimu di interruzioni esterni pò esse allargatu à 240. E so caratteristiche principali sò i seguenti.
- 240 interruzioni esterne, ogni dumanda di interruzzione hà bit di cuntrollu indipendente di trigger è maschera, cù bit di statu dedicatu
- A priorità di interruzzione programmabile supporta 2 livelli di nidificazione
- Interruzzione rapida speciale in / out u mecanismu, impilamentu automaticu di hardware è ricuperazione, prufundità massima HPE di 2 livelli
- Meccanismo di risposta à l'interruzzione di Vector Table Free (VTF), accessu direttu programmabile à 2 canali à l'indirizzi di vettori di interruzzione
- Nota: A prufundità massima di nidificazione è a prufundità HPE supportata da i cuntrolli di interruzzione varienu per diversi mudelli di microprocessori, chì ponu esse truvati in a Tabella 1-1.
- A tabella di vettori di interruzioni è eccezzioni hè mostrata in a Tabella 3-1 sottu.
Tabella 3-1 Eccezzioni è tavula di vettori di interruzzione
numeru | Priurità | Tipu | Nome | Descrizzione |
0 | – | – | – | – |
1 | – | – | – | – |
2 | -5 | Fixed | NMI | Interruzzione non-maskable |
3 | -4 | Fixed | EXC | Interruzzione di eccezzioni |
4 | – | – | – | – |
5 | -3 | Fixed | ECALL-M | Interruzzione di callback in modalità macchina |
6-7 | – | – | – | – |
8 | -2 | Fixed | ECALL-U | Interruzzione di callback in u modu d'utilizatore |
9 | -1 | Fixed | BREAKPOINT | Interruzzione di callback di Breakpoint |
10-11 | – | – | – | – |
12 | 0 | Programmable | SysTick | Interruzzione di u timer di u sistema |
13 | – | – | – | – |
14 | 1 | Programmable | SWI | Interruzzione di u software |
15 | – | – | – | – |
16-255 | 2-241 | Programmable | Interruzzione esterna | Interrupt esterna 16-255 |
Nota: ECALL-M, ECALL-U, è BREAKPOINT sò tutti i sfarenti tippi di eccezzioni EXC, chì sò indipindenti in V3B / C per facilità d'utilizazione, è l'indirizzi di entrata 3 sopra sò spartuti cù EXC in V3A.
Set di Registri PFIC
Tabella 3-2 Registri PFIC
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_ISRx | 0xE000E000
-0xE000E01C |
RO | Interruzzione di attivazione di u registru di status x | 0x00000000 |
PFIC_IPRx | 0xE000E020
-0xE000E03C |
RO | Interrupt in pending status register x | 0x00000000 |
PFIC_ITHRESDR | 0xE000E040 | RW | Interrompe u registru di cunfigurazione di u sogliu di priorità | 0x00000000 |
PFIC_VTFBADDRR | 0xE000E044 | RW | Registru di l'indirizzu di basa VTF
Nota: validu solu per V3A |
0x00000000 |
PFIC_CFGR | 0xE000E048 | RW | Interrompe u registru di cunfigurazione
Nota: validu solu per V3A |
0x00000000 |
PFIC_GISR | 0xE000E04C | RO | Interrompe u registru di u statu globale | 0x00000002 |
PFIC_VTFIDR |
0xE000E050 |
RW |
Registru di cunfigurazione di l'ID di interruzzione VTF
Nota: validu solu per V3B/C. |
0x00000000 |
PFIC_VTFADDRRx | 0xE000E060
-0xE000E06C |
RW | VTF x registru di indirizzu offset | 0xXXXXXXXXX |
PFIC_IENRx | 0xE000E100
-0xE000E11C |
WO | L'interruzzione di attivazione di u registru x | 0x00000000 |
PFIC_IRERx | 0xE000E180
-0xE000E19C |
WO | L'interruzzione attiva u registru x | 0x00000000 |
PFIC_IPSRx | 0xE000E200
-0xE000E21C |
WO | Interrompe u registru di impostazione in attesa x | 0x00000000 |
PFIC_IPRRx | 0xE000E280
-0xE000E29C |
WO | Interruzzione in attesa di u registru chjaru x | 0x00000000 |
PFIC_IACTRx | 0xE000E300
-0xE000E31C |
RO | Interrompe u registru di statutu di attivazione x | 0x00000000 |
PFIC_IPRIORx | 0xE000E400
-0xE000E43C |
RW | Interrompe u registru di cunfigurazione di priorità | 0x00000000 |
PFIC_SCTLR | 0xE000ED10 | RW | Registru di cuntrollu di u sistema | 0x00000000 |
Nota:
- NMI, EXC, ECALL-M, ECALL-U è BREAKPOINT sò sempre attivati per difettu.
- ECALL-M, ECALL-U è BREAKPOINT sò un casu di EXC.
- NMI, EXC, ECALL-M, ECALL-U, è BREAKPOINT supportanu l'interruzzione in attesa di l'operazione di cancellazione è di impostazione, ma micca di interrompe l'attivazione di l'operazione di cancellazione è impostazione.
Ogni registru hè descrittu cusì:
Statu di attivazione di l'interruzzione è interrompe i registri di statu in attesa (PFIC_ISR<0-7>/PFIC_IPR<0-7>)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_ISR0 | 0xE000E000 | RO | L'interruzzione 0-31 permette u registru di statutu, un totale di 32 bit di status [n], chì indicanu #n l'interruzzione permette u statu
Nota: NMI è EXC sò attivati per difettu |
Per V3A: 0x0000000C
Per V3B/C: 0x0000032C |
PFIC_ISR1 | 0xE000E004 | RO | L'interruzzione 32-63 attiva u registru di statutu, un totale di 32 bit di status | 0x00000000 |
… | … | … | … | … |
PFIC_ISR7 | 0xE000E01C | RO | L'interruzzione 224-255 attiva u registru di statutu, un totale di 32 bit di statutu | 0x00000000 |
PFIC_IPR0 | 0xE000E020 | RO | Interrupt 0-31 statu pendente | 0x00000000 |
registru, un totale di 32 bit di status [n], chì indicanu u statu pendente di l'interruzzione #n | ||||
PFIC_IPR1 | 0xE000E024 | RO | Interrupt 32-63 registri di statu in attesa, 32 bit di statu in totale | 0x00000000 |
… | … | … | … | … |
PFIC_IPR7 | 0xE000E03C | RO | Interrupt 244-255 registru di statu in attesa, 32 bit di statu in totale | 0x00000000 |
Dui setti di registri sò usati per attivà è disattivà l'interruzioni currispundenti.
Interrompe l'impostazione di attivazione e cancella i registri (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_IENR0 | 0xE000E100 | WO | L'interruzione 0-31 abilita l'impostazione di u registru, un totale di 32 bit di impostazione [n], per l'impostazione di attivazione di interruzione #n
Nota: NMI è EXC sò attivatu per difettu |
0x00000000 |
PFIC_IENR1 | 0xE000E104 | WO | Interrupt 32-63 per attivà u registru di paràmetru, un totale di 32 bit di paràmetru | 0x00000000 |
… | … | … | … | … |
PFIC_IENR7 | 0xE000E11C | WO | Interrupt 224-255 enable setting
registru, un totale di 32 bit di impostazione |
0x00000000 |
– | – | – | – | – |
PFIC_IRER0 | 0xE000E180 | WO | L'interruzioni 0-31 attivanu u registru di cancellazione, un totale di 32 bit di cancellazione [n], per l'interruzione #n attivate di cancellazione Nota: NMI è EXC ùn ponu esse operatu |
0x00000000 |
PFIC_IRER1 | 0xE000E184 | WO | L'interruzzione 32-63 permette un registru chjaru, un totale di 32 bit chiari | 0x00000000 |
… | … | … | … | … |
PFIC_IRER7 | 0xE000E19C | WO | L'interruzzione 244-255 permette un registru chjaru, un totale di 32 bits chjaru | 0x00000000 |
Dui setti di registri sò usati per attivà è disattivà l'interruzioni currispundenti.
Interrompe l'impostazione pendente e cancella i registri (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_IPSR0 |
0xE000E200 |
WO |
Interrupt 0-31 in attesa di registru di impostazione, 32
impostazione bit [n], per l'interruzione #n in attesa di impostazione |
0x00000000 |
PFIC_IPSR1 | 0xE000E204 | WO | Interrupt 32-63 in attesa di u registru di installazione,
totale di 32 bit di configurazione |
0x00000000 |
… | … | … | … | … |
PFIC_IPSR7 | 0xE000E21C | WO | Interrupt 224-255 in attesa di paràmetru
registru, 32 bit di impostazione in totale |
0x00000000 |
– | – | – | – | – |
PFIC_IPRR0 |
0xE000E280 |
WO |
Interruzione 0-31 in attesa di registrazione di cancellazione, un totale di 32 bit di cancellazione [n], per l'interruzione #n
in attesa di chjaru |
0x00000000 |
PFIC_IPRR1 | 0xE000E284 | WO | Interruzzione 32-63 in attesa di registru chjaru,
totale di 32 bit chiari |
0x00000000 |
… | … | … | … | … |
PFIC_IPRR7 | 0xE000E29C | WO | Interruzzione 244-255 in attesa di registru chjaru,
totale di 32 bit chiari |
0x00000000 |
Quandu u microprocessore permette una interruzzione, pò esse stallata direttamente à traversu u registru pendente di interruzzione per attivà l'interruzzione. Aduprate u registru chjaru di interruzzione pendente per sguassà u trigger pendente.
Registru di statu di attivazione di l'interruzzione (PFIC_IACTR<0-7>)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_IACTR0 | 0xE000E300 | RO | L'interruzzione 0-31 attiva u registru di statutu cù 32 bit di status [n], chì indica chì l'interruzzione #n hè stata eseguita | 0x00000000 |
PFIC_IACTR1 | 0xE000E304 | RO | Interrompe 32-63 registri di status di attivazione, 32 bit di status in
tutale |
0x00000000 |
… | … | … | … | … |
PFIC_IACTR7 | 0xE000E31C | RO | Interrupt 224-255 registri di status di attivazione, un totale di 32 bit di statutu | 0x00000000 |
Ogni interruzzione hà un bit di statutu attivu chì hè stallatu quandu l'interruzzione hè entrata è sbulicata da u hardware quandu u mercatu torna.
Interrupt priority and priority threshold registers (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_IPRIOR0 | 0xE000E400 | RW | Interrupt 0 cunfigurazione di priorità. V3A: [7: 4]: Bits di cuntrollu di priorità Se a cunfigurazione ùn hè micca nidificata, senza bit di preemption Se nesting hè cunfiguratu, bit7 hè u bit preempted. [3:0]: Riservatu, fissu à 0 V3B: [7:6]: Bits di cuntrollu di priorità Se a cunfigurazione ùn hè micca nidificata, ùn ci hè micca un bit preemptive cunfiguratu nidificati, tutti i bit sò preempted, ma finu à dui livelli di interruzioni sò permessi di accade [5:0]: Riservatu, fissu à 0 V3C: [7:5]: Bits di cuntrollu di priorità Se a cunfigurazione ùn hè micca nidificata, ùn ci hè micca preemptive bits Se cunfigurati nidificatu, tutti i bits sò preempted, ma finu à dui livelli di interruzioni sò permessi di accade [4: 0]: Riservatu, fissu à 0 Nota: U più chjucu u valore di priorità, u più altu a priorità. Se a listessa interruzzione di priorità di preemption pende à u stessu tempu, l'interruzzione cù a priorità più alta serà eseguita prima. |
0x00 |
PFIC_IPRIOR1 | 0xE000E401 | RW | Interrupt 1 priorità, listessa funzione cum'è PFIC_IPRIOR0 | 0x00 |
PFIC_IPRIOR2 | 0xE000E402 | RW | Interrupt 2 priorità, listessa funzione cum'è PFIC_IPRIOR0 | |
… | … | … | … | … |
PFIC_IPRIOR254 | 0xE000E4FE | RW | Interrupt 254 setting di priorità, stessa funzione cum'è PFIC_IPRIOR0 | 0x00 |
PFIC_IPRIOR255 | 0xE000E4FF | RW | Interrupt 255 priorità, listessa funzione cum'è PFIC_IPRIOR0 | 0x00 |
– | – | – | – | – |
PFIC_ITHRESDR | 0xE000E040 | RW | Interruzzione di u sogliu di priorità
V3A: [31:8]: Riservatu, fissu à 0 [7:4]: U limitu di priorità [3:0]: Riservatu, fissu à 0V3B: [31:8]: Riservatu, fissu à 0 [7:5]: U limitu di priorità [4:0]: Riservatu, fissu à 0V3C: [31:8]: Riservatu, fissu à 0 [7:5]: U limitu di priorità [4:0]: Riservatu, fissu à 0Nota: Per interruzioni cù valore di priorità ≥ soglia, a funzione di serviziu di interruzzione ùn hè micca eseguita quandu si verifica un hang, è quandu stu registru hè 0, significa chì u registru di u soglia hè invalidu. |
0x00 |
Registru di cunfigurazione di l'interruzzione (PFIC_CFGR)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_CFGR | 0xE000E048 | RW | Interrompe u registru di cunfigurazione | 0x00000000 |
Stu registru hè validu solu per V3A, i so bit sò definiti cum'è:
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:16] | KEYCODE | WO | In currispundenza à diversi bit di cuntrollu di destinazione, i dati di identificazione di l'accessu di sicurità currispundenti deve esse scritti simultaneamente per esse mudificate, è i dati di lettura sò fissati à 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF. | 0 |
[15:8] | Riservatu | RO | Riservatu | 0 |
7 | SYSRESET | WO | Reset di u sistema (scrittura simultanea à KEY3). Cancellazione automatica 0.
A scrittura 1 hè valida, a scrittura 0 hè invalida. Nota: Stessa funzione cum'è u bit SYSRESET di registru PFIC_SCTLR. |
0 |
6 | PFICRESET | WO | Reset di u modulu PFIC. Cancellazione automatica 0.
A scrittura 1 hè valida, a scrittura 0 hè invalida. |
0 |
5 | EXPRESS | WO | Interruzzione di eccezzioni in attesa di clarifica (scrittura simultanea à KEY2)
A scrittura 1 hè valida, a scrittura 0 hè invalida. |
0 |
4 | EXCSET | WO | Impostazione in attesa di interruzione di eccezzioni (scrittura simultanea à KEY2)
A scrittura 1 hè valida, a scrittura 0 hè invalida. |
0 |
3 | NMIRESET | WO | Interruzione NMI in attesa di cancellazione (scrittura simultanea à KEY2)
A scrittura 1 hè valida, a scrittura 0 hè invalida. |
0 |
2 | NMISET | WO | Impostazione in attesa di interruzione NMI (Scrittura simultanea su KEY2)
A scrittura 1 hè valida, a scrittura 0 hè invalida. |
0 |
1 | NESTCTRL | RW | L'interruzzione di nidificazione permette u cuntrollu.
1: off; 0: on (scrittura sincrona à KEY1) |
0 |
0 | HWSTKCTRL | RW | HPE permette u cuntrollu
1: off; 0: on (scrittura sincrona à KEY1) |
0 |
Interrompe u registru di u statu globale (PFIC_GISR)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_GISR | 0xE000E04C | RO | Interrompe u registru di u statu globale | 0x00000000 |
I so ghjente sò definiti cum'è
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:14] | Riservatu | RO | Riservatu | 0 |
13 |
LOCKSTA |
RO |
Se u processatore hè attualmente in un statu chjusu:
1: Statu chjusu; 0: Statu micca chjusu. Nota: Stu bit hè validu solu per u V3B/C. |
0 |
12 |
DBGMODE |
RO |
Se u processatore hè attualmente in u statu di debug: 1: Debug state;
0: Statu senza debug. Nota: Stu bit hè validu solu per u V3B/C. |
0 |
11 |
GLOBLI |
RO |
Abilitazione di l'interruzzione globale:
1: Habilita l'interruzzione; 0: Disattiva l'interruzzione. Nota: Stu bit hè validu solu per u V3B/C. |
|
10 | Riservatu | RO | Riservatu | 0 |
9 | GPENDSTA | RO | Se una interruzzione hè attualmente pendente.
1: Iè; 0: Innò. |
0 |
8 | GACTSTA | RO | Se una interruzzione hè attualmente eseguita.
1: Iè; 0: Innò. |
0 |
[7:0] |
NESTSTA |
RO |
Statu di nidificazione di interruzzione attuale. 0x03: in u nivellu 2 interrupt.
0x01: in u nivellu 1 interruzzione. 0x00: ùn ci hè micca interruzzione. Altru: Situazione impussibule. |
0 |
L'indirizzu di basa di l'ID VTF è i registri di l'indirizzu offset (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_VTFBADDRR |
0xE000E044 |
RW |
[31:28]: High 4 bits di l'indirizzu di destinazione di VTF [27:0]: Riservatu
Stu registru hè validu solu per V3A. |
0x00000000 |
PFIC_VTFIDR |
0xE000E050 |
RW |
[31:24]: Number of VTF 3 [23:16]: Number of VTF 2 [15:8]: Number of VTF 1 [7:0]: Number of VTF 0
Stu registru hè validu solu per V3B/C. |
0x00000000 |
– | – | – | – | – |
PFIC_VTFADDRR0 |
0xE000E060 | RW | V3A: [31:24]: VTF 0 interrupt number [23:0]: i 24 bits bassi di l'indirizzu di destinazione VTF, di quale i 20 bits bassi sò cunfigurati per esse validi, è [23:20] hè fissatu à 0.
V3B/C: [31:1]: Indirizzu VTF 0, allineatu à 2 byte [0]:1: Attivà u canali VTF 0 0: Disattivà |
Per V3A: 0x00000000 Per V3B/C: 0xXXXXXXXXX |
PFIC_VTFADDRR1 |
0xE000E064 |
RW |
V3A: [31:24]: VTF 1 numero di interruzione [23:0]: I 24 bits bassi di l'indirizzu di destinazione VTF, di quale i 20 bits bassi sò cunfigurati per esse validi è [23:20] hè fissatu à 0.
V3B/C: [31:1]: Indirizzu VTF 1, allineatu à 2 byte [0]:1: Attivà u canali VTF 1 0: Disattivà |
Per V3A: 0x00000000 Per V3B/C: 0xXXXXXXXXX |
PFIC_VTFADDRR2 |
0xE000E068 |
RW |
V3A: [31:24]: VTF 2 interrupt number [23:0]: i 24 bits bassi di l'indirizzu di destinazione VTF, di quale i 20 bits bassi sò cunfigurati per esse validi, è [23:20] hè fissatu à 0.
V3B/C: [31:1]: Indirizzu VTF 2, allineatu à 2 byte [0]:1: Attivà u canali VTF 2 0: Disattivà |
Per V3A: 0x00000000 Per V3B/C: 0xXXXXXXXXX |
PFIC_VTFADDRR3 | 0xE000E06C | RW | V3A: | Per V3A: |
[31:24]: VTF 3 interrupt number [23:0]: i 24 bits bassi di l'indirizzu di destinazione VTF, di quale i 20 bits bassi sò cunfigurati per esse validi, è [23:20] hè fissatu à 0.
V3B/C: [31:1]: Indirizzu VTF 3, allineatu à 2 byte [0]:1: Attivà u canali VTF 3 0: Disattivà |
0x00000000
Per V3B/C: 0xXXXXXXXXX |
Registru di cuntrollu di u sistema (PFIC_SCTLR)
Nome | Indirizzu di accessu | Accessu | Descrizzione | Resetta u valore |
PFIC_SCTLR | 0xE000ED10 | RW | Registru di cuntrollu di u sistema | 0x00000000 |
Ognunu di elli hè definitu cusì.
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
31 | SYSRESET | WO | Reset di u sistema, auto clear 0. Scrivite 1 hè validu, è scrive 0 hè invalidu.
Nota: Stu bit hè validu solu per V3B/C |
0 |
[30:6] | Riservatu | RO | Riservatu | 0 |
5 | SETEVENT | WO | Pone l'avvenimentu per svegliate u casu WFE. | 0 |
4 |
SEVONPEND | RW | Quandu si verifica un avvenimentu o interrompe un statu pendente, u sistema pò esse svegliatu dopu à l'istruzzioni WFE, o se l'istruzzioni WFE ùn hè micca eseguita, u sistema sarà svegliatu immediatamente dopu a prossima esecuzione di l'istruzzioni.
1: L'avvenimenti attivati è tutte l'interruzioni (Incluse l'interruzioni inattivate) ponu sveglià u sistema. 0: Solu l'avvenimenti attivati è attivati l'interruzioni ponu svegliate u sistema. |
0 |
3 | WFITOWFE | RW | Eseguite u cumandamentu WFI cum'è s'ellu era un WFE.
1: Tratta l'istruzione WFI successiva cum'è una struzzione WFE. 0: Nisun effettu. |
0 |
2 | DORMI PROFUNDU | RW | Modu di bassa putenza di u sistema di cuntrollu. | 0 |
1 : sonnu prufondu 0 : dorme | ||||
1 | SLEEPONEXI T | RW | U statutu di u sistema dopu u cuntrollu abbanduneghja u prugramma di serviziu di interruzzione.
1: U sistema entra in modu di bassa putenza. 0: U sistema entra in u prugramma principale. |
0 |
0 | Riservatu | RO | Riservatu | 0 |
Registri CSR in relazione à l'interruzzione
Inoltre, i seguenti registri CSR anu ancu un impattu significativu nantu à u processu di interruzioni. Interrompe u registru di cuntrollu di u sistema (intsyscr)
Stu registru ùn hè micca validu solu per V3A:
Nome | CSR Indirizzu | Accessu | Descrizzione | Resetta u valore |
intsyscr | 0x804 | URW | Interrompe u registru di cuntrollu di u sistema | 0x0000E002 |
I so ghjente sò definiti cum'è:
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
31 |
LOCK |
URO |
0: Stu registru pò esse lettu è scrittu in modu d'utilizatore;
1: Stu registru pò esse lettu è scrittu solu in modu macchina. Nota: Stu bit di cunfigurazione hè validu da versione 1.0 in poi. |
0 |
[30:6] | Riservatu | URO | Riservatu | 0x380 |
5 |
GIHWSTKNEN |
URW1 |
L'interruzzione globale è l'arrestu di stack hardware sò attivati.
Nota: Stu bit hè spessu usatu in sistemi operativi in tempu reale. Quandu u cuntestu hè cambiatu durante una interruzzione, stabilisce stu bit pò disattivà l'interruzzione globale è spinghje a pila di hardware. Quandu u cambiamentu di cuntestu hè cumpletu è l'interruzzione torna, u hardware serà sguassate automaticamente stu bit. |
0 |
4 | Riservatu | URO | Riservatu | 0 |
[3:2] | PMTCFG | URW | Configurazione di i bit di prelazione di priorità:
00: U numaru di bit di preemption hè 0; 01: U numaru di bit di preemption hè 1; 10: U numaru di bits di preemption hè 2; 11: U numaru di bits di preemption hè 3; Nota: Stu bit di cunfigurazione hè validu dopu 1.0. |
0 |
1 | ASCOLTA | URW | A funzione di nidificazione di interruzzione hè attivata, è u valore fissu hè 1: | 1 |
0: Disattivà;
1: Attivà. Nota: 1. U nivellu di nidificazione attuale hè cuntrullatu da NEST_LVL in CSR 0xBC1; 2. Solu versioni dopu à 1.0 pò esse scrittu. |
||||
0 | HWSTKEN | URW | Abilitazione di stack hardware:
0: A funzione di pressa di stack hardware hè disattivata; 1: A funzione di pressa di stack hardware hè attivata. |
0 |
Registru di l'indirizzu di basa di l'eccezzioni in modalità macchina (mtvec)
Nome | CSR Indirizzu | Accessu | Descrizzione | Resetta u valore |
mtvec | 0x305 | MRW | Eccezzioni registru di indirizzu di basa | 0x00000000 |
I so ghjente sò definiti cum'è
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:2] | BASEADDR [31:2] | MRW | Interrompe l'indirizzu di basa di a tavola di vettore, induve
i bits [9:2] sò fissi à 0. |
0 |
1 | MODE 1 |
MRO |
Modu di ricunniscenza di a tavola vettoriali di interruzzione: 0: Identificà per l'istruzzioni di salto, cù un scopu limitatu, è sustene l'istruzzioni senza salti;
1: Identificà per indirizzu assolutu, sustene a gamma completa, ma deve saltà. Nota: Stu bit hè validu solu per V3B/C. |
0 |
0 | MODE 0 | MRW | Selezzione di u modu d'indirizzu di entrata di interruzzione o eccezzioni.
0: Utilizazione di l'indirizzu d'entrata uniforme. 1: Offset di l'indirizzu basatu annantu à u numeru di interruzzione *4. |
0 |
Per i MCU cù microprocessori di a serie V3, MODE0 hè cunfiguratu per esse 1 per difettu in l'iniziu. file, è l'entrata per l'eccezzioni o l'interruzioni sò offset secondu u numeru di interruzzione *4. Nota chì u microprocessore V3A guarda una struzzione di salto à a tavola di vettore, mentre chì u microprocessore V3B/C pò esse una struzzione di salta o aduprà l'indirizzu assolutu di a funzione di interruzzione, chì hè cunfigurata cum'è un indirizzu assolutu in l'iniziu predeterminatu. file.
Registru di cunfigurazione di u microprocessore (correttore)
Stu registru ùn hè micca validu per V3A:
Nome | CSR Indirizzu | Accessu | Descrizzione | Resetta u valore |
corecfgr | 0xBC0 | MRW | Registru di cunfigurazione di u microprocessore | 0x00000001 |
I so ghjente sò definiti cum'è
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:8] | Riservatu | MRO | Riservatu | 0 |
7 |
CSTA_FAULT_IE |
MRW |
Attivazione di l'interruzzione di l'errore di statu di core:
0: In l'errore di statutu, ùn hè generata alcuna interruzzione NMI; 1: In errore di statutu, l'interruzzione NMI hè generatu. |
0 |
6 | Riservatu | MRO | Mantene 0. | 0 |
5 | IE_REMAP_EN | MRW | A mappatura di u registru MIE permette:
0: L'indirizzu CSR 0x800 hè un registru di sola lettura è u valore di ritornu hè u valore di STATUS; 1: Bits 3 è 7 di l'indirizzu CSR 0x800 sò mappati à bit MIE di u registru STATUS è bit MPIE di u registru STATUS, rispettivamente. |
0 |
4 | Riservatu | MRO | Riservatu | 0 |
3 | ROM_LOOP_ACC | MRW | Attivazione di l'accelerazione di loop di istruzzioni di l'area ROM:
0: Spegne a funzione di accelerazione ciclica in l'area ROM; 1: L'istruzzioni cuntinui cù un corpu di loop in 128 byte seranu accelerati cumplettamente, mentre chì quelli chì anu un corpu di loop in 256 byte seranu parzialmente accelerati; |
0 |
2 | ROM_JUMP_ACC | MRW | Accelerazione di salto di l'area di ROM attivata:
0: Disattivà l'accelerazione di salto di l'istruzzioni di l'area ROM; 1: Abilita l'accelerazione di salto di istruzzioni in l'area ROM. |
0 |
[1:0] | FETCH_MODE | MRW | Modu di cattura:
00: Prefetch hè disattivatu. A funzione di prefetch di l'istruzzioni hè disattivata per evità operazioni di ricuperazione di istruzzioni invalide, è ci hè almenu una struzzione valida nantu à u pipeline CPU. Stu mudellu hà u cunsumu di energia più bassu, è u so rendimentu scende da circa 2 ~ 3 volte. 01: Modu Prefetch 1. Quandu a funzione di prefetch di l'istruzzioni hè attivata, u CPU continuarà à accede à a memoria di l'istruzzioni finu à chì u numeru di struzzioni per esse eseguitu in u buffer d'istruzzioni internu supera un certu nùmeru, o u buffer d'istruzzioni hè pienu, è a furmazione di struzzioni serà sospesa; (U fallimentu di a prediczione di CPU purterà à l'operazione di ricerca redundante, è in certi casi, l'unità di esecuzione introduverà 0 ~ 2 cicli di bolle, è a prestazione di a maiò parte di i prugrammi ùn diminuite ovviamente); 10: Riservatu; |
0x1 |
Interrompe u registru di cuntrollu nidificatu (inestcr)
Stu registru hè invalidu solu per V3A:
Nome | CSR Indirizzu | Accessu | Descrizzione | Resetta u valore |
investitore | 0xBC1 | MRW | Interrompe u registru di cuntrollu nidificatu | 0x00000000 |
I so ghjente sò definiti cum'è
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
31 | Riservatu | MRO | Riservatu | 0 |
30 | NEST_OV | MRW | Bit di bandiera di overflow nidificati di interruzione/eccezione, scrive 1 per sguassà:
0: L'interruzzione ùn hà micca overflow; 1: Interrompe a bandiera di overflow. Nota: L'interruzione di overflow si verifica solu quandu eseguisce a funzione di serviziu di interruzzione secundaria per generà un'eccezzioni d'istruzione o una interruzzione NMI. À questu tempu, l'eccezzioni è l'interruzzione NMI entranu nurmale, ma u CPU stack overflows, cusì ùn pudete micca esce da questa eccezzioni è NMI interrompu. |
0 |
[29:12] | Riservatu | MRO | Riservatu | 0 |
[11:8] | NEST_STA | MRO | Bit di bandiera di statu nidificatu:
0000: Nisuna interruzzione; 0001: Livellu 1 interruzzione; 0011: interruzzione di livellu 2 (nidificazione di 1 livellu); |
0 |
0111: Livellu 3 interruzzione (overflow);
1111: Livellu 4 interruzzione (overflow). |
||||
[7:2] | Riservatu | MRO | Riservatu | 0 |
[1:0] | NEST_LVL | MRW | Livellu di nidificazione:
00: A nidificazione hè pruibita è a funzione di nidificazione hè disattivata; 01: Nidificazione di primu livellu, chì attiva a funzione di nidificazione; Altru: Invalidu. Nota: Scrivite 10 o 11 à questu campu, è u campu serà stabilitu à 01. Quandu scrivite 11 à questu campu, leghjite stu registru per uttene u più altu livellu di nidificazione di u chip. |
0 |
U modu di l'utilizatori di l'interruzzione globale di attivazione di u registru (intern)
Stu registru hè invalidu solu per V3A:
Nome | CSR Indirizzu | Accessu | Descrizzione | Resetta u valore |
gintenr | 0x800 | URW | U registru di attivazione di l'interruzzione globale | 0x00000000 |
Stu registru hè adupratu per cuntrullà l'attivazione è a maschera di l'interruzzione globale. L'abilitazione è a maschera di l'interruzzione globale in u modu di a macchina pò esse cuntrullata da i bit MIE è MPIE in status, ma stu registru ùn pò micca esse operatu in u modu d'utilizatore.
L'interruzzione globale attivata u registru gintenr hè a mappatura di MIE è MPIE in mstatus, è pò esse usata per stabilisce è sguassate MIE è MPIE operandu gintenr in modu d'utilizatore.
Ognunu di elli hè definitu cum'è:
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:13] | Riservatu | URO | Riservatu | 0 |
[12:11] | MPP | URO | Entra in u modu privilegiatu prima di l'interruzzione. | 0 |
[10:8] | Riservatu | URO | Riservatu | 0 |
7 | MPIE | URW | Quandu 0xBC0 (CSR) bit5 hè attivatu, questu bit
pò esse lettu è scrittu in modu d'utilizatore. |
0 |
[6:4] | Riservatu | URO | Riservatu | 0 |
3 | Mie | URW | Quandu 0xBC0 (CSR) bit5 hè attivatu, questu bit
pò esse lettu è scrittu in modu d'utilizatore. |
0 |
[1:0] | Riservatu | URO | Riservatu | 0 |
Interrupt Nesting
In cunjunzione cù l'interruzzione, u registru di cunfigurazione PFIC_CFGR è u registru di priorità d'interruzzione PFIC_IPRIOR, pò esse permessu di nidificazione di interruzioni. Abilita a nidificazione in u registru di cunfigurazione di l'interruzzione (A nidificazione hè attivata per difettu per i microprocessori di a serie V3) è cunfigurà a priorità di l'interruzzione currispondente. U più chjucu u valore di priorità, u più altu hè a priorità. U più chjucu u valore di u bit di preemption, u più altu a priorità di preemption. Se ci sò interruzioni appiccicate à u stessu tempu sottu a listessa priorità di preemption, u microprocessore risponde à l'interruzzione cù u valore di priorità più bassa (priorità più alta) prima.
Hardware Prologue/Epilogue (HPE)
- Quandu si trova una eccezzioni o interruzzione, u microprocessore ferma u flussu di u prugramma attuale è passa à l'esekzione di l'eccezzioni o a funzione di gestione di l'interruzzione, u situ di u flussu di u prugramma attuale deve esse salvatu. Dopu à l'eccezzioni o l'interruzzione torna, hè necessariu di restaurà u situ è cuntinuà l'esekzione di u flussu di u prugramma arrestatu. Per i microprocessori di a serie V3, u "situ" quì si riferisce à tutti i registri di Caller Saved in a Tabella 1-2.
- I microprocessori di a serie V3 supportanu u salvamentu automaticu in un ciclu di hardware di 16 di i registri salvati in forma di chjamante in una zona di stack interna chì ùn hè micca visibile per l'utilizatore. Quandu una eccezzioni o una interruzzione torna, u ciculu unicu hardware restaura automaticamente e dati da l'area di stack interna à i registri in forma di 16. HPE supporta nidificazione finu à 2 livelli in profondità.
- Un schematicu di a pila di pressione di u microprocessore hè mostratu in a figura seguente.
Nota:
- E funzioni di interruzzione chì utilizanu l'HPE anu da esse compilate cù MRS o a so catena di strumenti furnita è a funzione di interruzzione deve esse dichjarata cù __attribute__((interrupt ("WCH-Interrupt-fast"))).
- A funzione di interruzzione cù stack push hè dichjarata da __attribute__((interrupt())).
Tabella Vector Free (VTF)
- U Controller d'Interruzione Rapida Programmable (PFIC) furnisce 4 canali VTF, vale à dì, accessu direttu à l'entrata di a funzione di interruzzione senza passà per u prucessu di ricerca di a tabella di vettori di interruzzione.
- U canali VTF pò esse attivatu scrivendu u so numeru di interruzzione, l'indirizzu di basa di a funzione di serviziu di interruzzione è l'indirizzu offset in u registru di u controller PFIC currispundente mentre cunfigurà una funzione di interruzzione nurmale.
- U prucessu di risposta PFIC per interruzioni veloci è senza table hè mostratu in a Figura 3-2 sottu.
Prutezzione di a memoria fisica PMP
- Per migliurà a sicurità di u sistema, u modulu di prutezzione di memoria fisica (PMP) hè cuncepitu secondu u standard di l'architettura RISC-V per i microprocessori di a serie V3 d'orzu highland. A gestione di diritti d'accessu di finu à 4 regioni fisiche hè supportata. I permessi includenu attributi di lettura (R), scrittura (W) è esecutà (X), è a lunghezza di l'area prutetta pò esse stabilita à 4 bytes almenu. U modulu PMP hà sempre effettu in u modu di l'utilizatori, ma pò esse effettue opzionalmente chjudendu l'attributu (L) in u modu macchina.
- Se l'accessu viola u limitu di permessu attuale, pruvucarà una interruzzione anormale. U modulu PMP include quattru gruppi di registri di cunfigurazione di 8-bit (Un gruppu di 32-bit) è quattru gruppi di registri d'indirizzu, tutti chì anu da esse accessu in modu di macchina da l'istruzzioni CSR.
- Nota: U numaru di zoni prutetti supportati da PMP in diversi mudelli di microprocessori pò esse diversu, è u numeru supportatu da i registri pmpcfg è pmpaddr hè ancu diversu. Vede a Table 1-1 per i dettagli.
Set di registru PMP
A lista di i registri CSR supportati da u modulu PMP di u microprocessore V3 hè mostratu in a Tabella 4-1 sottu.
Tabella 4-1 Set di registri di moduli PMP
Nome | indirizzu CSR | Accessu | Descrizzione | Resetta u valore |
pmpcfg0 | Saulės sistemos kardaninis velenas | MRW | Registru di cunfigurazione PMP 0 | 0x00000000 |
pmpaddr0 | Talpa: pritaikoma pagal poreikį | MRW | Registru di indirizzu PMP 0 | 0xXXXXXXXXX |
pmpaddr1 | Talpa: pritaikoma pagal poreikį | MRW | Registru di indirizzu PMP 1 | 0xXXXXXXXXX |
pmpaddr2 | Talpa: pritaikoma pagal poreikį | MRW | Registru di indirizzu PMP 2 | 0xXXXXXXXXX |
pmpaddr3 | Talpa: pritaikoma pagal poreikį | MRW | Registru di indirizzu PMP 3 | 0xXXXXXXXXX |
Pmp
pmpcfg hè u registru di cunfigurazione di l'unità PMP, è ogni registru cuntene quattru campi di pumping 8-bit, chì currispondenu à a cunfigurazione di quattru regioni, è u pumping rapprisenta u valore di cunfigurazione di a regione i. U so furmatu hè mostratu in a tavula 4-2.
Tabella 4-2 registru pmpcfg0
pmpcfg hè utilizatu per cunfigurà l'area I è a so definizione di bit hè descritta in a seguente tabella 4-3.
Table 4-3 pmp
Bit | Nome | Descrizzione |
7 | L | A serratura hè attivata è pò esse sbloccata in modu di macchina. 0: Ùn chjusu;
1: Lock u registru pertinente. |
[6:5] | – | Riservatu |
[4:3] | A | L'allineamentu di l'indirizzu è a selezzione di l'area di prutezzione. 00: OFF (PMP off)
01: TOR (Prutezzione di l'allineamentu superiore) 10: NA4 (Prutezzione fissa di quattru byte) 11: NAPOT (2 (G + 2) Byte prutezzione, G≥1) |
2 | X | Attributu eseguibile. |
0: Nisun permessu di eseguisce;
1: Eseguite permessu. |
||
1 |
W |
Attributu scrivibile.
0: Nisun permessu di scrittura 1: Permissione di scrittura. |
0 |
R |
Attributu leggibile
0: Nisun permessu di lettura 1: Permissione di lettura. |
pmpaddr
U registru pmpaddr hè utilizatu per cunfigurà l'indirizzu di l'area I. A definizione standard hè sottu à l'architettura RV32, chì hè a codificazione di i 32 bits superiori di un indirizzu fisicu 34-bit, è u so formatu hè indicatu in a seguente tabella 4-4.
Tuttu u spaziu fisicu di l'indirizzu fisicu di u microprocessore V3 hè 4G, cusì i dui bits superiori di stu registru ùn sò micca usati.
Tabella 4-4 pmpaddr
Quandu NAPOT hè sceltu, u bit bassu di u registru di l'indirizzu hè ancu utilizatu per indicà a dimensione di l'area di prutezzione attuale, cum'è mostra in a tabella chì seguita, induve "y" hè un pocu di u registru.
Tabella 4-5 Tabella di relazione trà a cunfigurazione PMP è u registru di indirizzu è l'area prutetta.
pmpaddr | pmpcfg. A | L'indirizzu di a basa è a dimensione currispondente |
aaaaaaaaaaaaaaaaaaaaaaaaa | NA4 | Cù 'yy...yyyy00' cum'è l'indirizzu di basa, l'area di 4 byte hè prutetta. |
aaaa... aaaa0 | NAPOT | Cù 'yy...yyy000' cum'è l'indirizzu di basa, l'area di 8 byte hè prutetta. |
aaaa... aaa01 | NAPOT | Cù 'yy...yy0000' cum'è l'indirizzu di basa, l'area di 16 byte hè prutetta. |
yyyy…y011 | NAPOT | Cù 'yy...y00000' cum'è l'indirizzu di basa, l'area di 16 byte hè prutetta. |
… | … | … |
aaa01…111 | NAPOT | Cù 'y0...000000' cum'è l'indirizzu di basa, l'area di 231 byte hè prutetta. |
yy011…111 | NAPOT | Prutegge tutta l'area di 232 byte. |
Meccanismu di prutezzione
X / W / R in pmpcfg hè utilizatu per stabilisce l'autorità di prutezzione di l'area I, è a violazione di l'autorità pertinente pruvucarà una eccezzioni currispondente:
- Quandu pruvate à piglià l'istruzzioni in l'area PMP senza l'autorità di esecuzione, pruvucarà una eccezzioni d'errore d'accessu à l'istruzzioni (mcause=1).
- Quandu pruvate di scrive dati in l'area PMP senza permessu scrittu, pruvucarà una eccezzioni d'errore (mcause = 7) in l'accessu à l'istruzzioni di a tenda.
- Quandu pruvate di leghje dati in l'area PMP senza permessu di lettura, pruvucarà un errore d'accessu di memoria anormali (mcause = 5) per l'istruzzioni di carica.
A in pmpcfg hè utilizatu per stabilisce a gamma di prutezzione è l'allineamentu di l'indirizzu di a regione I, è per prutege a memoria di A_ADDR ≤ regione < i > < B_ADDR (i dui A_ADDR è B_ADDR sò richiesti per esse allinati in 4 bytes):
- Se B _ ADDR–A_ADDR = = 22, u modu NA4 hè aduttatu;
- Se B _ ADDR–A_ADDR = = 2 (G+2), G≥1, è un indirizzu _ hè 2 (g+2), u metudu NAPOT hè aduttatu;
- Altrimenti, u modu TOP hè aduttatu.
Tabella 4-6 Metodi di currispundenza di l'indirizzu PMP
Un valore | Nome | Descrizzione |
0b00 | OFF | Nisuna zona da prutege |
0b01 | TOR | Prutezzione di l'Area Allineata Top.
Sottu pmp pmpaddri = B_ADDR >> 2. Nota: Se l'area 0 di PMP hè cunfigurata cum'è modalità TOR (i = 0), u limite inferiore di l'area di prutezzione hè l'indirizzu 0, vale à dì 0 ≤ addr < pmpaddr0, tuttu in u intervallu currispondente. |
0b10 | NA4 | Prutezzione di zona fissa di 4 byte.
pmp |
0b11 | NAPOT | Prutegge a regione 2 (G + 2) cù G ≥ 1, quandu A_ADDR hè 2 (G + 2) allineatu. pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< > 1. |
- U bit L in pmp
- I microprocessori di a serie QingKe V3 supportanu a prutezzione di parechje zone. Quandu a listessa operazione currisponde à parechje zoni à u stessu tempu, a zona cù u numeru più chjucu hè cumminata prima.
Timer di sistema (SysTick)
- U microprocessore di a serie QingKe V3 hè cuncepitu cù un contatore 32-bit o 64-bit (SysTick) in l'internu. A so fonte di clock hè u clock di u sistema o a so divisione di 8 frequenze, è V3A sustene solu a divisione di 8 frequenze.
- Pò furnisce una basa di u tempu, u timing, è u tempu di misurazione per un sistema operatore in tempu reale. Diversi tipi di registri implicati in u timer anu indirizzi di mappatura differenti, cum'è mostra in i seguenti tabelle 5-1 è 5-2.
Tabella 5-1 Lista di i registri V3A SysTick
Nome | Indirizzu di accessu | Descrizzione | Resetta u valore |
STK_CTLR | 0xE000F000 | Registru di cuntrollu di u contatore di u sistema | 0x00000000 |
STK_CNTL | 0xE000F004 | Contatore di u sistema registru bassu | 0xXXXXXXXXX |
STK_CNTH | 0xE000F008 | Contatore di u sistema registru altu
Nota: Solu validu per V3A. |
0xXXXXXXXXX |
STK_CMPLR | 0xE000F00C | U valore di paraguni di u conte di u sistema registru bassu | 0xXXXXXXXXX |
STK_CMPHR | 0xE000F010 | U valore di paraguni di u conte di u sistema registru altu
Nota: Solu validu per V3A. |
0xXXXXXXXXX |
Tabella 5-2 Lista di registri V3 SysTick di altri mudelli
Nome | Indirizzu di accessu | Descrizzione | Resetta u valore |
STK_CTLR | 0xE000F000 | Registru di cuntrollu di u contatore di u sistema | 0x00000000 |
STK_SR | 0xE000F004 | Registru di statutu di u contatore di u sistema | 0x00000000 |
STK_CNTL | 0xE000F008 | U registru bassu di u contatore di u sistema | 0xXXXXXXXXX |
STK_CMPLR | 0xE000F010 | Conte u valore di paragone registru bassu | 0xXXXXXXXXX |
Ogni registru hè descrittu in dettagliu cum'è seguita.
Registru di cuntrollu di u sistema (STK_CTLR)
Tabella 5-3 Registri di cuntrollu SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:5] | Riservatu | RO | Riservatu | 0 |
4 |
MODE |
RW |
Modu di cunti: 1: Count down;
0: cunta. Nota: Invalidu per V3A. |
0 |
3 |
STRE |
RW |
Bit di attivazione di u conte di ricaricà automaticu:
1: Cuntate di novu da 0 dopu à cuntà finu à u valore di paraguni, è conta da u valore di paraguni di novu dopu à cuntà finu à 0; 0: Cuntinuà à cuntà up/down. Nota: Invalidu per V3A. |
0 |
2 |
STCLK |
RW |
Bit di selezzione di fonti di contraclock:
1: HCLK cum'è basa di tempu; 0: HCLK/8 cum'è basa di tempu. Nota: ùn hè micca validu per V3A, chì sustene solu HCLK/8 cum'è basa di tempu. |
0 |
1 | SITE | RW | Bit di cuntrollu di attivazione di l'interruzzione di contatore: | 0 |
1: Abilita l'interruzzione di u contatore; 0: Disattivà l'interruzzione di u contatore.
Nota: Invalidu per V3A. |
||||
0 | STE | RW | U contatore di u sistema permette un bit di cuntrollu. 1: Abilita u contatore di u sistema STK;
0: Disattivate u contatore di u sistema STK è u contatore cessà di cuntà. |
0 |
Registru di statutu di u contatore di u sistema (STK_SR)
Stu registru ùn hè micca applicatu à V3A.
Tabella 5-4 Registru bassu di u contatore SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
31 |
SWIE |
RW |
Activazione di l'interruzzione di u software (SWI): 1: Interruzzione di u software di attivazione;
0: Spegni u trigger. Nota: Stu bit deve esse sguassatu dopu à entre in u software interruzzione, altrimenti sempre attivate. |
0 |
[30:1] | Riservatu | RO | Riservatu | 0 |
0 |
CNTIF |
RW |
Cunta bandiera di paragone, scrive 0 chjaramente, scrive 1 hè invalidu:
1: Cuntate finu à u valore di paraguni è cuntate finu à 0; 0: U valore di paraguni ùn hè micca righjuntu. |
0 |
Registru bassu di u contatore di u sistema (STK_CNTL)
Tabella 5-5 Registru bassu di u contatore SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:0] | CNTL | RW | U valore attuale di u conte di contatore hè 32 bit più bassu. Per V3A, stu registru pò esse leghje cum'è 8-bit / 16-bit
/32-bit, ma pò esse scrittu solu cum'è 8-bit, è altri mudelli ùn sò micca limitati. |
0xXXXXXX XXX |
Nota: Registrate STK_CNTL è registrate STK_CNTH in V3A custituiscenu un contatore di sistema di 64 bit.
Registru altu di u contatore di u sistema (STK_CNTH)
Tabella 5-6 Registru altu di u contatore SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:0] | CNTH | RW | U valore attuale di u cuntatore hè 32 bit più altu. Stu registru pò esse lettu da 8-bit/16-bit/32-bit, ma pò esse scrittu solu da 8-bit.
Nota: Solu validu per V3A. |
0xXXXXXX XXX |
Nota: Registrate STK_CNTL è registrate STK_CNTH in V3A custituiscenu un contatore di sistema di 64 bit.
Registru bassu di u valore di cunfrontu di u sistema (STK_CMPLR)
Tabella 5-7 Registru bassu di valore di paragone SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:0] | CMPL | RW | Pone u valore di paragone di u contatore à 32 bit più bassu. Quandu u valore CMP è u valore CNT sò uguali, una interruzzione STK serà attivata. Per V3A, stu registru pò esse lettu cum'è 8-bit /16-bit /32-bit, ma pò esse solu
scrittu cum'è 8-bit, è altri mudelli ùn sò micca limitati. |
0xXXXXXX XXX |
Nota: U registru STK_CMPLR è u registru STK_CMPHR in V3A custituiscenu inseme u valore di paragone di u contatore di 64 bit.
Registru altu di u valore di cunfrontu di u sistema (STK_CMPHR)
Tabella 5-8 Registru altu di valore di paragone SysTick
Bit | Nome | Accessu | Descrizzione | Resetta u valore |
[31:0] | CMPH | RW | Pone u valore di paragone di u contatore 32 bit più altu. L'interruzzione STK serà attivata quandu u valore CMP è u valore CNT sò uguali.
Stu registru pò esse lettu da 8-bit/16-bit/32-bit, ma pò esse scrittu solu da 8-bit. Nota: Solu validu per V3A. |
0xXXXXXX XXX |
Nota: U registru STK_CMPLR è u registru STK_CMPHR in V3A custituiscenu inseme u valore di paragone di u contatore di 64 bit.
Configurazione di prucessore di bassa putenza
- I microprocessori di a serie QingKe V3 supportanu u statu di sonnu attraversu l'istruzzioni WFI (Wait for Interrupt) per ottene un bassu cunsumu di energia statica.
- Inseme cù u registru di cuntrollu di u sistema di PFIC (PFIC_SCTLR), ponu esse implementati diversi modi di Sleep è istruzioni WFE.
Entre in u sonnu
- I microprocessori di a serie QingKe V3 ponu andà à dorme in dui modi, Wait for Interrupt (WFI) è Wait For Event (WFE). U metudu WFI significa chì u microprocessore và à dorme, aspetta una interruzzione per svegliate, è poi si sveglia à l'interruzzione currispondente per eseguisce. U metudu WFE significa chì u microprocessore si mette in dorme, aspetta chì un avvenimentu si svegliate, è si sveglia per cuntinuà à eseguisce u flussu di prugramma precedente.
- U standard RISC-V sustene l'istruzzioni WFI, è u cumandamentu WFI pò esse eseguitu direttamente per entra in u sonnu cù u metudu WFI. Per u metudu WFE, u bit WFITOWFE in u registru di cuntrollu di u sistema PFIC_SCTLR hè utilizatu per cuntrullà i cumandamenti WFI successivi cum'è u prucessu WFE per ottene u metudu WFE per entra in u sonnu.
- A prufundità di u sonnu hè cuntrullata secondu u bit SLEEPDEEP in PFIC_SCTLR.
- Se u SLEEPDEEP in u registru PFIC_SCTLR hè sbulicatu à cero, u microprocessore entra in modalità Sleep è u clock di l'unità interna hè permessu di esse disattivatu eccettu per SysTick è parte di a logica di sveglia.
- Se SLEEPDEEP in u registru PFIC_SCTLR hè stabilitu, u microprocessore entra in u modu di sonnu profondu è tutti i clock clock sò permessi di esse disattivati.
- Quandu u microprocessore hè in modu Debug, ùn hè micca pussibule entre in ogni modu di Sleep.
Sleep Wakeup
I microprocessori di a serie QingKe V3 ponu esse svegliati dopu à u sonnu per via di WFI è WFE in i seguenti modi.
Dopu à u mètudu WFI va à dorme, si pò esse svegliatu da
- U microprocessore pò esse svegliatu da a fonte di interruzzione rispostu da u controller di interruzzione. Dopu u svegliu, u microprocessore eseguisce prima a funzione di interruzzione.
- Entra in u modu Sleep, a dumanda di debug pò fà sveglià u microprocessore è entra in un sonnu profondu, a dumanda di debug ùn pò micca sveglià u microprocessore.
Dopu chì u metudu WFE va à dorme, u microprocessore pò esse svegliatu da i seguenti.
- Avvenimenti interni o esterni, quandu ùn ci hè micca bisognu di cunfigurà u controller di interruzzione, svegliate è cuntinueghja à eseguisce u prugramma.
- Se una fonte di interruzzione hè attivata, u microprocessore hè svegliatu quandu una interruzzione hè generata, è dopu u svegliu, u microprocessore eseguisce a funzione di interruzzione prima.
- Se u bit SEVONPEND in PFIC_SCTLR hè cunfiguratu, u cuntrollu di l'interruzzione ùn permette micca l'interruzzione, ma quandu un novu signalu in attesa di interruzzione hè generatu (u signale pendente generatu prima ùn hà micca effettu), pò ancu fà sveglià u microprocessore, è a bandiera pendente di interruzzione currispundente deve esse sbulicata manualmente dopu u svegliu.
- Entre a dumanda di debug in modalità Sleep pò fà sveglià u microprocessore è entra in un sonnu profondu, a dumanda di debug ùn pò micca sveglià u microprocessore.
- Inoltre, u statu di u microprocessore dopu u svegliu pò esse cuntrullatu cunfigurà u bit SLEEPONEXIT in PFIC_SCTLR.
- SLEEPONEXIT hè stabilitu è l'ultimu livellu di istruzzioni di ritornu d'interruzione (mret) attivarà u modu di dorme WFI.
SLEEPONEXIT hè sguassatu senza effettu.
Diversi prudutti MCU dotati di microprocessori di a serie V3 ponu aduttà diverse modi di sonnu, disattivate diverse periferiche è orologi, implementà diverse politiche di gestione di l'energia è metudi di sveglia secondu diverse cunfigurazioni di PFIC_SCTLR, è realizà diversi modi di bassa putenza.
Debug Support
- I microprocessori di a serie QingKe V3 includenu un modulu di debug hardware chì sustene operazioni cumplesse di debugging. Quandu u microprocessore hè suspesu, u modulu di debug pò accede à i GPR di u microprocessore, CSRs, Memoria, dispositi esterni, etc. attraversu cumandamenti astratti, struzzioni di implementazione di buffer di prugramma, etc. U modulu di debug pò suspende è ripiglià l'operazione di u microprocessore.
- U modulu di debug segue a specificazione RISC-V External Debug Support Version0.13.2, a documentazione dettagliata pò esse scaricata da u RISC-V International. websitu.
Modulu di Debug
- U modulu di debug in u microprocessore, capace di realizà operazioni di debug emesse da l'ospite di debug, include.
- Accessu à i registri attraversu l'interfaccia di debug
- Resettate, suspende è ripiglià u microprocessore attraversu l'interfaccia di debug
- Leghjite è scrivite a memoria, i registri d'istruzzioni è i dispositi esterni attraversu l'interfaccia di debug
- Implementa parechje struzzioni arbitrarie attraversu l'interfaccia di debug
- Stabilisci i punti di rottura di u software attraversu l'interfaccia di debug
- Stabilisci i punti di rottura hardware attraversu l'interfaccia di debug
- Supporta l'esecuzione automatica di cumandamenti astratti
- Support debugging unicu passu
- Nota: V3A ùn supporta micca i punti di rottura di hardware, i punti di rottura di hardware V3B supportanu a corrispondenza di l'indirizzu di l'istruzzioni, è i punti di rottura di u hardware V3C supportanu l'indirizzu di istruzzioni è l'indirizzu di dati.
- I registri interni di u modulu di debugging utilizanu un codice d'indirizzu 7-bit, è i seguenti registri sò implementati in i microprocessori di a serie QingKe V3.
Tabella 7-1 Lista di registru di moduli di debug
Nome | Indirizzu di accessu | Descrizzione |
dati 0 | 0x04 | U registru di dati 0, pò esse usatu per u almacenamiento temporale di dati |
dati 1 | 0x05 | U registru di dati 1, pò esse usatu per u almacenamiento temporale di dati |
decontrol | 0x10 | Registru di cuntrollu di u modulu di debug |
dmstatus | 0x11 | Registru di statutu di u modulu di debug |
hartinfo | 0x12 | Registru di u statutu di u microprocessore |
astratti | 0x16 | Registru di statutu di cumandamentu astrattu |
cumanda | 0x17 | Registru di cumandamentu astrattu |
auto astratta | 0x18 | Esecuzione automatica di u cumandamentu astrattu |
progbuf0-7 | 0x20-0x27 | I registri di cache di istruzzioni 0-7 |
stopsum0 | 0x40 | Pausa u registru di statutu |
- L'ospite di debug pò cuntrullà a sospensione di u microprocessore, ripresa, resettata, etc. cunfigurà u registru di decontrol. U standard RISC-V definisce trè tippi di cumandamenti astratti: registru d'accessu, accessu veloce è memoria d'accessu.
- U microprocessore QingKe V3A sustene solu l'accessu à u registru, altri mudelli supportanu l'accessu à u registru è à a memoria, ma micca un accessu veloce. L'accessu à i registri (GPR, CSR) è l'accessu cuntinuu à a memoria pò esse realizatu da cumandamenti astratti.
- U modulu di debug implementa 8 registri di cache d'istruzzioni progbuf0-7, è l'ospite di debug pò cache parechje struzzioni (chì ponu esse struzzioni cumpressi) à u buffer è pò sceglie di cuntinuà à eseguisce l'istruzzioni in i registri di cache d'istruzzioni dopu avè eseguitu u cumandamentu astrattu o eseguite direttamente l'istruzzioni cached.
- Nota chì l'ultima struzzione in i prugrammi deve esse una struzzione "ebreak" o "c.ebreak". L'accessu à l'almacenamiento, periferiche, etc. hè ancu pussibule attraversu cumandamenti astratti è struzzioni cache in i prugrammi.
- Ogni registru hè descrittu in dettagliu cum'è seguita.
- Registru di dati 0 (data0)
Tabella 7-2 definizione di u registru di dati
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | dati 0 | RW | Registru di dati 0, utilizatu per l'almacenamiento temporale di dati | 0 |
Registru di dati 1 (data1)
Table 7-3 data1 definizione di u registru
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | dati 1 | RW | Registru di dati 1, utilizatu per l'almacenamiento temporale di dati | 0 |
Registru di cuntrollu di u modulu di debug (decontrol)
Stu registru cuntrolla a pausa, resettore è ripresa di u microprocessore. L'ospite di debug scrive dati à u campu currispundenti per ottene una pausa (haltreq), reset (ndmreset), ripresa (resumereq). Discrivite i seguenti.
Table 7-4 definizione di u registru di decontrol
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
31 | haltreq | WO | 0: Cancella a dumanda di pausa
1: Mandate una dumanda di pausa |
0 |
30 | riprendereq | W1 | 0: Invalidu
1: Ripristina u microprocessore attuale Nota: Scrivite 1 hè validu è u hardware hè sbulicatu dopu chì u microprocessore hè ricuperatu |
0 |
29 | Riservatu | RO | Riservatu | 0 |
28 | ackhavereset | W1 | 0: Invalidu
1: Sguassate u bit di statutu di cugliera di u microprocessore |
0 |
[27:2] | Riservatu | RO | Riservatu | 0 |
1 | ndmreset | RW | 0: Cancella reset
1: Resettate u sistema tutale altru da u modulu di debug |
0 |
0 | disattivà | RW | 0: Resettate u modulu di debug
1: U modulu Debug funziona bè |
0 |
Registru di statutu di u modulu di debug (statu dm)
- Stu registru hè utilizatu per indicà u statutu di u modulu di debug è hè un registru di sola lettura cù a seguente descrizzione di ogni bit.
Table 7-5 Definizione di u registru dmstatus
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:20] | Riservatu | RO | Riservatu | 0 |
19 | allhavereset | RO | 0: Invalidu
1: Reset di u microprocessore |
0 |
18 | alcunu settu | RO | 0: Invalidu
1: Reset di u microprocessore |
0 |
17 | allresumeack | RO | 0: Invalidu
1: Reset di u microprocessore |
0 |
16 | anyresumeack | RO | 0: Invalidu
1: Reset di u microprocessore |
0 |
[15:14] | Riservatu | RO | Riservatu | 0 |
13 | alluviale | RO | 0: Invalidu
1: U microprocessore ùn hè micca dispunibule |
0 |
12 | ogni prufittu | RO | 0: Invalidu
1: U microprocessore ùn hè micca dispunibule |
0 |
11 | tutti in corsa | RO | 0: Invalidu
1: U microprocessore hè in esecuzione |
0 |
10 | ogni corsa | RO | 0: Invalidu
1: U microprocessore hè in esecuzione |
0 |
9 | arrestatu | RO | 0: Invalidu
1: U microprocessore hè in sospensjoni |
0 |
8 | ogni fermatu | RO | 0: Invalidu
1: Microprocessore fora di sospensjoni |
0 |
7 | autenticatu |
RO |
0: L'autentificazione hè necessaria prima di utilizà u modulu di debug
1: U modulu di debugging hè statu certificatu |
0x1 |
[6:4] | Riservatu | RO | Riservatu | 0 |
[3:0] | versione | RO | Versione di l'architettura di supportu di u sistema di debugging 0010: V0.13 | 0x2 |
Registru di statutu di u microprocessore (hartinfo)
Stu registru hè utilizatu per furnisce infurmazioni nantu à u microprocessore à l'ospite di debug è hè un registru di sola lettura cù ogni bit descrittu cum'è seguita.
Tabella 7-6 definizione di registru hartinfo
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:24] | Riservatu | RO | Riservatu | 0 |
[23:20] | scratch | RO | U numeru di registri di scratch supportatu | 0x3 |
[19:17] | Riservatu | RO | Riservatu | 0 |
16 | Accessu à i dati | RO | 0: U registru di dati hè mappatu à l'indirizzu CSR
1: U registru di dati hè mappatu à l'indirizzu di memoria |
0x1 |
[15:12] | dimensione di dati | RO | Numero di registri di dati | 0x2 |
[11:0] | aghjunghje dati |
RO |
L'indirizzu offset di i dati di u registru di dati 0,
chì l'indirizzu di basa hè 0xe0000000, hè sottumessu à una lettura specifica. |
0xXXX |
Controlu di cumandamentu astrattu è registri di statutu (astratti)
Stu registru hè utilizatu per indicà l'esekzione di u cumandamentu astrattu. L'ospite di debug pò leghje stu registru per sapè s'ellu l'ultimu cumandamentu astrattu hè eseguitu o micca è pò verificà se un errore hè generatu durante l'esekzione di u cumandamentu astrattu è u tipu di l'errore, chì hè descrittu in dettagliu cum'è seguita.
Tabella 7-7 astratti registru definizioni
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:29] | Riservatu | RO | Riservatu | 0 |
[28:24] | prugbufsize | RO | Indica u numeru di prugramma buffer di prugramma
i registri di cache |
0x8 |
[23:13] | Riservatu | RO | Riservatu | 0 |
12 | occupatu | RO | 0: Nisun cumandamentu astrattu hè in esecuzione
1: Ci sò cumandamenti astratti chì sò eseguiti Nota: Dopu l'esekzione, u hardware hè sguassatu. |
0 |
11 | Riservatu | RO | Riservatu | 0 |
[10:8] | cmder | RW | Errore di cumandamentu astrattu tippu 000: Nisun errore
001: Esecuzione di cumandamenti astratti per scrive à cumandamenti, astratti, registri auto astratti o leghje è scrive à dati è registri progbuf 010: Ùn supporta micca u cumandamentu astrattu attuale 011: Esecuzione di u cumandamentu astrattu cù eccezzioni 100: U microprocessore ùn hè micca sospesu o indisponibile è ùn pò micca eseguisce cumandamenti astratti 101: Errore di bus 110: Errore di bit di parità durante a cumunicazione 111: Altri errori Nota: Per a scrittura di bit 1 hè utilizatu per sguassà u zero. |
0 |
[7:4] | Riservatu | RO | Riservatu | 0 |
[3:0] | scontu | RO | Numero di registri di dati | 0x2 |
- L'ospiti di debugging ponu accede à i GPR, i registri CSR, è a memoria scrivendu diversi valori di cunfigurazione in u registru di cumandamentu astrattu.
- Quandu accede à i registri, i bit di registru di cumanda sò definiti cum'è seguita.
- Tabella 7-8 Definizione di u registru di cumanda quandu accede à i registri
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:24] | tipu cmd | WO | Tipu di cumanda astratta 0: Registru d'accessu;
1: Accessu rapidu (micca supportatu); 2: Accessu à a memoria. |
0 |
23 | Riservatu | WO | Riservatu | 0 |
[22:20] | aarsize | WO | Larghezza di bit di dati di u registru di accessu 000: 8-bit
001: 16-bit 010: 32-bit |
0 |
011: 64-bit (micca supportatu) 100: 128-bit (micca supportatu)
Nota: Quandu accede à i registri in virgola flottante FPR, solu l'accessu 32-bit hè supportatu. |
||||
19 | aarpostincrement | WO | 0: Nisun effettu
1: Aumentà automaticamente u valore di u regno dopu à accede à u registru |
0 |
18 | post exec | WO | 0: Nisun effettu
1:Eseguite u cumandamentu astrattu è poi eseguite u cumandimu in progbuf |
0 |
17 | trasferimentu | WO | 0: Ùn eseguite micca l'operazione specificata da scrive
1: Eseguite a manipulazione specificata da scrive |
0 |
16 | scrive | WO | 0: Copia dati da u registru specificatu à data0 1: Copia dati da u registru data0 à u registru specificatu |
0 |
[15:0] | regnu | WO | Specificate i registri di accessu 0x0000-0x0fff sò CSR 0x1000-0x101f sò GPR |
0 |
Quandu accede à a memoria, i bits in u registru di cumanda sò definiti cusì.
Table 7-9 Definizione di cumandamentu Registru quandu accede à a memoria
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:24] | tipu cmd | WO | Tipu di cumanda astratta 0: Registru d'accessu;
1: Accessu rapidu (micca supportatu); 2: Accessu à a memoria. |
0 |
23 | aamvirtual | WO | 0: Accessu à l'indirizzu fisicu;
1: Accessu à l'indirizzu virtuale. |
0 |
[22:20] | taglia di bracciu | WO | Larghezza di bit di dati di memoria d'accessu 000: 8-bit;
001: 16-bit; 010: 32-bit; 011: 64-bit (micca supportatu); 100: 128-bit (micca supportatu); |
0 |
19 | aampostincrement | WO | 0: Nisuna influenza;
1: Dopu avè accede à a memoria cù successu, aumentate l'indirizzu guardatu in u registru di data1 da u numeru di bytes chì currispondenu à a larghezza di bit cunfigurata da a dimensione di u bracciu. Aamsize = 0, accessu da byte, data1 plus 1. Aamsize=1, accessed by half-word, data1 plus 2. aamsize=2, accessed by bit, data1 plus 4. |
0 |
18 | post exec | WO | 0: Nisuna influenza;
1: Eseguite u cumandamentu in progbuf dopu avè eseguitu u cumandamentu astrattu. |
0 |
17 | Riserva | RO | Riservatu | 0 |
16 |
scrive |
WO |
0: Leghjite i dati da l'indirizzu specificatu da data1 à data0
1: Scrivite dati in data0 à l'indirizzu specificatu da dati 1. |
0 |
[15:14] |
specificu à u scopu |
WO |
Definizione di u modu di lettura è scrittura Scrive:
00, 01: Scrivite direttamente à a memoria; 10: Dopu chì i dati in data0 sò OR cù i bits di dati in a memoria, u risultatu hè scrittu in a memoria (Solu l'accessu di a parolla hè supportatu). 11: Dopu a summa di i dati in data0 cù i bits di dati in a memoria, scrivite u risultatu in a memoria (Solu l'accessu à a parolla hè supportatu). Leghjite: 00, 01, 10, 11: Leghjite 0 direttamente da a memoria. |
0 |
[13:0] | Riserva | RO | Riservatu |
Registru di esecuzione automatica di cumandamentu astrattu (auto astrattu)
Stu registru hè utilizatu per cunfigurà u modulu di debugging. Quandu leghje è scrive progbufx è dati di u modulu di debugging, u cumandamentu astrattu pò esse eseguitu di novu.
A descrizzione di stu registru hè a siguenti:
Tabella 7-10 definizione di registru automaticu astrattu
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:16] | autoexecprogbuf | RW | Se un bit hè stabilitu, a lettura è a scrittura currispondente di progbufx pruvucarà u cumandamentu astrattu in u registru di cumanda per esse eseguitu di novu.
Nota: A serie V3 hè cuncepita cù 8 progbufs, currispundenti à bits [23:16]. |
0 |
[15:12] | Riserva | RO | Riservatu | 0 |
[11:0] | autoexecdata |
RW |
Se un bit hè stabilitu à 1, a lettura è a scrittura currispundenti di u registru di dati pruvucarà u cumandamentu astrattu in u registru di Command per esse eseguitu di novu.
Nota: a serie V3 hè cuncepitu cù dui dati registri, chì currispondenu à i bit [1:0]. |
0 |
Registru di cache di l'istruzzioni (progbufx)
Stu registru hè utilizatu per almacenà ogni struzzione, è implementà l'operazione currispundenti, cumpresu 8, chì deve attente à l'ultima esecuzione chì deve esse "break" o "c.ebreak".
Tabella 7-11 definizione di u registru progbuf
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | prugbuf | RW | Istruzzioni di codificazione per operazioni di cache, chì
pò include struzzioni di compressione |
0 |
Pause status register (haltsum0)
Stu registru hè utilizatu per indicà se u microprocessore hè suspesu o micca. Ogni bit indica l'estatus suspesu di un microprocessore, è quandu ci hè solu un core, solu u bit più bassu di stu registru hè utilizatu per indicà.
Table 7-12 definizione di u registru haltsum0
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:1] | Riservatu | RO | Riservatu | 0 |
0 | stopsum0 | RO | 0: U microprocessore opera nurmale
1: Stop microprocessore |
0 |
- In più di i registri sopra citati di u modulu di debug, a funzione di debug implica ancu alcuni registri CSR, principarmenti u cuntrollu di debug è u registru di statutu dcsr è l'istruzzioni di debug pointer dpc, chì sò descritti in dettagliu cum'è seguita.
- Debug cuntrollu è registru di statutu (dcsr)
Table 7-13 Definizione di u registru dcsr
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:28] | xdebugver | DRO | 0000: A debugging esterna ùn hè micca supportata 0100: Supporta a debugging esterna standard
1111: U debugging esternu hè supportatu, ma ùn scontra micca a specificazione |
0x4 |
[27:16] | Riservatu | DRO | Riservatu | 0 |
15 | ruttura | DRW | 0: U cumandamentu di pausa in u modu di macchina si cumporta cum'è descrittu in u privilegiu file
1: U cumandamentu di pausa in u modu di a macchina pò entre in u modu di debug |
0 |
[14:13] | Riservatu | DRO | Riservatu | 0 |
12 | rompe |
DRW |
0: U cumandamentu di pausa in u modu d'utilizatore si cumporta cum'è descrittu in u privilegiu file
1: U cumandamentu di pausa in u modu d'utilizatore pò entre in u modu di debug |
0 |
11 | passu | DRW | 0: L'interruzioni sò disattivate sottu debugging in un passu
1: Abilita l'interruzioni sottu debugging in un passu |
0 |
10 | Riservatu | DRO | Riservatu | 0 |
9 | ferma u tempu | DRW | 0: Timer di u sistema chì funziona in modu Debug
1: U timer di u sistema si ferma in modu Debug |
0 |
[8:6] | causa | DRO | Motivi per entre in debugging
001: Ingressu di debugging in forma di cumanda di pausa (priurità 3) 010: Ingressu di debugging in forma di modulu di trigger (priurità 4, u più altu) 011: Ingressu di debugging in forma di dumanda di pausa (priurità 1) 100: debugging in forma di debugging unicu passu (priorità 0, u più bassu) |
0 |
101: entre in u modu di debug direttamente dopu à u reset di u microprocessore (priurità 2) Altri: Riservati | ||||
[5:3] | Riservatu | DRO | Riservatu | 0 |
2 | passu | DRW | 0: disattivate a debugging in un passu
1: Attivà u debugging unicu passu |
0 |
[1:0] | Prev | DRW | Modu privilegiu 00: Modu d'utilizatore
01: Modu supervisore (micca supportatu) 10: Riservatu 11: Modu macchina Nota: Registrate u modu privilegiatu quandu entra in u modu di debug, u debugger pò mudificà stu valore per mudificà u modu privilegiatu quandu esce da debug. |
0 |
Puntatore di prugramma in modu di debug (DPC)
- Stu registru hè utilizatu per almacenà l'indirizzu di a prossima struzzione per esse eseguita dopu chì u microprocessore entra in u modu di debug, è u so valore hè aghjurnatu cù diverse regule secondu u mutivu di entre in debug. dpc register hè descrittu in dettagliu cum'è seguita.
Tabella 7-14 Definizioni di registru dpc
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | DPC | DRW | Indirizzu d'istruzzioni | 0 |
I reguli per l'aghjurnà i registri sò mostrati in a tabella chì seguita.
Tabella 7-15 regule d'aghjurnamentu dpc
Entre in u metudu di debugging | dpc Regoli di aghjurnà |
ruttura | Indirizzu di l'istruzione Ebreak |
un passu unicu | Indirizzu d'istruzzioni di l'istruzzione successiva di l'istruzzione attuale |
modulu di trigger | Temporaneamente micca supportatu |
dumanda di fermà | Indirizzu di a prossima struzzione per esse eseguita quandu entra in Debug |
Interfaccia di Debug
- Differenti da u standard JTAG interfaccia definita da RISC-V, u microprocessore di a serie QingKe V3 adopta 1- una interfaccia di debug seriale di filu / 2 fili è seguita u protocolu d'interfaccia di debug WCH V1.0.
- L'interfaccia di debug hè rispunsevule per a cumunicazione trà l'ospite di debug è u modulu di debug è realiza l'operazione di lettura / scrittura di l'ospite di debug à i registri di u modulu di debug.
- WCH hà cuncepitu WCH_Link è open source u so schematicu è u prugramma binariu files, chì pò esse usatu per debugging tutti i microprocessori di l'architettura RISC-V.
- Consultate u Manuale di Protocollo di Debug WCH per protokolli specifichi di l'interfaccia di debug.
Lista di Registri CSR
- L'architettura RISC-V definisce una quantità di Registers di Control è Status (CSR) per cuntrullà è registrà u statu di u funziunamentu di u microprocessore.
- Alcune di e CSR sò state introdutte in a sezione precedente, è questu capitulu detallarà i registri CSR implementati in i microprocessori di a serie QingKe V3.
Lista di Registri CSR
Tabella 8-1 Lista di i Registri CSR di Microprocessori
Tipu | Nome | CSR Indirizzu | Accessu | Descrizzione |
RISC-V
CSR standard |
marchid | 0xF12 | MRO | Registru di u numeru di l'architettura |
mimpidu | 0xF13 | MRO | Registru di numerazione di implementazione di hardware | |
mstatus | 0x300 | MRW | Registru di statutu | |
missa | 0x301 | MRW | Registru di set di istruzioni di hardware | |
mtvec | 0x305 | MRW | Eccezzioni registru di indirizzu di basa | |
mscratch | 0x340 | MRW | Modu macchina stagregistru | |
MEPC | 0x341 | MRW | Registru di puntatore di prugramma di eccezzioni | |
mcause | 0x342 | MRW | Registru di causa di eccezzioni | |
mtval | 0x343 | MRW | Registru di valore eccezziunale | |
pmpcfg | 0x3A0+i | MRW | Registru di cunfigurazione PMP | |
pmpaddr | 0x3B0+i | MRW | Registru di indirizzu PMP | |
tselect | Saulės sistemos kardaninis velenas | MRW | Debug trigger selection register | |
tdata1 | Saulės sistemos kardaninis velenas | MRW | Debug trigger data register 1 | |
tdata2 | Saulės sistemos kardaninis velenas | MRW | Debug trigger data register 2 | |
dcsr | Talpa: pritaikoma pagal poreikį | DRW | Debug cuntrollu è registri di statutu | |
dpc | Talpa: pritaikoma pagal poreikį | DRW | Registru di puntatore di u prugramma di modu di debug | |
dscratch0 | Talpa: pritaikoma pagal poreikį | DRW | Modu di debug stagregistru 0 | |
dscratch1 | Talpa: pritaikoma pagal poreikį | DRW | Modu di debug stagregistru 1 | |
CSR definitu da u venditore |
gintenr | 0x800 | URW | U registru di attivazione di l'interruzzione globale |
intsyscr | 0x804 | URW | Interrompe u registru di cuntrollu di u sistema | |
corecfgr | 0xBC0 | MRW | Registru di cunfigurazione di u microprocessore | |
inestcr | 0xBC1 | MRW | Interrompe u registru di cuntrollu nidificatu |
Registri CSR Standard RISC-V
- Registru di u numeru di l'architettura (marchid)
- Stu registru hè un registru di sola lettura per indicà u numeru attuale di l'architettura hardware di u microprocessore, chì hè principalmente cumpostu di codice di venditore, codice di architettura, codice di serie è codice di versione. Ognunu di elli hè definitu cusì.
Tabella 8-2 definizione di u registru Marchid
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
31 | Riservatu | MRO | Riservatu | 1 |
[30:26] | venditore 0 | MRO | Codice di u fabricatore 0
Fixed à a lettera "W" codice |
0x17 |
[25:21] | venditore 1 | MRO | Codice di u fabricatore 1
Fixed à a lettera "C" codice |
0x03 |
[20:16] | venditore 2 | MRO | Codice di u fabricatore 2
Fixed à a lettera "H" codice |
0x08 |
15 | Riservatu | MRO | Riservatu | 1 |
[14:10] | Arch | MRO | Codice di l'architettura | 0x16 |
L'architettura RISC-V hè fissata à u codice lettera "V". | ||||
[9:5] | Serial | MRO | Codice di serie
Serie QingKe V3, fissata à u numeru "3" |
0x03 |
[4:0] | Versione | MRO | codice di versione
Pò esse a versione "A", "B", "C" è altre lettere di u codice |
x |
U numaru di u fabricatore è u numeru di versione sò alfabeticu, è u numeru di serie hè numericu. A tabella di codificazione di e lettere hè mostrata in a tabella chì seguita.
Tabella 8-3 Tabella di mappatura alfabetica
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 |
- Frà elli, u microprocessore QingKe V3A, u registru leghje torna à 0.
Registru di numerazione di implementazione hardware (limpidu)
- Stu registru hè principalmente cumpostu di codici di venditore, ognunu di i quali hè definitu cum'è seguita.
Tabella 8-4 definizione di registru limpidu
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
31 | Riservatu | MRO | Riservatu | 1 |
[30:26] | venditore 0 | MRO | Codice di u fabricatore 0
Fixed à a lettera "W" codice |
0x17 |
[25:21] | venditore 1 | MRO | Codice di u fabricatore 1
Fixed à a lettera "C" codice |
0x03 |
[20:16] | venditore 2 | MRO | Codice di u fabricatore 2
Fixed à a lettera "H" codice |
0x08 |
15 | Riservatu | MRO | Riservatu | 1 |
[14:8] | Riservatu | MRO | Riservatu | 0 |
[7:4] | Minore | MRO | U numeru di subversione | 0xX |
[3:0] | Major | MR 0 | Numero di versione maiò | 0xX |
- Stu registru hè leggibile in ogni implementazione di a macchina, è in u processore di a serie QingKe V3A, stu registru leghje à zero.
Registru di statutu di u modu di a macchina (mstatus)
- Stu registru hè statu parzialmente discrittu in a sezione precedente, è i so ghjente sò posizionati cusì.
Tabella 8-5 definizione di registru mstatus
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:13] | Riservatu | MRO | Riservatu | 0 |
[12:11] | MPP | MRW | Modu privilegiatu prima di entre in a pausa | 0 |
[10:8] | Riservatu | MRO | Riservatu | 0 |
7 | MPIE | MRW | Statu di attivazione di l'interruzzione prima di entre in una interruzzione | 0 |
[6:4] | Riservatu | MRO | Riservatu | 0 |
3 | Mie | MRW | Attivazione di l'interruzzione di u modu di a macchina | 0 |
[2:0] | Riservatu | MRO | Riservatu | 0 |
- U campu MPP hè utilizatu per salvà u modu privilegiatu prima di entre in l'eccezzioni o l'interruzzione è hè utilizatu per restaurà u modu privilegiatu dopu à esce da l'eccezzioni o interruzzione. MIE hè u bit di attivazione di l'interruzzione globale, è quandu entre in l'eccezzioni o l'interruzzione, u valore di MPIE hè aghjurnatu à u valore di MIE, è deve esse nutatu chì in i microprocessori di a serie QingKe V3, MIE ùn serà micca aghjurnatu à 0 prima di ultimu livellu di interruzioni nidificate per assicurà chì l'interruzzione di nidificazione in u modu Machine cuntinueghja à esse eseguita. Quandu una eccezzioni o interruzzione hè uscita, u microprocessore torna à u modu Machine salvata da MPP, è u MIE hè restauratu à u valore MPIE.
- U microprocessore QingKe V3 supporta u Modu Machine è u Modu User, se avete bisognu di fà u microprocessore solu travaglià in Modu Machine, pudete stabilisce u MPP à 0x3 in l'inizializazione di u boot. file, vale à dì, dopu à vultà, ferma sempre in modu Machine.
Registru di set di istruzioni hardware (misa)
- Stu registru hè utilizatu per indicà l'architettura di u microprocessore è l'estensioni di l'istruzzioni supportati, ognuna di quali hè descritta cum'è seguita.
Tabella 8-6 definizione di registru misa
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:30] | MXL | MRO | Lunghezza di a parolla di a macchina 1:32
2: 64 3: 128 |
1 |
[29:26] | Riservatu | MRO | Riservatu | 0 |
[25:0] | Estensioni | MRO | Instruction set extensions | x |
- U MXL hè utilizatu per indicà a lunghezza di a parolla di u microprocessore, QingKe V3 sò microprocessori 32-bit, è u duminiu hè fissu à 1.
- L'estensioni sò aduprate per indicà chì u microprocessore supporta i dettagli di l'istruzzioni allargati, ognunu indica una classa di estensioni, a so descrizzione dettagliata hè mostrata in a tabella seguente.
Table 8-7 Instruction Set Extension Details
Bit | Nome | Descrizzione |
0 | A | Estensione atomica |
1 | B | Tentativamente riservatu per l'estensione Bit-Manipulation |
2 | C | Estensione cumpressa |
3 | D | Extension à virgule flottante à doppia precisione |
4 | E | RV32E base ISA |
5 | F | Extension à virgule flottante à précision unique |
6 | G | Estensioni standard supplementari prisenti |
7 | H | Estensione Hypervisor |
8 | I | RV32I/64I/128I base ISA |
9 | J | Tentativamente riservatu à l'estensione di Lingue Tradutte Dinamicamente |
10 | K | Riservatu |
11 | L | Tentativamente riservatu per l'estensione Decimal Floating-Point |
12 | M | Estensione integer Multiply/Divide |
13 | N | L'interruzioni à livellu di l'utilizatori sò supportate |
14 | O | Riservatu |
15 | P | Tentativamente riservatu per l'estensione Packed-SIMD |
16 | Q | Extension à virgule flottante à quadruple précision |
17 | R | Riservatu |
18 | S | Modu supervisore implementatu |
19 | T | Tentativamente riservatu per l'estensione di Memoria Transazionale |
20 | U | Modu d'utilizatore implementatu |
21 | V | Tentativamente riservatu per l'estensione Vector |
22 | W | Riservatu |
23 | X | Estensioni non standard presenti |
24 | Y | Riservatu |
25 | Z | Riservatu |
- Per esample, per u microprocessore QingKe V3A, u valore di u registru hè 0x401001105, chì significa chì l'architettura di l'istruzzioni supportata hè RV32IMAC, è hà implementazione in modalità User.
Registru di l'indirizzu di basa di l'eccezzioni in modalità macchina (mtvec)
- Stu registru hè utilizatu per almacenà l'indirizzu di basa di l'eccezzioni o di l'interruzzione è i dui bits più bassi sò usati per cunfigurà u modu è u metudu d'identificazione di a tavola di vettore cum'è descritta in a Sezione 3.2.
Modu macchina stagregistru ing (mscratch)
Table 8-8 Definizioni di u registru mscratch
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | mscratch | MRW | Storage di dati | 0 |
Stu registru hè un registru 32-bit leggibile è scrivibile in modu di macchina per l'almacenamiento temporale di dati. Per esample, quandu si inserisce una eccezzioni o un gestore di interruzzione, u puntatore di stack d'utilizatore SP hè almacenatu in questu registru è u puntatore di stack di interruzzione hè assignatu à u registru SP. Dopu à esce da l'eccezzioni o l'interruzzione, restaurà u valore di l'usu di stack pointer SP da zero. Questu hè, a pila d'interruzzione è a pila d'utilizatori ponu esse isolate.
Registru di puntatore di u prugramma di eccezzioni in modalità macchina (mappa)
Table 8-9 Definizioni di u registru mepc
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | mepc | MRW | Puntatore di prucedura di eccezzioni | 0 |
- Stu registru hè utilizatu per salvà l'indicatore di u prugramma quandu entra in una eccezzioni o interruzzione.
- Hè utilizatu per salvà l'istruzzioni PC pointer prima di entre in una eccezzioni quandu una eccezzioni o interruzzione hè generata, è mepc hè utilizatu cum'è l'indirizzu di ritornu quandu l'eccezzioni o l'interruzzione hè trattata è utilizata per una eccezzioni o interrupzione di ritornu.
- Tuttavia, hè impurtante à nutà chì.
- Quandu si trova una eccezzioni, mepc hè aghjurnatu à u valore di PC di l'istruzzioni chì genera l'eccezzioni.
- Quandu si verifica una interruzzione, mepc hè aghjurnatu à u valore di PC di l'istruzzioni dopu.
- Quandu avete bisognu di rinvià una eccezzioni dopu a trasfurmazioni di l'eccezzioni, duvete attente à mudificà u valore di u mepc, è più dettagli ponu esse truvati in Capitulu 2 Eccezzioni.
Registru di causa di l'eccezzioni in modalità macchina (mcause)
Tabella 8-10 mcause registru definizione
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
31 | Interruzzione | MRW | Campu di indicazione di interruzzione 0: Eccezzioni
1: Interruzzione |
0 |
[30:0] | Codice di eccezzioni | MRW | Per i codici di eccezzioni, vede a Tabella 2-1 per i dettagli | 0 |
- Stu registru hè principalmente usatu per almacenà a causa di l'eccezzioni o u numeru di interruzzione di l'interruzzione. U so bit più altu hè u campu Interrupt, chì hè utilizatu per indicà se l'occurrenza attuale hè una eccezzioni o una interruzzione.
- U bit più bassu hè u codice d'eccezzioni, chì hè utilizatu per indicà a causa specifica. I so dettagli ponu esse truvati in Capitulu 2 Eccezzioni.
Registru di valore di eccezzioni di u modu di macchina (mtval)
Table 8-11 Definizione di u registru mtval
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | mtval | MRW | Valore eccezziunale | 0 |
- Stu registru hè utilizatu per mantene u valore chì hà causatu l'eccezzioni quandu si trova una eccezzioni. Per i dettagli cum'è u valore è u tempu di u so almacenamentu, fate riferimentu à u Capitulu 2 Eccezzioni.
Registru di cunfigurazione PMP (pmpcfg
- Stu registru hè principalmente utilizatu per cunfigurà l'unità di prutezzione di a memoria fisica, è ogni 8 bits di stu registru sò usati per cunfigurà a prutezzione di una zona. Per piacè riferite à u Capitulu 4 per a definizione dettagliata.
Registru di indirizzu PMP (pmpaddr
- Stu registru hè principalmente utilizatu per a cunfigurazione di l'indirizzu di l'unità di prutezzione di a memoria fisica, chì codifica i 32 bits superiori di un indirizzu fisicu di 34 bit. Per piacè riferite à u Capitulu 4 per u metudu di cunfigurazione specificu.
Registru di puntatore di prugramma in modu di debug (DPC)
- Stu registru hè utilizatu per almacenà l'indirizzu di a prossima struzzione per esse eseguita dopu chì u microprocessore entra
- U modu di debug è u so valore sò aghjurnati cù diverse regule secondu u mutivu di entre in debug. Vede a Sezione 6.1 per una descrizzione dettagliata.
Debug trigger select register (selezzione)
- Hè validu solu per i microprocessori chì supportanu i breakpoints di hardware è supportanu i breakpoints di 4 canali à u massimu, è i so 2 bits più bassi sò validi.
- Quandu cunfigurà ogni puntu di rupture di u canali, avete bisognu di selezziunà u canali currispundenti attraversu stu registru prima di cunfigurazione.
Table 8-12 sceglite a definizione di u registru
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:2] | Riservatu | MRO | Riservatu | 0 |
[1:0] |
SELEZIONA |
MRW |
U registru di selezzione di u canali di breakpoint hè cunfiguratu, vale à dì, dopu chì u canali currispondente hè sceltu, i registri tdata1 è tdata2 ponu esse operati per cunfigurà un breakpoint.
infurmazione. |
X |
Debug trigger data register 1 (tdata1)
Hè validu solu per i microprocessori chì supportanu i breakpoints di hardware. I microprocessori supportanu solu l'indirizzu di l'istruzzioni è l'indirizzu di dati, induve u bit TYPE di u registru tdata1 hè un valore fissu di 2, è altri bits cunformanu à a definizione di cuntrollu in u standard di debugging.
Tabella 8-13 definizione di u registru tdata1
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:28] | TIPU | MRO | Definizione di u tipu di breakpoint, tipu di cuntrollu. | 0x2 |
27 |
DMODE |
MRO |
0: I registri pertinenti di u flip-flop ponu esse mudificate in u modu di macchina è in u modu di debugging;
1: Solu u modu di debug pò mudificà i registri pertinenti di u flip-flop. |
1 |
[26:21] |
MASKMAX |
MRO |
Quandu MATCH = 1, a gamma massima di putenza esponenziale di currispundenza hè permessa, vale à dì, a gamma massima di currispundenza permessa hè 231 bytes. |
0x1F |
[20:13] | Riservatu | MRO | Riservatu | 0 |
12 |
Azzione |
MRW |
Stabilite u modu di trattamentu quandu attivate un puntu di breakpoint:
0: Quandu attivate, entre in u breakpoint è chjamà l'interruzzione; 1: Entre in modu di debugging quandu attivatu. |
0 |
[11:8] | Riservatu | MRO | Riservatu | 0 |
7 |
MATCH |
MRW |
Cunfigurazione di pulitica currispondente:
0: Match quandu u valore di trigger hè uguale à TDATA2; 1: U valore di trigger coincide cù u bit m altu di TDATA2, induve m = 31–n, è n hè a prima citazione 0 di TDATA2 (partendu da u bit bassu). |
0 |
6 |
M |
MRW |
Abilita u flip-flop in u modu M:
0: Disattivà u trigger in u modu M; 1: Abilita u trigger in u modu M. |
0 |
[5:4] | Riservatu | MRO | Riservatu | 0 |
3 |
U |
MRW |
Abilita u trigger in u modu U:
0: Disattiva u trigger in u modu U; 1: Attiva u trigger in u modu U. |
0 |
2 |
ESECUTI |
MRW |
Istruzzioni di lettura di l'indirizzu attivatu attivatu: 0: Disable;
1: Attivà. |
0 |
1 |
STORE |
MRW |
L'indirizzu di scrittura di dati attivatu attivatu: 0: Disable;
1: Attivà. |
0 |
0 |
LOAD |
MRW |
L'indirizzu di lettura di dati attivatu attivatu: 0: Disable;
1: Attivà. |
0 |
Debug trigger data register 2 (tdata2)
Hè validu solu per i microprocessori chì supportanu i punti di rottura di hardware è hè utilizatu per salvà u valore currispondente di u trigger.
Tabella 8-14 definizione di u registru tdata2
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | TDATA2 | MRW | Adupratu per salvà i valori currispondenti. | X |
Debug cuntrollu è registru di statutu (dcsr)
Stu registru hè adupratu per cuntrullà è arregistrà u statu di esecuzione di u modu di debugging. Vede a Sezione 7.1 per i dettagli.
Puntatore di prugramma in modu di debug (DPC)
Stu registru hè utilizatu per almacenà l'indirizzu di a prussima struzzione per esse eseguita dopu chì u microprocessore entra in u modu di debugging, u so valore hè diversu secondu i motivi per entra in u modu di debugging, è e regule d'aghjurnamentu sò ancu diverse. Vede a Sezione 7.1 per una descrizzione dettagliata.
Modu di debug stagregistru ing (dscratch0-1)
Stu gruppu di registri hè utilizatu per l'almacenamiento temporale di dati in modu Debug.
Table 8-15 dscratch0-1 definizione di registru
Bit | Nome | Accessu | Descrizzione | Resettate u Valore |
[31:0] | dscratch | DRW | Debug mode data stagu valore | 0 |
Registru CSR definitu da l'utilizatori
U modu di l'utilizatori di l'interruzzione globale attiva u registru (gintenr)
- Stu registru hè adupratu per cuntrullà l'attivazione è a maschera di l'interruzzione globale. L'abilitazione è a maschera di l'interruzzione globale in u modu di a macchina pò esse cuntrullata da i bit MIE è MPIE in status, ma stu registru ùn pò micca esse operatu in u modu d'utilizatore.
- Mentre l'interruzzione glubale permette u registru gintenr hè a mappatura di MIE è MPIE in status.
- In u modu d'utilizatore, l'intenzione pò esse usata per stabilisce è sguassate MIE è MPIE, cum'è descrittu in a Sezione 3.2 per i dettagli.
Nota
- L'interruzioni globali ùn includenu micca l'interruzioni smascherate NMI è eccezzioni.
Interrompe u registru di cuntrollu di u sistema (intsyscr)
Stu registru hè principarmenti utilizatu per cunfigurà a prufundità di nidificazione di l'interruzzione, u pressing di stack hardware, è altre funzioni relative, cum'è descrittu in a Sezione 3.2 per i dettagli.
Registru di cunfigurazione di u microprocessore (corecfgr)
Stu registru hè utilizatu per cuntrullà se l'interruzzione NMI hè permessa dopu à l'interruzzione di overflows è se a dumanda di interruzzione hè sguassata quandu l'istruzione di fence hè eseguita. Per piacè riferite à a Sezione 3.2 per a definizione specifica.
Interrompe u registru di cuntrollu nidificatu (inestcr)
Stu registru hè utilizatu per indicà u statu di nidificazione d'interruzzione è s'ellu si sbocca o micca, è per cuntrullà u livellu massimu di nidificazione. Per piacè riferite à a Sezione 3.2 per a definizione specifica.
Documenti / Risorse
![]() |
Microprocessore WH V3 [pdfManuale d'usu V3 Microprocessor, V3, Microprocessor |