WH V3 Microprocessor

ຂໍ້ມູນຈໍາເພາະ
- ແບບຈໍາລອງໄມໂຄຣໂປຣເຊສເຊີ: QingKeV3
- ລຸ້ນ: V1.2
- ຄຸນນະສົມບັດ ISA:
- FPU ທໍ່
- ການຄາດຄະເນສາຂາ
- ຂັດຂວາງການສະຫນັບສະຫນູນ
- HPE Physical Memory Protection (PMP)
- ໂໝດການບໍລິໂພກພະລັງງານຕໍ່າ
- ຄໍາແນະນໍາເພີ່ມເຕີມກໍານົດ Debug
ຄໍາແນະນໍາການນໍາໃຊ້ຜະລິດຕະພັນ
ເກີນview ຂອງ QingKe V3 Microprocessor
ໄມໂຄຣໂປຣເຊສເຊີຊຸດ QingKe V3 ລວມມີລຸ້ນ V3A, V3B, ແລະ V3C. ແຕ່ລະແບບມີຄຸນສົມບັດສະເພາະ ແລະຄວາມແຕກຕ່າງໂດຍອີງໃສ່ຄໍາຮ້ອງສະຫມັກຂອງມັນ.
ຊຸດຄໍາແນະນໍາ
ຊຸດຄໍາແນະນໍາ RV32I ປະກອບມີ 32 ຊຸດລົງທະບຽນຈາກ x0 ເຖິງ x31. ຊຸດ V3 ບໍ່ຮອງຮັບສ່ວນຂະຫຍາຍຈຸດລອຍ (F). ແຕ່ລະທະບຽນແມ່ນ 32 bits ໃນຂະຫນາດ.
ລົງທະບຽນຊຸດ
ຊຸດລົງທະບຽນ RV32I ປະກອບດ້ວຍການລົງທະບຽນຕໍ່ໄປນີ້.
- x0: ລະຫັດແຂງ 0
- x1: ກັບຄືນທີ່ຢູ່
- x2: ຕົວຊີ້ stack
- x3: ຕົວຊີ້ທົ່ວໂລກ
- x4: ຕົວຊີ້ກະທູ້
- x5-x7: ທະບຽນຊົ່ວຄາວ
- x8: ບັນທຶກຕົວຊີ້ການລົງທະບຽນ/ກອບ
- x9: ບັນທຶກການລົງທະບຽນ / ຕົວກໍານົດການທໍາງານ / ຄ່າກັບຄືນມາ
- x10-x11: ຕົວກໍານົດການເຮັດວຽກ
- x12-x17: ບັນທຶກການລົງທະບຽນ
- x18-x27: ທະບຽນຊົ່ວຄາວ
- x28-x31: ລົງທະບຽນຜູ້ໂທ/Callee
ໂໝດສິດທິພິເສດ
ສະຖາປັດຕະຍະກໍາ RISC-V ມາດຕະຖານປະກອບມີສາມໂຫມດສິດທິພິເສດ: ໂຫມດເຄື່ອງຈັກ, ໂຫມດຜູ້ເບິ່ງແຍງ, ແລະໂຫມດຜູ້ໃຊ້. ໄມໂຄຣໂປຣເຊສເຊີຊຸດ QingKe V3 ຮອງຮັບໂໝດເຄື່ອງຈັກ ແລະໂໝດຜູ້ຄຸມງານ.
ຄໍາຖາມທີ່ຖາມເລື້ອຍໆ
Q: ແມ່ນຫຍັງຄືຮູບແບບທີ່ແຕກຕ່າງກັນໃນ QingKe V3 series microprocessors?
A: ຊຸດ QingKe V3 ປະກອບມີແບບຈໍາລອງ V3A, V3B, ແລະ V3C, ແຕ່ລະຄົນມີລັກສະນະສະເພາະແລະຄວາມແຕກຕ່າງທີ່ລາຍລະອຽດຢູ່ໃນຄູ່ມືຜູ້ໃຊ້.
Q: ມີຈໍານວນຊຸດລົງທະບຽນຢູ່ໃນຊຸດຄໍາແນະນໍາ RV32I?
A: ຊຸດຄໍາແນະນໍາ RV32I ສະຫນອງ 32 ຊຸດລົງທະບຽນຈາກ x0 ຫາ x31.
ຖາມ: ໂຫມດສິດທິພິເສດໃດທີ່ສະຫນັບສະຫນູນໂດຍ QingKe V3 microprocessor?
A: ໄມໂຄຣໂປຣເຊສເຊີຊຸດ QingKe V3 ຮອງຮັບໂໝດເຄື່ອງຈັກ ແລະ ໂໝດຜູ້ຄຸມເປັນສ່ວນໜຶ່ງຂອງສະຖາປັດຕະຍະກຳ RISC-V.
ເກີນview
QingKe V3 series microprocessors ແມ່ນ microprocessors MCU ທົ່ວໄປ 32-bit ທີ່ພັດທະນາດ້ວຍຕົນເອງໂດຍອີງໃສ່ສະຖາປັດຕະຍະກໍາຊຸດຄໍາແນະນໍາ RISC-V ມາດຕະຖານ. ຊຸດນີ້ປະກອບມີ V3A, V3B ແລະ V3C, ເຊິ່ງ V3A ສະຫນັບສະຫນູນຊຸດຄໍາແນະນໍາມາດຕະຖານ RV32IMAC ແລະ V3B/C ສະຫນັບສະຫນູນຊຸດຄໍາແນະນໍາມາດຕະຖານ RV32IMCB ແລະການຂະຫຍາຍຊຸດຄໍາແນະນໍາທີ່ກໍາຫນົດເອງ XW. ທັງສອງອັນນີ້ຮອງຮັບການຄູນແບບວົງຈອນດຽວແລະການແບ່ງຮາດແວ, ນອກຈາກການວາງຄວາມກົດດັນຂອງຮາດແວ (HPE), ການຂັດຂວາງແບບບໍ່ມີຕາຕະລາງ (VTF), ການໂຕ້ຕອບການດີບັ໊ກແບບ 1- ແລະ 2-wire ປັບປຸງ, ຄໍາແນະນໍາ “WFE”, ແລະຄຸນສົມບັດພິເສດອື່ນໆ. ນອກຈາກນັ້ນ, ມັນຍັງສະຫນັບສະຫນູນ Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), ປັບປຸງການໂຕ້ຕອບການດີບັກ 1-/2-wire, ແລະສະຫນັບສະຫນູນຄໍາແນະນໍາ "WFE".
ຄຸນສົມບັດ
| ຄຸນສົມບັດ | ລາຍລະອຽດ |
| ISA | RV32IM[A]C[B] |
| ທໍ່ | 3 |
| FPU | ບໍ່ຮອງຮັບ |
| ການຄາດຄະເນສາຂາ | ການຄາດຄະເນສາຂາຄົງທີ່ |
| ຂັດຂວາງ | ສະຫນັບສະຫນູນການຂັດຂວາງທັງຫມົດ 256 ລວມທັງຂໍ້ຍົກເວັ້ນ, ແລະສະຫນັບສະຫນູນ VTF |
| HPE | ຮອງຮັບ 2 ລະດັບຂອງ HPE |
| ການປົກປ້ອງຄວາມຈຳທາງກາຍ (PMP) | ສະຫນັບສະຫນູນ |
| ໂໝດການບໍລິໂພກພະລັງງານຕໍ່າ | ຮອງຮັບໂໝດການນອນຫຼັບ ແລະ ໂໝດນອນເລິກ, ແລະຮອງຮັບວິທີການນອນ WFI ແລະ WFE |
| ຊຸດຄໍາແນະນໍາແບບຂະຫຍາຍ | ສະຫນັບສະຫນູນ |
| ດີບັກ | 1/2-wire SDI, ມາດຕະຖານດີບັກ RISC-V |
ເກີນview
QingKe V3 series microprocessors ປະກອບມີ V3A, V3B, ແລະ V3C, ມີບາງຄວາມແຕກຕ່າງລະຫວ່າງຊຸດຕາມຄໍາຮ້ອງສະຫມັກ, ຄວາມແຕກຕ່າງສະເພາະແມ່ນລາຍລະອຽດໃນຕາຕະລາງ 1-1.
ຕາຕະລາງ 1-1 ຫຼາຍກວ່າview ຂອງ QingKe V3 microprocessor
| ຄຸນສົມບັດ ຕົວແບບ | ISA | ຈໍານວນລະດັບ HPE | ການຂັດຂວາງ ຮັງ ຈໍານວນຂອງ ລະດັບ | VTF ຈໍານວນຊ່ອງ | ທໍ່ | vector ຮູບແບບການຕາຕະລາງ | ຄໍາແນະນໍາຂະຫຍາຍ (XW) | ຈໍານວນພື້ນທີ່ປ້ອງກັນຄວາມຊົງຈໍາ |
| V3A | RV32IMAC | 2 | 2 | 4 | 3 | ຄໍາແນະນໍາ | × | × |
| V3B | RV32IMCB | 2 | 2 | 4 | 3 | ທີ່ຢູ່ / ຄໍາແນະນໍາ | √ | × |
| V3C | RV32IMCB | 2 | 2 | 4 | 3 | ທີ່ຢູ່ / ຄໍາແນະນໍາ | √ | 4 |
ໝາຍເຫດ: ການປ່ຽນໜ້າວຽກ OS ໂດຍທົ່ວໄປແລ້ວຈະໃຊ້ stack push, ເຊິ່ງບໍ່ຈຳກັດຈຳນວນລະດັບ
ຊຸດຄໍາແນະນໍາ
- QingKe V3 series microprocessors ປະຕິບັດຕາມມາດຕະຖານ RISC-V Instruction Set Architecture (ISA). ເອກະສານລາຍລະອຽດຂອງມາດຕະຖານສາມາດພົບໄດ້ໃນ “ຄູ່ມືຊຸດຄໍາແນະນໍາ RISC-V, ສະບັບທີ I: User-Level ISA, Document Version 2.2” ໃນ RISC-V International webເວັບໄຊ. ຊຸດຄໍາແນະນໍາ RISC-V ມີສະຖາປັດຕະຍະກໍາທີ່ງ່າຍດາຍແລະສະຫນັບສະຫນູນການອອກແບບແບບໂມດູນ, ອະນຸຍາດໃຫ້ປະສົມປະສານທີ່ມີຄວາມຍືດຫຍຸ່ນໂດຍອີງໃສ່ຄວາມຕ້ອງການທີ່ແຕກຕ່າງກັນ, ແລະຊຸດ V3 ສະຫນັບສະຫນູນການຂະຫຍາຍຊຸດຄໍາແນະນໍາຕໍ່ໄປນີ້.
- RV32: ສະຖາປັດຕະຍະກໍາ 32 ບິດ, ຈຸດປະສົງທົ່ວໄປຂອງທະບຽນບິດຄວາມກວ້າງຂອງ 32 ບິດ
- I: ສະຫນັບສະຫນູນການດໍາເນີນງານຮູບຮ່າງ, ມີ 32 ການຈົດທະບຽນຮູບຮ່າງ
- M: ສະຫນັບສະຫນູນຄໍາແນະນໍາການສ້າງການຄູນແລະການແບ່ງ
- A: ສະຫນັບສະຫນູນຄໍາສັ່ງປະລໍາມະນູ
- C: ສະຫນັບສະຫນູນຄໍາແນະນໍາການບີບອັດ 16-bit
- B: ສະຫນັບສະຫນູນຄໍາແນະນໍາການຫມູນໃຊ້ບິດ
- XW: ຄໍາແນະນໍາການບີບອັດ 16-bit ສໍາລັບ byte ຕົນເອງຂະຫຍາຍແລະການດໍາເນີນງານເຄິ່ງຫນຶ່ງຄໍາ
ໝາຍເຫດ:
- ຊຸດຍ່ອຍຂອງຄໍາແນະນໍາທີ່ສະຫນັບສະຫນູນໂດຍຮູບແບບຕ່າງໆອາດຈະແຕກຕ່າງກັນ, ກະລຸນາເບິ່ງຕາຕະລາງ 1-1 ສໍາລັບລາຍລະອຽດ;
- ເພື່ອປັບປຸງຄວາມຫນາແຫນ້ນຂອງລະຫັດຕື່ມອີກ, ຂະຫຍາຍຊຸດຍ່ອຍ XW, ເພີ່ມຄໍາແນະນໍາການບີບອັດຕໍ່ໄປນີ້ c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shop, ການນໍາໃຊ້ທີ່ຈໍາເປັນຕ້ອງອີງໃສ່ MRS compiler ຫຼືເຄື່ອງມືທີ່ມັນສະຫນອງ;
- V3B ສະຫນັບສະຫນູນການສະກັດຄໍາສັ່ງ (32bit) ຄໍາສັ່ງຈາກຄໍາສອງຄໍາ (64bit) ແລະການສະກັດຄໍາສັ່ງ (32bit) ຈາກຜົນການຄູນ (64bit). ວິທີການນໍາໃຊ້ສະເພາະສາມາດອ້າງອີງເຖິງຫນ້າທີ່ຫ້ອງສະຫມຸດແລະຮ່ວມມືກັບ MRS compiler ຫຼືເຄື່ອງມືທີ່ສະຫນອງໂດຍມັນ;
- V3B/C ຮອງຮັບຄຳສັ່ງສຳເນົາໜ່ວຍຄວາມຈຳ. ສໍາລັບການນໍາໃຊ້ສະເພາະ, ກະລຸນາເບິ່ງຫນ້າທີ່ຫ້ອງສະຫມຸດແລະຮ່ວມມືກັບ MRS compiler ຫຼືລະບົບຕ່ອງໂສ້ເຄື່ອງມືຂອງມັນ.
ລົງທະບຽນຊຸດ
RV32I ມີ 32 ຊຸດລົງທະບຽນຈາກ x0-x31. ຊຸດ V3 ບໍ່ຮອງຮັບການຂະຫຍາຍ “F”, ie, ບໍ່ມີຊຸດການລົງທະບຽນຈຸດລອຍ. ໃນ RV32, ແຕ່ລະທະບຽນແມ່ນ 32 bits. ຕາຕະລາງ 1-2 ຂ້າງລຸ່ມນີ້ລາຍຊື່ການລົງທະບຽນຂອງ RV32I ແລະຄໍາອະທິບາຍຂອງພວກເຂົາ.
ຕາຕະລາງ 1-2 ທະບຽນ RISC-V
| ລົງທະບຽນ | ຊື່ ABI | ລາຍລະອຽດ | ຜູ້ເກັບຮັກສາ |
| x0 | ສູນ | ລະຫັດແຂງ 0 | – |
| x1 | ra | ກັບຄືນທີ່ຢູ່ | ຜູ້ໂທ |
| x2 | sp | ຕົວຊີ້ stack | ໂທ |
| x3 | GP | ຕົວຊີ້ທົ່ວໂລກ | – |
| x4 | tp | ຕົວຊີ້ກະທູ້ | – |
| x5-7 | t0-2 | ລົງທະບຽນຊົ່ວຄາວ | ຜູ້ໂທ |
| x8 | s0/fp | ບັນທຶກຕົວຊີ້ການລົງທະບຽນ/ກອບ | ໂທ |
| x9 | s1 | ບັນທຶກການລົງທະບຽນ | ໂທ |
| x10-11 | a0-1 | ພາລາມິເຕີຟັງຊັນ/ຄ່າກັບຄືນ | ຜູ້ໂທ |
| x12-17 | a2-7 | ຕົວກໍານົດການເຮັດວຽກ | ຜູ້ໂທ |
| x18-27 | a2-11 | ບັນທຶກການລົງທະບຽນ | ໂທ |
| X28-31 | t3-6 | ລົງທະບຽນຊົ່ວຄາວ | ຜູ້ໂທ |
ຄຸນລັກສະນະຂອງ Callee ໃນຕາຕະລາງຂ້າງເທິງນີ້ຫມາຍຄວາມວ່າຂັ້ນຕອນທີ່ເອີ້ນວ່າບໍ່ໄດ້ບັນທຶກມູນຄ່າການລົງທະບຽນ, ແລະຄຸນລັກສະນະ Callee ຫມາຍຄວາມວ່າຂັ້ນຕອນທີ່ເອີ້ນວ່າຈະຊ່ວຍປະຢັດການລົງທະບຽນ.
ໂໝດສິດທິພິເສດ
- ສະຖາປັດຕະຍະກໍາ RISC-V ມາດຕະຖານປະກອບມີສາມໂຫມດສິດທິພິເສດ: ໂຫມດເຄື່ອງຈັກ, ໂຫມດຜູ້ເບິ່ງແຍງ, ແລະໂຫມດຜູ້ໃຊ້, ດັ່ງທີ່ສະແດງຢູ່ໃນຕາຕະລາງ 1-3 ຂ້າງລຸ່ມນີ້.
- ໂຫມດເຄື່ອງແມ່ນບັງຄັບ, ແລະໂຫມດອື່ນໆແມ່ນທາງເລືອກ. ສໍາລັບລາຍລະອຽດ, ທ່ານສາມາດເບິ່ງ The RISC-V Instruction Set Manual Volume II: Privileged Architecture”, ເຊິ່ງສາມາດດາວໂຫຼດໄດ້ຟຣີຈາກ RISC-V International webເວັບໄຊ.
ຕາຕະລາງ 1-3 ຮູບແບບສິດທິພິເສດຂອງສະຖາປັດຕະຍະກຳ RISC-V
| ລະຫັດ | ຊື່ | ຕົວຫຍໍ້ |
| 0b00 | ໂໝດຜູ້ໃຊ້ | U |
| 0b01 | ຕົວແບບຜູ້ຄຸມງານ | S |
| 0b10 | ສະຫງວນໄວ້ | ສະຫງວນໄວ້ |
| 0b11 | ໂໝດເຄື່ອງ | M |
- QingKe V3 series microprocessors ສະຫນັບສະຫນູນສອງໂຫມດສິດທິພິເສດເຫຼົ່ານີ້.
ໂໝດເຄື່ອງ
- ໂຫມດເຄື່ອງຈັກມີອໍານາດສູງສຸດ, ໂປລແກລມໃນໂຫມດນີ້ສາມາດເຂົ້າເຖິງທຸກການຄວບຄຸມແລະສະຖານະພາບການລົງທະບຽນ (CSR), ແຕ່ຍັງສາມາດເຂົ້າເຖິງພື້ນທີ່ທີ່ຢູ່ທາງດ້ານຮ່າງກາຍທັງຫມົດ.
- ຄ່າເລີ່ມຕົ້ນການເພີ່ມພະລັງງານແມ່ນຢູ່ໃນໂຫມດເຄື່ອງຈັກ, ເມື່ອການປະຕິບັດ mret (ຄໍາແນະນໍາຂອງເຄື່ອງຈັກໃນໂຫມດ) ກັບຄືນມາ, ອີງຕາມສະຖານະການລົງທະບຽນ CSR (ການລົງທະບຽນສະຖານະຂອງເຄື່ອງຈັກ) ໃນ MPP bit, ຖ້າ MPP = 0b00, ຫຼັງຈາກນັ້ນອອກຈາກໂຫມດເຄື່ອງຈັກເຂົ້າໄປໃນໂຫມດຜູ້ໃຊ້, MPP = 0b11, ຫຼັງຈາກນັ້ນສືບຕໍ່ຮັກສາຮູບແບບເຄື່ອງຈັກ.
ໂໝດຜູ້ໃຊ້
- ໂຫມດຜູ້ໃຊ້ມີສິດທິພິເສດຕໍ່າສຸດ, ແລະມີພຽງແຕ່ການລົງທະບຽນ CSR ທີ່ຈໍາກັດເທົ່ານັ້ນທີ່ສາມາດເຂົ້າເຖິງໄດ້ໃນໂຫມດນີ້. ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງເກີດຂຶ້ນ, microprocessor ໄປຈາກໂຫມດຜູ້ໃຊ້ໄປຫາໂຫມດເຄື່ອງຈັກເພື່ອຈັດການກັບຂໍ້ຍົກເວັ້ນແລະການຂັດຂວາງ.
ລົງທະບຽນ CSR
ຊຸດຂອງທະບຽນ CSR ຖືກກໍານົດໄວ້ໃນສະຖາປັດຕະຍະກໍາ RISC-V ເພື່ອຄວບຄຸມແລະບັນທຶກສະຖານະການເຮັດວຽກຂອງ microprocessor. CSRs ເຫຼົ່ານີ້ສາມາດຂະຫຍາຍໄດ້ໂດຍການລົງທະບຽນ 4096 ໂດຍໃຊ້ພື້ນທີ່ລະຫັດທີ່ຢູ່ພາຍໃນ 12-bit ທີ່ອຸທິດຕົນ. ແລະໃຊ້ສອງ CSR ສູງ[11:10] ເພື່ອກໍານົດສິດອ່ານ/ຂຽນຂອງທະບຽນນີ້, 0b00, 0b01, 0b10 ສໍາລັບການອ່ານ/ຂຽນທີ່ອະນຸຍາດ ແລະ 0b11 ສໍາລັບການອ່ານເທົ່ານັ້ນ. ໃຊ້ສອງ bits CSR[9:8] ເພື່ອກໍານົດລະດັບສິດທິພິເສດຕ່ໍາສຸດທີ່ສາມາດເຂົ້າເຖິງການລົງທະບຽນນີ້, ແລະມູນຄ່າແມ່ນສອດຄ່ອງກັບຮູບແບບສິດທິພິເສດທີ່ກໍານົດໄວ້ໃນຕາຕະລາງ 1-3. ການລົງທະບຽນ CSR ທີ່ໄດ້ປະຕິບັດຢູ່ໃນຈຸນລະພາກ QingKe V3 ມີລາຍລະອຽດຢູ່ໃນບົດທີ 8.
ຂໍ້ຍົກເວັ້ນ
ກົນໄກຍົກເວັ້ນ, ແມ່ນກົນໄກສະກັດກັ້ນ ແລະ ຈັດການ “ເຫດການດຳເນີນງານທີ່ຜິດປົກກະຕິ”. QingKe V3 series microprocessors ມີການຕິດຕັ້ງລະບົບການຕອບສະຫນອງຂໍ້ຍົກເວັ້ນທີ່ສາມາດຈັດການໄດ້ເຖິງ 256 ຂໍ້ຍົກເວັ້ນ, ລວມທັງການຂັດຂວາງ. ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງເກີດຂຶ້ນ, microprocessor ສາມາດຕອບສະຫນອງຢ່າງໄວວາແລະຈັດການກັບເຫດການການຍົກເວັ້ນແລະການຂັດຂວາງ.
ປະເພດຂໍ້ຍົກເວັ້ນ
ພຶດຕິກໍາຂອງຮາດແວຂອງ microprocessor ແມ່ນຄືກັນບໍ່ວ່າຈະເປັນການຍົກເວັ້ນຫຼືການຂັດຂວາງເກີດຂື້ນ. ໄມໂຄຣໂປຣເຊສເຊີຈະລະງັບໂປຣແກມປະຈຸບັນ, ຍ້າຍໄປບ່ອນຍົກເວັ້ນ ຫຼືຕົວຈັດການລົບກວນ, ແລະກັບຄືນໄປຫາໂປຣແກມທີ່ຖືກໂຈະກ່ອນໜ້ານີ້ ເມື່ອການປະມວນຜົນສຳເລັດແລ້ວ. ເວົ້າຢ່າງກວ້າງຂວາງ, ການຂັດຂວາງຍັງເປັນສ່ວນຫນຶ່ງຂອງຂໍ້ຍົກເວັ້ນ. ບໍ່ວ່າຈະເປັນເຫດການທີ່ເກີດຂຶ້ນໃນປະຈຸບັນເປັນການຂັດຂວາງ ຫຼືຂໍ້ຍົກເວັ້ນສາມາດເປັນໄດ້ viewed ໂດຍຜ່ານການຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກເຮັດໃຫ້ການລົງທະບຽນສາເຫດ. mcause[31] ແມ່ນພາກສະຫນາມຂັດຂວາງ, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກວ່າສາເຫດຂອງການຍົກເວັ້ນແມ່ນການຂັດຂວາງຫຼືຂໍ້ຍົກເວັ້ນ. mcause[31]=1 ໝາຍເຖິງການຂັດຂວາງ, mcause[31]=0 ໝາຍເຖິງຂໍ້ຍົກເວັ້ນ. mcause[30:0] ແມ່ນລະຫັດຂໍ້ຍົກເວັ້ນ, ເຊິ່ງໃຊ້ເພື່ອຊີ້ບອກສາເຫດສະເພາະຂອງຂໍ້ຍົກເວັ້ນ ຫຼື ຕົວເລກຂັດຂວາງ, ດັ່ງທີ່ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້.
ຕາຕະລາງ 2-1 ລະຫັດການຍົກເວັ້ນໄມໂຄຣໂປຣເຊສເຊີ V3
| ຂັດຂວາງ | ຂໍ້ຍົກເວັ້ນ ລະຫັດ | Synchronous / Asynchronous | ເຫດຜົນສໍາລັບການຍົກເວັ້ນ |
| 1 | 0-1 | – | ສະຫງວນໄວ້ |
| 1 | 2 | ບໍ່ຊິ້ງໂຄ້ງທີ່ຊັດເຈນ | NMI ຂັດຂວາງ |
| 1 | 3-11 | – | ສະຫງວນໄວ້ |
| 1 | 12 | ບໍ່ຊິ້ງໂຄ້ງທີ່ຊັດເຈນ | SysTick ຂັດຂວາງ |
| 1 | 13 | – | ສະຫງວນໄວ້ |
| 1 | 14 | synchronous | ຊອບແວຂັດຂວາງ |
| 1 | 15 | – | ສະຫງວນໄວ້ |
| 1 | 16-255 | ບໍ່ຊິ້ງໂຄ້ງທີ່ຊັດເຈນ | ຂັດຂວາງພາຍນອກ 16-255 |
| 0 | 0 | synchronous | ຄໍາແນະນໍາທີ່ຢູ່ misalignment |
| 0 | 1 | synchronous | ດຶງຂໍ້ມູນການເຂົ້າເຖິງຄໍາສັ່ງຜິດພາດ |
| 0 | 2 | synchronous | ຄໍາແນະນໍາທີ່ຜິດກົດຫມາຍ |
| 0 | 3 | synchronous | ຈຸດແຕກ |
| 0 | 4 | synchronous | ໂຫລດຄໍາແນະນໍາການເຂົ້າເຖິງບໍ່ຖືກຕ້ອງການຈັດຕໍາແຫນ່ງ |
| 0 | 5 | ບໍ່ສອດຄ່ອງກັນ | ໂຫລດຂໍ້ຜິດພາດໃນການເຂົ້າເຖິງຄໍາສັ່ງ |
| 0 | 6 | synchronous | Store/AMO ການເຂົ້າຫາຄໍາແນະນໍາທີ່ຢູ່ບໍ່ຖືກຕ້ອງ |
| 0 | 7 | ບໍ່ສອດຄ່ອງກັນ | Store/AMO ຜິດພາດການເຂົ້າເຖິງຄໍາສັ່ງ |
| 0 | 8 | synchronous | ການໂທສະພາບແວດລ້ອມໃນໂຫມດຜູ້ໃຊ້ |
| 0 | 11 | synchronous | ການໂທສະພາບແວດລ້ອມໃນໂໝດເຄື່ອງ |
- Synchronous” ໃນຕາຕະລາງຫມາຍຄວາມວ່າຄໍາແນະນໍາສາມາດຕັ້ງຢູ່ບ່ອນທີ່ມັນຖືກປະຕິບັດ, ເຊັ່ນ: ການຢຸດຫຼືໂທຫາຄໍາແນະນໍາ, ແລະການປະຕິບັດແຕ່ລະຄໍາແນະນໍານັ້ນຈະເຮັດໃຫ້ເກີດຂໍ້ຍົກເວັ້ນ. "Asynchronous" ຫມາຍຄວາມວ່າມັນບໍ່ສາມາດກໍານົດຄໍາແນະນໍາໄດ້, ແລະຄ່າ PC ຄໍາແນະນໍາອາດຈະແຕກຕ່າງກັນໃນແຕ່ລະຄັ້ງທີ່ມີການຍົກເວັ້ນ. ຄໍາແນະນໍາ, ie, ສະຖານະຫຼັງຈາກການປະຕິບັດຄໍາແນະນໍາ, ເຊັ່ນ: ການຂັດຂວາງພາຍນອກ "ບໍ່ກົງກັນກັບຄວາມຊັດເຈນ" ຫມາຍຄວາມວ່າຂອບເຂດຂອງຄໍາແນະນໍາບໍ່ສາມາດຕັ້ງຢູ່ທີ່ຊັດເຈນ, ແລະບາງທີລັດຫຼັງຈາກຄໍາແນະນໍາໄດ້ຖືກຂັດຂວາງເຄິ່ງຫນຶ່ງຂອງການປະຕິບັດ, ເຊັ່ນ: ຄວາມຜິດພາດໃນການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ.
- ການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາຕ້ອງໃຊ້ເວລາ, ແລະ microprocessor ປົກກະຕິແລ້ວບໍ່ລໍຖ້າເວລາສິ້ນສຸດຂອງການເຂົ້າເຖິງໃນເວລາທີ່ເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາແຕ່ສືບຕໍ່ປະຕິບັດຄໍາສັ່ງ, ເມື່ອຂໍ້ຍົກເວັ້ນຄວາມຜິດພາດໃນການເຂົ້າເຖິງເກີດຂຶ້ນອີກເທື່ອຫນຶ່ງ, microprocessor ໄດ້ປະຕິບັດຄໍາແນະນໍາຕໍ່ໄປແລ້ວ, ແລະບໍ່ສາມາດຕັ້ງຢູ່ໄດ້ຊັດເຈນ.
ໃສ່ຂໍ້ຍົກເວັ້ນ
ໃນເວລາທີ່ໂຄງການແມ່ນຢູ່ໃນຂະບວນການຂອງການດໍາເນີນງານປົກກະຕິຖ້າຫາກວ່າສໍາລັບບາງເຫດຜົນ, triggers ການຍົກເວັ້ນຫຼືຂັດຂວາງ. ພຶດຕິກໍາຂອງຮາດແວຂອງ microprocessor ໃນຈຸດນີ້ສາມາດສະຫຼຸບໄດ້ດັ່ງຕໍ່ໄປນີ້.
- ໂຈະການໄຫຼເຂົ້າຂອງໂປຣແກຣມປະຈຸບັນ ແລະຍ້າຍໄປທີ່ການປະຕິບັດຂໍ້ຍົກເວັ້ນ ຫຼືການຂັດຂວາງການເຮັດວຽກຂອງການຈັດການ. ທີ່ຢູ່ຖານການເຂົ້າແລະຮູບແບບທີ່ຢູ່ຂອງການຍົກເວັ້ນຫຼືຫນ້າທີ່ຂັດຂວາງແມ່ນຖືກກໍານົດໂດຍທີ່ຢູ່ຖານຂໍ້ຍົກເວັ້ນການລົງທະບຽນ mtvec. mtvec[31:2] ກໍານົດທີ່ຢູ່ພື້ນຖານຂອງການຍົກເວັ້ນຫຼືຟັງຊັນຂັດຂວາງ. mtvec[1:0] ກໍານົດຮູບແບບທີ່ຢູ່ຂອງຟັງຊັນຕົວຈັດການ. ເມື່ອ mtvec[1:0]=0, ຂໍ້ຍົກເວັ້ນ ແລະ ການຂັດຂວາງທັງໝົດໃຊ້ການເຂົ້າຮວມ, ເຊັ່ນ, ເມື່ອມີຂໍ້ຍົກເວັ້ນ ຫຼືການຂັດຈັງຫວະເກີດຂຶ້ນ, ມັນຈະຫັນໄປຫາ mtvec[31:2] ກຳນົດທີ່ຢູ່ຖານເພື່ອດຳເນີນການ. ເມື່ອ mtvec[1:0]=1, ການຍົກເວັ້ນແລະການຂັດຂວາງໃຊ້ຮູບແບບຕາຕະລາງ vector, ie, ແຕ່ລະຂໍ້ຍົກເວັ້ນແລະການຂັດຂວາງແມ່ນຕົວເລກ, ແລະທີ່ຢູ່ຈະຖືກຊົດເຊີຍຕາມຈໍານວນ interrupt *4, ແລະເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼື interrupt ເກີດຂື້ນ, ມັນຈະຖືກຍ້າຍໄປທີ່ທີ່ຢູ່ພື້ນຖານທີ່ກໍານົດໂດຍ mtvec[31:2] + interrupt number*4 Execution. ຕາຕະລາງ vector interrupt ຖືຄໍາແນະນໍາເພື່ອໂດດໄປຫາຫນ້າທີ່ຕົວຈັດການຂັດຂວາງ, ຫຼືມັນສາມາດເປັນຄໍາແນະນໍາອື່ນໆ.
- ອັບເດດທະບຽນ CSR
- ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, ໄມໂຄຣໂປຣເຊສເຊີຈະປັບປຸງການລົງທະບຽນ CSR ທີ່ກ່ຽວຂ້ອງໂດຍອັດຕະໂນມັດ, ລວມທັງການຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກເຮັດໃຫ້ການລົງທະບຽນ mcause, ຕົວຊີ້ການຍົກເວັ້ນເຄື່ອງຈັກໃນໂຫມດ mepc, ມູນຄ່າການຍົກເວັ້ນເຄື່ອງຈັກໃນໂຫມດການລົງທະບຽນໂລຫະ, ແລະສະຖານະການລົງທະບຽນສະຖານະເຄື່ອງຈັກ.
ອັບເດດ mcause
ດັ່ງທີ່ໄດ້ກ່າວມາກ່ອນ, ຫຼັງຈາກໃສ່ຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, ມູນຄ່າຂອງມັນສະທ້ອນເຖິງປະເພດຂໍ້ຍົກເວັ້ນໃນປະຈຸບັນຫຼືຕົວເລກຂັດຂວາງ, ແລະຊອບແວສາມາດອ່ານຄ່າລົງທະບຽນນີ້ເພື່ອກວດເບິ່ງສາເຫດຂອງການຍົກເວັ້ນຫຼືກໍານົດແຫຼ່ງຂອງການຂັດຂວາງ, ຕາມລາຍລະອຽດໃນຕາຕະລາງ 2-1.
ອັບເດດ mepc
- ຄໍານິຍາມມາດຕະຖານຂອງທີ່ຢູ່ສົ່ງຄືນຂອງ microprocessor ຫຼັງຈາກອອກຈາກການຍົກເວັ້ນຫຼືຂັດຂວາງຈະຖືກເກັບໄວ້ໃນ mepc.
- ດັ່ງນັ້ນ, ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງ, ຮາດແວຈະປັບປຸງຄ່າ mepc ໂດຍອັດຕະໂນມັດກັບຄ່າ PC ຄໍາແນະນໍາໃນປະຈຸບັນເມື່ອພົບຂໍ້ຍົກເວັ້ນ, ຫຼືຄ່າ PC ຄໍາສັ່ງທີ່ດໍາເນີນການກ່ອນການຂັດຂວາງຕໍ່ໄປ.
- ຫຼັງຈາກການຍົກເວັ້ນຫຼືຂັດຂວາງໄດ້ຖືກປະມວນຜົນ, microprocessor ໃຊ້ມູນຄ່າທີ່ບັນທຶກໄວ້ຂອງຕົນເປັນທີ່ຢູ່ກັບຄືນເພື່ອກັບຄືນໄປຫາສະຖານທີ່ຂອງການຂັດຂວາງເພື່ອສືບຕໍ່ປະຕິບັດ.
- ຢ່າງໃດກໍ່ຕາມ, ມັນເປັນມູນຄ່າທີ່ສັງເກດວ່າ.
- MEPC ແມ່ນການລົງທະບຽນທີ່ສາມາດອ່ານໄດ້ແລະສາມາດຂຽນໄດ້, ແລະຊອບແວຍັງສາມາດດັດແປງມູນຄ່າເພື່ອດັດແປງສະຖານທີ່ຂອງຕົວຊີ້ PC ທີ່ເຮັດວຽກຫຼັງຈາກການກັບຄືນ.
- ເມື່ອການຂັດຂວາງເກີດຂຶ້ນ, ie, ເມື່ອສາເຫດການຍົກເວັ້ນລົງທະບຽນ mcause[31]=1, ມູນຄ່າຂອງແຜນທີ່ຖືກປັບປຸງເປັນມູນຄ່າ PC ຂອງຄໍາແນະນໍາທີ່ບໍ່ໄດ້ປະຕິບັດຕໍ່ໄປໃນເວລາທີ່ຂັດຂວາງ.
- ເມື່ອມີຂໍ້ຍົກເວັ້ນເກີດຂຶ້ນ, ມູນຄ່າຂອງແຜນທີ່ຖືກປັບປຸງເປັນຄ່າ PC ຄໍາແນະນໍາຂອງຂໍ້ຍົກເວັ້ນໃນປະຈຸບັນ ເມື່ອຂໍ້ຍົກເວັ້ນເຮັດໃຫ້ລົງທະບຽນ mcause[31]=0. ດັ່ງນັ້ນໃນເວລານີ້ເມື່ອຂໍ້ຍົກເວັ້ນກັບຄືນມາ, ຖ້າພວກເຮົາກັບຄືນໂດຍກົງໂດຍໃຊ້ຄ່າ mepc, ພວກເຮົາສືບຕໍ່ປະຕິບັດຄໍາແນະນໍາທີ່ສ້າງຂໍ້ຍົກເວັ້ນກ່ອນ, ແລະໃນເວລານີ້, ພວກເຮົາຈະສືບຕໍ່ເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນ. ໂດຍປົກກະຕິແລ້ວ, ຫຼັງຈາກທີ່ພວກເຮົາຈັດການຂໍ້ຍົກເວັ້ນ, ພວກເຮົາສາມາດດັດແປງຄ່າຂອງ mepc ກັບຄ່າຂອງຄໍາແນະນໍາທີ່ບໍ່ໄດ້ປະຕິບັດຕໍ່ໄປແລະຫຼັງຈາກນັ້ນກັບຄືນ. ຕົວຢ່າງample, ຖ້າພວກເຮົາເຮັດໃຫ້ເກີດຂໍ້ຍົກເວັ້ນຍ້ອນການໂທ / break, ຫຼັງຈາກຈັດການກັບຂໍ້ຍົກເວັ້ນ, ນັບຕັ້ງແຕ່ການເອີ້ນຄືນ / break (c.ebreak ແມ່ນ 2 bytes) ແມ່ນຄໍາແນະນໍາ 4-byte, ພວກເຮົາພຽງແຕ່ຕ້ອງການຊອບແວເພື່ອດັດແປງຄ່າຂອງ mepc ເປັນ mepc +4 (c.ebreak ແມ່ນ mepc + 2) ແລະຫຼັງຈາກນັ້ນກັບຄືນ.
ອັບເດດ mtval
ເມື່ອມີຂໍ້ຍົກເວັ້ນແລະຂັດຂວາງ, ຮາດແວຈະປັບປຸງຄ່າຂອງ mtval ໂດຍອັດຕະໂນມັດ, ເຊິ່ງເປັນມູນຄ່າທີ່ເຮັດໃຫ້ເກີດຂໍ້ຍົກເວັ້ນ. ມູນຄ່າແມ່ນປົກກະຕິ.
- ຖ້າຂໍ້ຍົກເວັ້ນແມ່ນເກີດມາຈາກການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ, ຮາດແວຈະເກັບຮັກສາທີ່ຢູ່ຂອງການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາໃນເວລາທີ່ການຍົກເວັ້ນເຂົ້າໄປໃນ mtval.
- ຖ້າຂໍ້ຍົກເວັ້ນແມ່ນເກີດມາຈາກຄໍາແນະນໍາທີ່ຜິດກົດຫມາຍ, ຮາດແວຈະເກັບລະຫັດຄໍາແນະນໍາຂອງຄໍາແນະນໍາເຂົ້າໄປໃນ mtval.
- ຖ້າຂໍ້ຍົກເວັ້ນແມ່ນເກີດມາຈາກ breakpoint ຂອງຮາດແວ, ຮາດແວຈະເກັບຄ່າ PC ຢູ່ breakpoint ເປັນ mtval.
- ສໍາລັບຂໍ້ຍົກເວັ້ນອື່ນໆ, ຮາດແວກໍານົດຄ່າຂອງ mtval ເປັນ 0, ເຊັ່ນ: ການຢຸດ, ຂໍ້ຍົກເວັ້ນທີ່ເກີດຈາກຄໍາແນະນໍາການໂທ.
- ເມື່ອເຂົ້າໄປໃນການຂັດຂວາງ, ຮາດແວກໍານົດຄ່າຂອງ mtval ເປັນ 0.
ອັບເດດ mstatus
ເມື່ອເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນແລະການຂັດຂວາງ, ຮາດແວຈະປັບປຸງບາງບິດໃນ mstatus.
- MPIE ຖືກປັບປຸງເປັນຄ່າ MIE ກ່ອນທີ່ຈະເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, ແລະ MPIE ຖືກນໍາໃຊ້ເພື່ອຟື້ນຟູ MIE ຫຼັງຈາກການຍົກເວັ້ນແລະການຂັດຂວາງສິ້ນສຸດລົງ.
- MPP ໄດ້ຖືກອັບເດດເປັນຮູບແບບສິດທິພິເສດກ່ອນທີ່ຈະເຂົ້າໄປໃນການຍົກເວັ້ນແລະການຂັດຂວາງ, ແລະຫຼັງຈາກຂໍ້ຍົກເວັ້ນແລະການຂັດຂວາງສິ້ນສຸດລົງ, MPP ຖືກນໍາໃຊ້ເພື່ອຟື້ນຟູຮູບແບບສິດທິພິເສດທີ່ຜ່ານມາ.
- ໄມໂຄຣໂປຣເຊສເຊີ QingKe V3 ຮອງຮັບການຂັດຈັງຫວະການຮັງຢູ່ໃນໂໝດເຄື່ອງ, ແລະ MIE ຈະບໍ່ຖືກລຶບລ້າງຫຼັງຈາກໃສ່ຂໍ້ຍົກເວັ້ນ ແລະ ຂັດຂວາງ.
ອັບເດດໂໝດສິດທິພິເສດຂອງ microprocessor
- ເມື່ອມີການຍົກເວັ້ນແລະການຂັດຂວາງ, ຮູບແບບສິດທິພິເສດຂອງ microprocessor ຈະຖືກປັບປຸງເປັນໂຫມດເຄື່ອງຈັກ.
ຟັງຊັນການຈັດການຂໍ້ຍົກເວັ້ນ
- ເມື່ອເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, microprocessor ປະຕິບັດໂຄງການຈາກທີ່ຢູ່ແລະຮູບແບບທີ່ກໍານົດໂດຍທະບຽນ mtvec. ເມື່ອນໍາໃຊ້ການປ້ອນຂໍ້ມູນແບບປະສົມປະສານ, ໄມໂຄຣໂປຣເຊສເຊີໃຊ້ເວລາຄໍາແນະນໍາຈາກທີ່ຢູ່ພື້ນຖານທີ່ກໍານົດໂດຍ mtvec[31:2] ໂດຍອີງໃສ່ມູນຄ່າຂອງ mtvec[1], ຫຼືໄດ້ຮັບການຍົກເວັ້ນແລະຂັດຂວາງການຈັດການທີ່ຢູ່ເຂົ້າແລະດໍາເນີນການແທນ. ໃນເວລານີ້, ຫນ້າທີ່ການຍົກເວັ້ນແລະການຂັດຂວາງສາມາດກໍານົດວ່າສາເຫດແມ່ນຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງໂດຍອີງໃສ່ມູນຄ່າຂອງ mcause[31], ແລະປະເພດແລະສາເຫດຂອງການຍົກເວັ້ນຫຼືການຂັດຂວາງທີ່ສອດຄ້ອງກັນສາມາດຖືກຕັດສິນໂດຍລະຫັດການຍົກເວັ້ນແລະຈັດການຕາມຄວາມເຫມາະສົມ.
- ເມື່ອໃຊ້ທີ່ຢູ່ພື້ນຖານ + ເລກຂັດຂວາງ *4 ສໍາລັບການຊົດເຊີຍ, ຮາດແວຈະໂດດໄປຫາຕາຕະລາງ vector ໂດຍອັດຕະໂນມັດເພື່ອເອົາທີ່ຢູ່ເຂົ້າຂອງຂໍ້ຍົກເວັ້ນຫຼືຫນ້າທີ່ຂັດຂວາງໂດຍອີງໃສ່ຈໍານວນຂັດຂວາງແລະໂດດເພື່ອປະຕິບັດມັນ.
ການຍົກເວັ້ນທາງອອກ
- ຫຼັງຈາກການຍົກເວັ້ນຫຼືຕົວຈັດການຂັດຂວາງໄດ້ຖືກສໍາເລັດ, ມັນຈໍາເປັນຕ້ອງອອກຈາກໂຄງການບໍລິການ. ຫຼັງຈາກເຂົ້າໄປໃນການຍົກເວັ້ນແລະການຂັດຂວາງ, microprocessor ເຂົ້າສູ່ໂຫມດເຄື່ອງຈັກຈາກໂຫມດຜູ້ໃຊ້, ແລະການປຸງແຕ່ງຂໍ້ຍົກເວັ້ນແລະການຂັດຂວາງຍັງສໍາເລັດໃນໂຫມດເຄື່ອງຈັກ. ໃນເວລາທີ່ມີຄວາມຈໍາເປັນທີ່ຈະອອກຈາກການຍົກເວັ້ນແລະການຂັດຂວາງ, ມັນຈໍາເປັນຕ້ອງໃຊ້ຄໍາແນະນໍາ mret ເພື່ອກັບຄືນ. ໃນເວລານີ້, ຮາດແວ microprocessor ຈະປະຕິບັດການດັ່ງຕໍ່ໄປນີ້ໂດຍອັດຕະໂນມັດ.
- ຕົວຊີ້ PC ຖືກຟື້ນຟູກັບມູນຄ່າຂອງ CSR ລົງທະບຽນ mepc, ie, ການປະຕິບັດເລີ່ມຕົ້ນຈາກທີ່ຢູ່ຄໍາແນະນໍາທີ່ບັນທຶກໄວ້ໂດຍ mepc. ມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະຕ້ອງເອົາໃຈໃສ່ກັບການປະຕິບັດການຊົດເຊີຍຂອງ mepc ຫຼັງຈາກການຈັດການການຍົກເວັ້ນແມ່ນສໍາເລັດ.
- ອັບເດດສະຖານະການລົງທະບຽນ CSR, MIE ຖືກຟື້ນຟູເປັນ MPIE, ແລະ MPP ຖືກນໍາໃຊ້ເພື່ອຟື້ນຟູຮູບແບບສິດທິພິເສດຂອງ microprocessor ທີ່ຜ່ານມາ.
- ຂະບວນການຕອບສະຫນອງຂໍ້ຍົກເວັ້ນທັງຫມົດສາມາດຖືກອະທິບາຍໂດຍຮູບ 2-1 ຕໍ່ໄປນີ້.

PFIC ແລະການຄວບຄຸມການຂັດຂວາງ
- ໄມໂຄຣໂປຣເຊສເຊີ QingKe V3 ຖືກອອກແບບດ້ວຍ Programmable Fast Interrupt Controller (PFIC) ທີ່ສາມາດຈັດການການລົບກວນໄດ້ເຖິງ 256 ອັນ ລວມທັງຂໍ້ຍົກເວັ້ນ.
- 16 ທໍາອິດຂອງພວກເຂົາຖືກແກ້ໄຂເປັນການຂັດຂວາງພາຍໃນຂອງ microprocessor, ແລະສ່ວນທີ່ເຫຼືອແມ່ນການຂັດຂວາງພາຍນອກ, ie ຈໍານວນສູງສຸດຂອງການຂັດຂວາງພາຍນອກສາມາດຂະຫຍາຍໄດ້ເຖິງ 240. ລັກສະນະຕົ້ນຕໍຂອງມັນແມ່ນດັ່ງຕໍ່ໄປນີ້.
- 240 ການຂັດຂວາງພາຍນອກ, ແຕ່ລະຄໍາຮ້ອງຂໍຂັດຂວາງມີຕົວກະຕຸ້ນເອກະລາດແລະບິດຄວບຄຸມຫນ້າກາກ, ມີບິດສະຖານະພາບສະເພາະ.
- Programmable interrupt priority ຮອງຮັບ 2 ລະດັບຂອງການວາງ
- ໄວພິເສດຂັດຂວາງໃນ / ອອກກົນໄກ, stacking ອັດຕະໂນມັດຂອງຮາດແວ, ແລະການຟື້ນຕົວ, ຄວາມເລິກ HPE ສູງສຸດຂອງ 2 ລະດັບ.
- Vector Table Free (VTF) ກົນໄກການຕອບໂຕ້ຂັດຂວາງ, 2 ຊ່ອງທາງທີ່ສາມາດ programmable ໂດຍກົງເພື່ອຂັດຂວາງທີ່ຢູ່ vector
- ໝາຍເຫດ: ຄວາມເລິກຂອງຮັງສູງສຸດແລະຄວາມເລິກ HPE ທີ່ສະຫນັບສະຫນູນໂດຍຕົວຄວບຄຸມຂັດຂວາງແຕກຕ່າງກັນສໍາລັບຕົວແບບ microprocessor ທີ່ແຕກຕ່າງກັນ, ເຊິ່ງສາມາດພົບໄດ້ໃນຕາຕະລາງ 1-1.
- ຕາຕະລາງ vector ຂອງການຂັດຂວາງແລະຂໍ້ຍົກເວັ້ນແມ່ນສະແດງຢູ່ໃນຕາຕະລາງ 3-1 ຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ 3-1 ຂໍ້ຍົກເວັ້ນແລະຕາຕະລາງ vector ຂັດຂວາງ
| ເລກ | ບູລິມະສິດ | ປະເພດ | ຊື່ | ລາຍລະອຽດ |
| 0 | – | – | – | – |
| 1 | – | – | – | – |
| 2 | -5 | ແກ້ໄຂ | NMI | ການຂັດຈັງຫວະທີ່ບໍ່ໜ້າກາກ |
| 3 | -4 | ແກ້ໄຂ | EXC | ຂໍ້ຍົກເວັ້ນຂັດຂວາງ |
| 4 | – | – | – | – |
| 5 | -3 | ແກ້ໄຂ | ECALL-M | ການໂທກັບຮູບແບບເຄື່ອງຂັດຂວາງ |
| 6-7 | – | – | – | – |
| 8 | -2 | ແກ້ໄຂ | ECALL-U | ການໂທກັບຮູບແບບຜູ້ໃຊ້ຂັດຂວາງ |
| 9 | -1 | ແກ້ໄຂ | ຈຸດເລີ່ມຕົ້ນ | Breakpoint callback ຂັດຈັງຫວະ |
| 10-11 | – | – | – | – |
| 12 | 0 | ສາມາດຕັ້ງໂປຣແກຣມໄດ້ | SysTick | ເຄື່ອງຈັບເວລາລະບົບຂັດຈັງຫວະ |
| 13 | – | – | – | – |
| 14 | 1 | ສາມາດຕັ້ງໂປຣແກຣມໄດ້ | SWI | ຊອບແວຂັດຂວາງ |
| 15 | – | – | – | – |
| 16-255 | 2-241 | ສາມາດຕັ້ງໂປຣແກຣມໄດ້ | ຂັດຂວາງພາຍນອກ | ຂັດຂວາງພາຍນອກ 16-255 |
ໝາຍເຫດ: ECALL-M, ECALL-U, ແລະ BREAKPOINT ແມ່ນປະເພດທີ່ແຕກຕ່າງກັນທັງໝົດຂອງຂໍ້ຍົກເວັ້ນ EXC, ທີ່ເປັນເອກະລາດໃນ V3B/C ເພື່ອຄວາມສະດວກໃນການນຳໃຊ້, ແລະທີ່ຢູ່ 3 ອັນຂ້າງເທິງນີ້ຈະຖືກແບ່ງປັນກັບ EXC ໃນ V3A.
ຊຸດລົງທະບຽນ PFIC
ຕາຕະລາງ 3-2 ການລົງທະບຽນ PFIC
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_ISRx | 0xE000E000
-0xE000E01C |
RO | ຂັດຂວາງການເປີດໃຊ້ສະຖານະລົງທະບຽນ x | 0x00000000 |
| PFIC_IPRx | 0xE000E020
-0xE000E03C |
RO | ຂັດຂວາງສະຖານະການລໍຖ້າລົງທະບຽນ x | 0x00000000 |
| PFIC_ITHRESDR | 0xE000E040 | RW | ຂັດຂວາງການລົງທະບຽນກໍານົດຂອບເຂດບູລິມະສິດ | 0x00000000 |
| PFIC_VTFBADDRR | 0xE000E044 | RW | ລົງທະບຽນທີ່ຢູ່ຖານ VTF
ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ |
0x00000000 |
| PFIC_CFGR | 0xE000E048 | RW | ຂັດຂວາງການລົງທະບຽນການຕັ້ງຄ່າ
ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ |
0x00000000 |
| PFIC_GISR | 0xE000E04C | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະພາບທົ່ວໂລກ | 0x00000002 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
ລົງທະບຽນການກຳນົດຄ່າ ID ລົບກວນ VTF
ໝາຍເຫດ: ໃຊ້ໄດ້ສະເພາະກັບ V3B/C ເທົ່ານັ້ນ. |
0x00000000 |
| PFIC_VTFADDRRx | 0xE000E060
-0xE000E06C |
RW | ລົງທະບຽນທີ່ຢູ່ VTF x offset | 0xXXXXXXXXX |
| PFIC_INRx | 0xE000E100
-0xE000E11C |
WO | ຂັດຂວາງການເປີດໃຊ້ການຕັ້ງຄ່າລົງທະບຽນ x | 0x00000000 |
| PFIC_IRERx | 0xE000E180
-0xE000E19C |
WO | ຂັດຂວາງເປີດໃຊ້ clear register x | 0x00000000 |
| PFIC_IPSRx | 0xE000E200
-0xE000E21C |
WO | ຂັດຂວາງການຕັ້ງຄ່າທີ່ລໍຖ້າລົງທະບຽນ x | 0x00000000 |
| PFIC_IPRRx | 0xE000E280
-0xE000E29C |
WO | ຂັດຂວາງການລົງທະບຽນທີ່ຈະແຈ້ງ x | 0x00000000 |
| PFIC_IATRx | 0xE000E300
-0xE000E31C |
RO | ຂັດຂວາງສະຖານະການເປີດໃຊ້ງານລົງທະບຽນ x | 0x00000000 |
| PFIC_IPRIORx | 0xE000E400
-0xE000E43C |
RW | ຂັດຂວາງການລົງທະບຽນການຕັ້ງຄ່າບູລິມະສິດ | 0x00000000 |
| PFIC_SCTLR | 0xE000ED10 | RW | ລົງທະບຽນການຄວບຄຸມລະບົບ | 0x00000000 |
ໝາຍເຫດ:
- NMI, EXC, ECALL-M, ECALL-U, ແລະ BREAKPOINT ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນສະເໝີ.
- ECALL-M, ECALL-U, ແລະ BREAKPOINT ແມ່ນກໍລະນີຂອງ EXC.
- NMI, EXC, ECALL-M, ECALL-U, ແລະ BREAKPOINT ຮອງຮັບການຂັດຈັງຫວະທີ່ຍັງຄ້າງຢູ່ຢ່າງຈະແຈ້ງ ແລະການຕັ້ງຄ່າການດຳເນີນການ, ແຕ່ບໍ່ຂັດຈັງຫວະ ເປີດໃຊ້ງານທີ່ຊັດເຈນ ແລະການຕັ້ງຄ່າ.
ແຕ່ລະທະບຽນແມ່ນໄດ້ອະທິບາຍດັ່ງນີ້:
ຂັດຂວາງການເປີດໃຊ້ສະຖານະ ແລະຂັດຂວາງການລົງທະບຽນສະຖານະທີ່ຍັງຄ້າງຢູ່ (PFIC_ISR<0-7>/PFIC_IPR<0-7>)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_ISR0 | 0xE000E000 | RO | Interrupt 0-31 ເປີດໃຊ້ສະຖານະລົງທະບຽນ, ຈໍານວນທັງຫມົດ 32 status bits [n], ຊີ້ບອກ #n interrupt ເປີດໃຊ້ສະຖານະ
ຫມາຍເຫດ: NMI ແລະ EXC ຖືກເປີດໃຊ້ ໂດຍຄ່າເລີ່ມຕົ້ນ |
ສໍາລັບ V3A: 0x0000000C
ສໍາລັບ V3B/C: 0x0000032C |
| PFIC_ISR1 | 0xE000E004 | RO | ຂັດຂວາງ 32-63 ເປີດການລົງທະບຽນສະຖານະ, ຈໍານວນທັງຫມົດ 32 ບິດສະຖານະພາບ | 0x00000000 |
| … | … | … | … | … |
| PFIC_ISR7 | 0xE000E01C | RO | ຂັດຂວາງ 224-255 ເປີດການລົງທະບຽນສະຖານະ, ຈໍານວນທັງຫມົດ 32 ບິດສະຖານະພາບ | 0x00000000 |
| PFIC_IPR0 | 0xE000E020 | RO | ຂັດຂວາງສະຖານະທີ່ຍັງຄ້າງຢູ່ 0-31 | 0x00000000 |
| ລົງທະບຽນ, ຈໍານວນທັງຫມົດ 32 ສະຖານະພາບ bits [n], ຊີ້ໃຫ້ເຫັນສະຖານະທີ່ຍັງຄ້າງຂອງການຂັດຂວາງ #n | ||||
| PFIC_IPR1 | 0xE000E024 | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະທີ່ຍັງຄ້າງ 32-63, 32 bits ສະຖານະພາບໃນຈໍານວນທັງຫມົດ | 0x00000000 |
| … | … | … | … | … |
| PFIC_IPR7 | 0xE000E03C | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະທີ່ຍັງຄ້າງ 244-255, 32 bits ສະຖານະພາບໃນຈໍານວນທັງຫມົດ | 0x00000000 |
ສອງຊຸດຂອງທະບຽນແມ່ນໃຊ້ເພື່ອເປີດໃຊ້ງານແລະປິດການເປີດໃຊ້ການຂັດຂວາງທີ່ສອດຄ້ອງກັນ.
ຂັດຂວາງການເປີດໃຊ້ການຕັ້ງຄ່າ ແລະລຶບລ້າງການລົງທະບຽນ (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_IENR0 | 0xE000E100 | WO | Interrupt 0-31 ເປີດໃຊ້ການລົງທະບຽນການຕັ້ງຄ່າ, ຈໍານວນທັງຫມົດ 32 setting bits [n], ສໍາລັບ interrupt #n ເປີດໃຊ້ການຕັ້ງຄ່າ
ໝາຍເຫດ: NMI ແລະ EXC ແມ່ນ ເປີດໃຊ້ງານ ໂດຍຄ່າເລີ່ມຕົ້ນ |
0x00000000 |
| PFIC_IENR1 | 0xE000E104 | WO | ຂັດຂວາງ 32-63 ເພື່ອເປີດໃຊ້ການລົງທະບຽນການຕັ້ງຄ່າ, ຈໍານວນທັງຫມົດ 32 bits ການຕັ້ງຄ່າ | 0x00000000 |
| … | … | … | … | … |
| PFIC_IENR7 | 0xE000E11C | WO | ຂັດຂວາງ 224-255 ເປີດໃຊ້ການຕັ້ງຄ່າ
ລົງທະບຽນ, ຈໍານວນທັງຫມົດ 32 ບິດການຕັ້ງຄ່າ |
0x00000000 |
| – | – | – | – | – |
| PFIC_IRER0 | 0xE000E180 | WO | ຂັດຂວາງ 0-31 ເປີດໃຊ້ການລົງທະບຽນທີ່ຊັດເຈນ, ຈໍານວນທັງຫມົດ 32 clear bits [n], ສໍາລັບການຂັດຂວາງ #n ເປີດໃຊ້ clear ຫມາຍເຫດ: NMI ແລະ EXC ບໍ່ສາມາດເປັນ ດໍາເນີນການ |
0x00000000 |
| PFIC_IRER1 | 0xE000E184 | WO | ການຂັດຂວາງ 32-63 ເຮັດໃຫ້ການລົງທະບຽນທີ່ຊັດເຈນ, ຈໍານວນທັງຫມົດ 32 ບິດທີ່ຊັດເຈນ | 0x00000000 |
| … | … | … | … | … |
| PFIC_IRER7 | 0xE000E19C | WO | ການຂັດຂວາງ 244-255 ເຮັດໃຫ້ການລົງທະບຽນທີ່ຊັດເຈນ, ຈໍານວນທັງຫມົດ 32 ບິດທີ່ຊັດເຈນ | 0x00000000 |
ສອງຊຸດຂອງທະບຽນແມ່ນໃຊ້ເພື່ອເປີດໃຊ້ງານແລະປິດການເປີດໃຊ້ການຂັດຂວາງທີ່ສອດຄ້ອງກັນ.
ຂັດຂວາງການຕັ້ງຄ່າທີ່ຍັງຄ້າງຢູ່ ແລະລຶບລ້າງການລົງທະບຽນ (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
|
PFIC_IPSR0 |
0xE000E200 |
WO |
ຂັດຂວາງ 0-31 ລໍຖ້າການລົງທະບຽນ, 32
setting bits [n], ສໍາລັບ interrupt #n ລໍຖ້າການຕັ້ງຄ່າ |
0x00000000 |
| PFIC_IPSR1 | 0xE000E204 | WO | ຂັດຂວາງການລົງທະບຽນ 32-63 ທີ່ຍັງຄ້າງການລົງທະບຽນ,
ຈໍານວນທັງຫມົດ 32 bits ການຕັ້ງຄ່າ |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPSR7 | 0xE000E21C | WO | ຂັດຂວາງການຕັ້ງຄ່າທີ່ຍັງຄ້າງຢູ່ 224-255
ລົງທະບຽນ, 32 bits ການຕັ້ງຄ່າທັງຫມົດ |
0x00000000 |
| – | – | – | – | – |
|
PFIC_IPRR0 |
0xE000E280 |
WO |
ຂັດຂວາງ 0-31 ລໍຖ້າການລົງທະບຽນທີ່ຊັດເຈນ, ຈໍານວນທັງຫມົດ 32 clear bits [n], ສໍາລັບການຂັດຂວາງ #n
ລໍຖ້າຈະແຈ້ງ |
0x00000000 |
| PFIC_IPRR1 | 0xE000E284 | WO | ຂັດຂວາງ 32-63 ລໍຖ້າການລົງທະບຽນທີ່ຈະແຈ້ງ,
ທັງຫມົດ 32 bits ທີ່ຈະແຈ້ງ |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPRR7 | 0xE000E29C | WO | ຂັດຂວາງ 244-255 ລໍຖ້າການລົງທະບຽນທີ່ຈະແຈ້ງ,
ທັງຫມົດ 32 bits ທີ່ຈະແຈ້ງ |
0x00000000 |
ເມື່ອໄມໂຄຣໂປຣເຊສເຊີເປີດໃຊ້ການຂັດຈັງຫວະ, ມັນສາມາດຖືກຕັ້ງໂດຍກົງຜ່ານທະບຽນທີ່ຄ້າງຢູ່ຂັດຈັງຫວະເພື່ອກະຕຸ້ນການລົບກວນ. ໃຊ້ການຂັດຂວາງການລົງທະບຽນທີ່ຍັງຄ້າງຢູ່ເພື່ອລຶບລ້າງ trigger ທີ່ຍັງຄ້າງຢູ່.
ຂັດຂວາງການລົງທະບຽນສະຖານະການເປີດໃຊ້ງານ (PFIC_IACTR<0-7>)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_IACTR0 | 0xE000E300 | RO | Interrupt 0-31 ເປີດໃຊ້ການລົງທະບຽນສະຖານະດ້ວຍ 32 status bits [n], ສະແດງໃຫ້ເຫັນວ່າ interrupt #n ກໍາລັງຖືກປະຕິບັດ. | 0x00000000 |
| PFIC_IACTR1 | 0xE000E304 | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະພາບການເປີດໃຊ້ 32-63, 32 bits ສະຖານະພາບໃນ
ທັງໝົດ |
0x00000000 |
| … | … | … | … | … |
| PFIC_IACTR7 | 0xE000E31C | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະພາບການເປີດໃຊ້ 224-255, ຈໍານວນທັງຫມົດ 32 ບິດສະຖານະພາບ | 0x00000000 |
ແຕ່ລະ interrupt ມີ bit ສະຖານະການເຄື່ອນໄຫວທີ່ສ້າງຕັ້ງຂຶ້ນໃນເວລາທີ່ interrupt ໄດ້ຖືກເຂົ້າໄປໃນແລະລ້າງໂດຍຮາດແວໃນເວລາທີ່ຕະຫຼາດກັບຄືນມາ.
ຂັດຂວາງການລົງທະບຽນບູລິມະສິດ ແລະລະດັບຄວາມສຳຄັນ (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_IPRIOR0 | 0xE000E400 | RW | ຂັດຂວາງ 0 ການຕັ້ງຄ່າບູລິມະສິດ. V3A: [7:4]: ບູລິມະສິດຄວບຄຸມ bits ຖ້າການຕັ້ງຄ່າບໍ່ຖືກວາງໄວ້, ບໍ່ມີການຈອງບິດ ຖ້າການຕັ້ງຮັງຖືກຕັ້ງໄວ້, bit7 ແມ່ນບິດທີ່ຖືກຈອງໄວ້ລ່ວງໜ້າ. [3:0]: ສະຫງວນໄວ້, ແກ້ໄຂເປັນ 0 V3B: [7:6]: ບູລິມະສິດການຄວບຄຸມບິດ ຖ້າການຕັ້ງຄ່າບໍ່ຖືກວາງໄວ້, ບໍ່ມີບິດທີ່ຕັ້ງໄວ້ລ່ວງໜ້າທີ່ຖືກຕັ້ງໄວ້ທີ່ວາງໄວ້, ບິດທັງໝົດຈະຖືກຈອງໄວ້ລ່ວງໜ້າ, ແຕ່ການຂັດຂວາງເຖິງສອງລະດັບແມ່ນອະນຸຍາດໃຫ້ເກີດຂຶ້ນ [5:0]: ສະຫງວນໄວ້, ແກ້ໄຂເປັນ 0. V3C: [7:5]: ບູລິມະສິດການຄວບຄຸມ bits ຖ້າການຕັ້ງຄ່າບໍ່ຖືກວາງໄວ້, ບໍ່ມີບິດເບືອນລ່ວງໜ້າ ຖ້າ configured nested, bits ທັງຫມົດແມ່ນ preempted, ແຕ່ເຖິງສອງລະດັບຂອງ interrupts ແມ່ນອະນຸຍາດໃຫ້ເກີດຂຶ້ນ [4:0]: ສະຫງວນໄວ້, fixed ເປັນ 0 ຫມາຍເຫດ: ຂະຫນາດນ້ອຍກວ່າຄ່າບູລິມະສິດ, ຄວາມສໍາຄັນສູງ. ຖ້າບູລິມະສິດການລ່ວງລະເມີດດຽວກັນຂັດຂວາງການຂັດຂວາງໃນເວລາດຽວກັນ, ການຂັດຂວາງກັບຄວາມສໍາຄັນທີ່ສູງກວ່າຈະຖືກປະຕິບັດກ່ອນ. |
0x00 |
| PFIC_IPRIOR1 | 0xE000E401 | RW | ຂັດຂວາງ 1 ການຕັ້ງຄ່າບູລິມະສິດ, ຟັງຊັນດຽວກັນກັບ PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR2 | 0xE000E402 | RW | ຂັດຂວາງ 2 ການຕັ້ງຄ່າບູລິມະສິດ, ຟັງຊັນດຽວກັນກັບ PFIC_IPRIOR0 | |
| … | … | … | … | … |
| PFIC_IPRIOR254 | 0xE000E4FE | RW | ຂັດຂວາງການຕັ້ງຄ່າບູລິມະສິດ 254, ຟັງຊັນດຽວກັນກັບ PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR255 | 0xE000E4FF | RW | ຂັດຂວາງ 255 ການຕັ້ງຄ່າບູລິມະສິດ, ຟັງຊັນດຽວກັນກັບ PFIC_IPRIOR0 | 0x00 |
| – | – | – | – | – |
| PFIC_ITHRESDR | 0xE000E040 | RW | ຂັດຂວາງການກໍານົດຂອບເຂດບູລິມະສິດ
V3A: [31:8]: ສະຫງວນ, ແກ້ໄຂເປັນ 0 [7:4]: ເກນບຸລິມະສິດ [3:0]: ສະຫງວນໄວ້, ແກ້ໄຂເປັນ 0V3B: [31:8]: ສະຫງວນ, ແກ້ໄຂເປັນ 0 [7:5]: ເກນບຸລິມະສິດ [4:0]: ສະຫງວນໄວ້, ແກ້ໄຂເປັນ 0V3C: [31:8]: ສະຫງວນ, ແກ້ໄຂເປັນ 0 [7:5]: ເກນບຸລິມະສິດ [4:0]: ສະຫງວນໄວ້, ແກ້ໄຂເປັນ 0ໝາຍເຫດ: ສໍາລັບການຂັດຂວາງກັບຄ່າບູລິມະສິດ ≥ threshold, ຟັງຊັນການບໍລິການຂັດຂວາງບໍ່ໄດ້ຖືກປະຕິບັດເມື່ອມີ hang ເກີດຂຶ້ນ, ແລະເມື່ອລົງທະບຽນນີ້ແມ່ນ 0, ມັນຫມາຍຄວາມວ່າການລົງທະບຽນແມ່ນບໍ່ຖືກຕ້ອງ. |
0x00 |
ການລົງທະບຽນການຕັ້ງຄ່າລົບກວນ (PFIC_CFGR)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_CFGR | 0xE000E048 | RW | ຂັດຂວາງການລົງທະບຽນການຕັ້ງຄ່າ | 0x00000000 |
ການລົງທະບຽນນີ້ແມ່ນຖືກຕ້ອງສໍາລັບ V3A, bits ຂອງມັນຖືກກໍານົດເປັນ:
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:16] | ຄີລະຫັດ | WO | ທີ່ສອດຄ້ອງກັບບິດຄວບຄຸມເປົ້າຫມາຍທີ່ແຕກຕ່າງກັນ, ຂໍ້ມູນການກໍານົດການເຂົ້າເຖິງຄວາມປອດໄພທີ່ສອດຄ້ອງກັນຕ້ອງໄດ້ຮັບການຂຽນພ້ອມໆກັນເພື່ອຖືກດັດແກ້, ແລະຂໍ້ມູນການອ່ານຖືກແກ້ໄຂເປັນ 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF. | 0 |
| [15:8] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 7 | SYSRESET | WO | ຣີເຊັດລະບົບ (ຂຽນພ້ອມໆກັນໃສ່ KEY3). ລຶບລ້າງອັດຕະໂນມັດ 0.
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. ໝາຍເຫດ: ຟັງຊັນດຽວກັນກັບ PFIC_SCTLR ລົງທະບຽນ SYSRESET bit. |
0 |
| 6 | PFICRESET | WO | ຣີເຊັດໂມດູນ PFIC. ລຶບລ້າງອັດຕະໂນມັດ 0.
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. |
0 |
| 5 | ດ່ວນ | WO | ຂໍ້ຍົກເວັ້ນຂັດຂວາງທີ່ຍັງຄົງຄ້າງທີ່ຈະແຈ້ງ (ຂຽນພ້ອມກັນກັບ KEY2)
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. |
0 |
| 4 | EXCSET | WO | ຂໍ້ຍົກເວັ້ນຂັດຂວາງການຕັ້ງຄ່າທີ່ຍັງຄົງຄ້າງ (ຂຽນພ້ອມກັນກັບ KEY2)
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. |
0 |
| 3 | NMIRESET | WO | NMI ຂັດຈັງຫວະທີ່ຍັງຄ້າງຢູ່ຈະແຈ້ງ (ຂຽນພ້ອມໆກັນຫາ KEY2)
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. |
0 |
| 2 | NMISET | WO | ການຕັ້ງຄ່າທີ່ຍັງຄົງຄ້າງ NMI ຂັດຂວາງ (ການຂຽນພ້ອມກັນກັບ KEY2)
ການຂຽນ 1 ແມ່ນຖືກຕ້ອງ, ການຂຽນ 0 ບໍ່ຖືກຕ້ອງ. |
0 |
| 1 | NESTCTRL | RW | ການຂັດຂວາງການຮັງເຮັດໃຫ້ສາມາດຄວບຄຸມໄດ້.
1: ປິດ; 0: ເປີດ (ການຂຽນ synchronous ກັບ KEY1) |
0 |
| 0 | HWSTKCTRL | RW | HPE ເປີດໃຊ້ການຄວບຄຸມ
1: ປິດ; 0: ເປີດ (ການຂຽນ synchronous ກັບ KEY1) |
0 |
ຂັດຂວາງການລົງທະບຽນສະຖານະທົ່ວໂລກ (PFIC_GISR)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_GISR | 0xE000E04C | RO | ຂັດຂວາງການລົງທະບຽນສະຖານະພາບທົ່ວໂລກ | 0x00000000 |
ຄົນຂອງມັນຖືກ ກຳ ນົດເປັນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:14] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
|
13 |
ລັອກສະຕາ |
RO |
ປະຈຸບັນໂປເຊດເຊີຢູ່ໃນສະຖານະລັອກຫຼືບໍ່:
1: ລັດລັອກ; 0: ລັດບໍ່ລັອກ. ໝາຍເຫດ: ບິດນີ້ໃຊ້ໄດ້ກັບ V3B/C ເທົ່ານັ້ນ. |
0 |
|
12 |
DBGMODE |
RO |
ປະຈຸບັນໂຮງງານຜະລິດຢູ່ໃນສະຖານະດີບັກ: 1: ສະຖານະດີບັກ;
0: ສະຖານະທີ່ບໍ່ມີການດີບັກ. ໝາຍເຫດ: ບິດນີ້ໃຊ້ໄດ້ກັບ V3B/C ເທົ່ານັ້ນ. |
0 |
|
11 |
ໂລກ |
RO |
ເປີດໃຊ້ການລົບກວນທົ່ວໂລກ:
1: ເປີດໃຊ້ການຂັດຂວາງ; 0: ປິດການຂັດຂວາງ. ໝາຍເຫດ: ບິດນີ້ໃຊ້ໄດ້ກັບ V3B/C ເທົ່ານັ້ນ. |
|
| 10 | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 9 | GPENDSTA | RO | ບໍ່ວ່າການຂັດຈັງຫວະກຳລັງລໍຖ້າຢູ່.
1: ແມ່ນ; 0: ບໍ່. |
0 |
| 8 | GACTSTA | RO | ບໍ່ວ່າການຂັດຂວາງກໍາລັງຖືກປະຕິບັດ.
1: ແມ່ນ; 0: ບໍ່. |
0 |
|
[7:0] |
NESTSTA |
RO |
ສະຖານະການຂັດຈັງຫວະການຮັງໃນປັດຈຸບັນ. 0x03: ໃນລະດັບ 2 ຂັດຂວາງ.
0x01: ໃນລະດັບ 1 ຂັດຂວາງ. 0x00: ບໍ່ມີການຂັດຂວາງເກີດຂຶ້ນ. ອື່ນ: ສະຖານະການເປັນໄປບໍ່ໄດ້. |
0 |
ທີ່ຢູ່ຖານ VTF ID ແລະທະບຽນທີ່ຢູ່ຊົດເຊີຍ (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
|
PFIC_VTFBADDRR |
0xE000E044 |
RW |
[31:28]: ສູງ 4 bits ຂອງທີ່ຢູ່ເປົ້າໝາຍຂອງ VTF [27:0]: ສະຫງວນໄວ້
ການລົງທະບຽນນີ້ແມ່ນໃຊ້ໄດ້ສະເພາະກັບ V3A ເທົ່ານັ້ນ. |
0x00000000 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
[31:24]: ຈໍານວນ VTF 3 [23:16]: ຈໍານວນ VTF 2 [15:8]: ຈໍານວນ VTF 1 [7:0]: ຈໍານວນ VTF 0.
ການລົງທະບຽນນີ້ໃຊ້ໄດ້ສະເພາະກັບ V3B/C ເທົ່ານັ້ນ. |
0x00000000 |
| – | – | – | – | – |
|
PFIC_VTFADDRR0 |
0xE000E060 | RW | V3A: [31:24]: VTF 0 interrupt number [23:0]: 24 bits ຕໍ່າຂອງທີ່ຢູ່ເປົ້າໝາຍ VTF, ເຊິ່ງ 20 bits ຕໍ່າຖືກຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ, ແລະ [23:20] ຖືກແກ້ໄຂເປັນ 0.
V3B/C: [31:1]: ທີ່ຢູ່ VTF 0, ຈັດຮຽງ 2-byte [0]:1: ເປີດໃຊ້ຊ່ອງ VTF 0 0: ປິດການໃຊ້ງານ |
ສໍາລັບ V3A: 0x00000000 ສໍາລັບ V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR1 |
0xE000E064 |
RW |
V3A: [31:24]: VTF 1 interrupt number [23:0]: 24 bits ຕໍ່າຂອງທີ່ຢູ່ເປົ້າໝາຍ VTF, ເຊິ່ງ 20 bits ຕໍ່າຖືກຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ ແລະ [23:20] ຖືກແກ້ໄຂເປັນ 0.
V3B/C: [31:1]: ທີ່ຢູ່ VTF 1, ຈັດຮຽງ 2-byte [0]:1: ເປີດໃຊ້ຊ່ອງ VTF 1 0: ປິດການໃຊ້ງານ |
ສໍາລັບ V3A: 0x00000000 ສໍາລັບ V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR2 |
0xE000E068 |
RW |
V3A: [31:24]: VTF 2 interrupt number [23:0]: 24 bits ຕໍ່າຂອງທີ່ຢູ່ເປົ້າໝາຍ VTF, ເຊິ່ງ 20 bits ຕໍ່າຖືກຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ, ແລະ [23:20] ຖືກແກ້ໄຂເປັນ 0.
V3B/C: [31:1]: ທີ່ຢູ່ VTF 2, ຈັດຮຽງ 2-byte [0]:1: ເປີດໃຊ້ຊ່ອງ VTF 2 0: ປິດການໃຊ້ງານ |
ສໍາລັບ V3A: 0x00000000 ສໍາລັບ V3B/C: 0xXXXXXXXXX |
| PFIC_VTFADDRR3 | 0xE000E06C | RW | V3A: | ສໍາລັບ V3A: |
| [31:24]: VTF 3 interrupt number [23:0]: ຕ່ຳ 24 bits ຂອງທີ່ຢູ່ເປົ້າໝາຍ VTF, ເຊິ່ງ 20 bits ຕ່ຳຖືກກຳນົດຄ່າໃຫ້ຖືກຕ້ອງ, ແລະ [23:20] ຖືກແກ້ໄຂເປັນ 0.
V3B/C: [31:1]: ທີ່ຢູ່ VTF 3, ຈັດຮຽງ 2-byte [0]:1: ເປີດໃຊ້ຊ່ອງ VTF 3 0: ປິດການໃຊ້ງານ |
0x00000000
ສໍາລັບ V3B/C: 0xXXXXXXXXX |
ລົງທະບຽນການຄວບຄຸມລະບົບ (PFIC_SCTLR)
| ຊື່ | ເຂົ້າເຖິງ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| PFIC_SCTLR | 0xE000ED10 | RW | ລົງທະບຽນການຄວບຄຸມລະບົບ | 0x00000000 |
ແຕ່ລະຄົນຂອງພວກເຂົາຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້.
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| 31 | SYSRESET | WO | ຣີເຊັດລະບົບ, ລຶບອັດຕະໂນມັດ 0. ຂຽນ 1 ຖືກຕ້ອງ, ແລະຂຽນ 0 ບໍ່ຖືກຕ້ອງ.
ໝາຍເຫດ: ບິດນີ້ໃຊ້ໄດ້ກັບ V3B/C ເທົ່ານັ້ນ |
0 |
| [30:6] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 5 | SETEVENT | WO | ກໍານົດເຫດການເພື່ອປຸກກໍລະນີ WFE. | 0 |
|
4 |
SEVONPEND | RW | ເມື່ອເຫດການເກີດຂຶ້ນຫຼືຂັດຂວາງສະຖານະທີ່ຍັງຄ້າງຢູ່, ລະບົບສາມາດປຸກໄດ້ຫຼັງຈາກຄໍາແນະນໍາຂອງ WFE, ຫຼືຖ້າຄໍາແນະນໍາຂອງ WFE ບໍ່ໄດ້ຖືກປະຕິບັດ, ລະບົບຈະຖືກປຸກທັນທີຫຼັງຈາກການປະຕິບັດຄໍາແນະນໍາຕໍ່ໄປ.
1: ເຫດການທີ່ເປີດໃຊ້ງານແລະການຂັດຂວາງທັງຫມົດ (ລວມທັງການຂັດຂວາງທີ່ບໍ່ໄດ້ເປີດໃຊ້) ສາມາດປຸກລະບົບໄດ້. 0: ພຽງແຕ່ເປີດໃຊ້ເຫດການແລະເປີດໃຊ້ງານ ການຂັດຂວາງສາມາດປຸກລະບົບ. |
0 |
| 3 | WFIITOWFE | RW | ປະຕິບັດຄໍາສັ່ງ WFI ຄືກັບວ່າມັນເປັນ WFE.
1: ປະຕິບັດຄໍາແນະນໍາ WFI ຕໍ່ມາເປັນຄໍາແນະນໍາ WFE. 0: ບໍ່ມີຜົນກະທົບ. |
0 |
| 2 | ນອນດີ | RW | ໂຫມດພະລັງງານຕ່ໍາຂອງລະບົບການຄວບຄຸມ. | 0 |
| 1: deepsleep 0: ນອນ | ||||
| 1 | SLEEPONEXI T | RW | ສະຖານະຂອງລະບົບຫຼັງຈາກການຄວບຄຸມອອກຈາກໂຄງການບໍລິການຂັດຂວາງ.
1: ລະບົບເຂົ້າສູ່ໂຫມດພະລັງງານຕ່ໍາ. 0: ລະບົບເຂົ້າສູ່ໂຄງການຕົ້ນຕໍ. |
0 |
| 0 | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
ການຂັດຂວາງການລົງທະບຽນ CSR ທີ່ກ່ຽວຂ້ອງກັບ
ນອກຈາກນັ້ນ, ການລົງທະບຽນ CSR ຕໍ່ໄປນີ້ຍັງມີຜົນກະທົບຢ່າງຫຼວງຫຼາຍຕໍ່ການປຸງແຕ່ງການຂັດຂວາງ. ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມລະບົບ (intsyscr)
ການລົງທະບຽນນີ້ບໍ່ຖືກຕ້ອງສໍາລັບ V3A ເທົ່ານັ້ນ:
| ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| intsyscr | 0x804 | URW | ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມລະບົບ | 0x0000E002 |
ຄົນຂອງມັນຖືກ ກຳ ນົດວ່າ:
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
|
31 |
ລັອກ |
URO |
0: ການລົງທະບຽນນີ້ສາມາດອ່ານແລະຂຽນໃນຮູບແບບຜູ້ໃຊ້;
1: ລົງທະບຽນນີ້ພຽງແຕ່ສາມາດອ່ານແລະຂຽນໃນໂຫມດເຄື່ອງ. ຫມາຍເຫດ: ບິດການຕັ້ງຄ່ານີ້ແມ່ນຖືກຕ້ອງຈາກ ເວີຊັ່ນ 1.0 ເປັນຕົ້ນໄປ. |
0 |
| [30:6] | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0x380 |
|
5 |
GIHWSTKNEN |
URW1 |
ການຂັດຂວາງທົ່ວໂລກແລະການປິດຊຸດຮາດແວຖືກເປີດໃຊ້.
ຫມາຍເຫດ: ບິດນີ້ມັກຈະຖືກນໍາໃຊ້ໃນລະບົບປະຕິບັດການໃນເວລາທີ່ແທ້ຈິງ. ເມື່ອສະພາບການຖືກປ່ຽນໃນລະຫວ່າງການຂັດຈັງຫວະ, ການຕັ້ງຄ່າບິດນີ້ສາມາດປິດການລົບກວນທົ່ວໂລກ ແລະຍູ້ຮາດແວ stack. ເມື່ອສະຫຼັບບໍລິບົດສຳເລັດແລ້ວ ແລະຜົນຕອບແທນຂັດຂວາງ, ຮາດແວຈະ ອັດຕະໂນມັດລ້າງບິດນີ້. |
0 |
| 4 | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0 |
| [3:2] | PMTCFG | URW | ການຕັ້ງຄ່າບູລິມະສິດ bits preemption:
00: ຈໍານວນຂອງ preemption bits ແມ່ນ 0; 01: ຈໍານວນຂອງ preemption bits ແມ່ນ 1; 10: ຈໍານວນຂອງ preemption bits ແມ່ນ 2; 11: ຈໍານວນຂອງ preemption bits ແມ່ນ 3; ຫມາຍເຫດ: ບິດການຕັ້ງຄ່ານີ້ແມ່ນຖືກຕ້ອງຫຼັງຈາກ 1.0. |
0 |
| 1 | ຟັງ | URW | ຟັງຊັນ interrupt nesting ຖືກເປີດໃຊ້, ແລະຄ່າຄົງທີ່ແມ່ນ 1: | 1 |
| 0: ປິດການໃຊ້ງານ;
1: ເປີດໃຊ້. ຫມາຍເຫດ: 1. ລະດັບການຮັງຕົວຈິງຖືກຄວບຄຸມໂດຍ NEST_LVL ໃນ CSR 0xBC1; 2. ພຽງແຕ່ສະບັບຫຼັງຈາກ 1.0 ສາມາດເປັນ ຂຽນ. |
||||
| 0 | HWSTKEN | URW | ເປີດໃຊ້ Hardware stack:
0: ຟັງຊັນກົດ stack ຮາດແວຖືກປິດໃຊ້ງານ; 1: ຟັງຊັນກົດ stack ຂອງຮາດແວຖືກເປີດໃຊ້. |
0 |
ລົງທະບຽນທີ່ຢູ່ຖານຂໍ້ຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກ (mtvec)
| ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| mtvec | 0x305 | MRW | ການຍົກເວັ້ນການລົງທະບຽນທີ່ຢູ່ຖານ | 0x00000000 |
ຄົນຂອງມັນຖືກ ກຳ ນົດເປັນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:2] | BASEADDR[31:2] | MRW | ຂັດຂວາງທີ່ຢູ່ຕາຕະລາງ vector, ບ່ອນທີ່
bits [9:2] ຖືກແກ້ໄຂເປັນ 0. |
0 |
| 1 | MODE1 |
MRO |
ຂັດຂວາງຮູບແບບການຮັບຮູ້ຕາຕະລາງ vector: 0: ກໍານົດໂດຍຄໍາແນະນໍາການເຕັ້ນໄປຫາ, ທີ່ມີຂອບເຂດຈໍາກັດ, ແລະສະຫນັບສະຫນູນຄໍາແນະນໍາທີ່ບໍ່ໂດດ;
1: ກໍານົດໂດຍທີ່ຢູ່ຢ່າງແທ້ຈິງ, ສະຫນັບສະຫນູນລະດັບເຕັມ, ແຕ່ຕ້ອງເຕັ້ນໄປຫາ. ໝາຍເຫດ: ບິດນີ້ໃຊ້ໄດ້ກັບ V3B/C ເທົ່ານັ້ນ. |
0 |
| 0 | MODE0 | MRW | ຂັດຂວາງຫຼືຍົກເວັ້ນການເລືອກຮູບແບບທີ່ຢູ່.
0: ການນໍາໃຊ້ທີ່ຢູ່ເຂົ້າເປັນເອກະພາບ. 1: ທີ່ຢູ່ offset ອີງໃສ່ຕົວເລກຂັດຂວາງ *4. |
0 |
ສໍາລັບ MCUs ທີ່ມີ microprocessors ຊຸດ V3, MODE0 ຖືກຕັ້ງຄ່າໃຫ້ເປັນ 1 ໂດຍຄ່າເລີ່ມຕົ້ນໃນການເລີ່ມຕົ້ນ. file, ແລະລາຍການສໍາລັບຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງແມ່ນຊົດເຊີຍຕາມຈໍານວນຂັດຂວາງ *4. ໃຫ້ສັງເກດວ່າ microprocessor V3A ເກັບຮັກສາຄໍາແນະນໍາກະໂດດຢູ່ໃນຕາຕະລາງ vector, ໃນຂະນະທີ່ microprocessor V3B/C ສາມາດເປັນຄໍາແນະນໍາການໂດດຫຼືໃຊ້ທີ່ຢູ່ຢ່າງແທ້ຈິງຂອງຟັງຊັນຂັດຂວາງ, ເຊິ່ງຖືກຕັ້ງຄ່າເປັນທີ່ຢູ່ຢ່າງແທ້ຈິງໃນການເລີ່ມຕົ້ນເລີ່ມຕົ້ນ. file.
ລົງທະບຽນການຕັ້ງຄ່າໄມໂຄຣໂປຣເຊສເຊີ (ຕົວແກ້ໄຂ)
ທະບຽນນີ້ບໍ່ຖືກຕ້ອງສຳລັບ V3A:
| ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| corecfgr | 0xBC0 | MRW | ລົງທະບຽນການຕັ້ງຄ່າໄມໂຄຣໂປຣເຊສເຊີ | 0x00000001 |
ຄົນຂອງມັນຖືກ ກຳ ນົດເປັນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:8] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
|
7 |
CSTA_FAULT_IE |
MRW |
ສະຖານະຫຼັກຜິດພາດຂັດຂວາງການເປີດໃຊ້ງານ:
0: ໃນສະຖານະການຜິດພາດ, ບໍ່ມີການລົບກວນ NMI ຖືກສ້າງຂຶ້ນ; 1: ໃນສະຖານະການຜິດພາດ, NMI interrupt ແມ່ນ ສ້າງຂຶ້ນ. |
0 |
| 6 | ສະຫງວນໄວ້ | MRO | ຮັກສາໄວ້ 0. | 0 |
| 5 | IE_REMAP_EN | MRW | ການສ້າງແຜນທີ່ການລົງທະບຽນ MIE ເປີດໃຊ້:
0: ທີ່ຢູ່ CSR 0x800 ແມ່ນການລົງທະບຽນແບບອ່ານເທົ່ານັ້ນ ແລະຄ່າກັບຄືນແມ່ນຄ່າຂອງ STATUS; 1: ບິດ 3 ແລະ 7 ຂອງທີ່ຢູ່ CSR 0x800 ຖືກແຜນທີ່ເປັນບິດ MIE ຂອງທະບຽນ STATUS ແລະບິດ MPIE ຂອງທະບຽນ STATUS, ຕາມລໍາດັບ. |
0 |
| 4 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| 3 | ROM_LOOP_ACC | MRW | ROM ການເລັ່ງຂະບວນການຄໍາແນະນໍາພື້ນທີ່ເປີດໃຫ້ໃຊ້ງານ:
0: ປິດຟັງຊັນການເລັ່ງຮອບວຽນຢູ່ໃນພື້ນທີ່ ROM; 1: ຄໍາແນະນໍາຢ່າງຕໍ່ເນື່ອງກັບຮ່າງກາຍ loop ພາຍໃນ 128 bytes ຈະໄດ້ຮັບການເລັ່ງຢ່າງເຕັມທີ່, ໃນຂະນະທີ່ຜູ້ທີ່ມີຮ່າງກາຍ loop ພາຍໃນ 256 bytes ຈະໄດ້ຮັບການເລັ່ງບາງສ່ວນ; |
0 |
| 2 | ROM_JUMP_ACC | MRW | ເປີດໃຊ້ການເລັ່ງການໂດດຄຳແນະນຳພື້ນທີ່ ROM ແລ້ວ:
0: ປິດການໃຊ້ງານການເລັ່ງການເຕັ້ນໄປຫາພື້ນທີ່ ROM; 1: ເປີດໃຊ້ການເລັ່ງການກະໂດດຂັ້ນໃນພື້ນທີ່ ROM. |
0 |
| [1:0] | FETCH_MODE | MRW | ໂໝດດຶງຂໍ້ມູນ:
00: Prefetch ປິດ. ຟັງຊັນ prefetch ຄໍາແນະນໍາຖືກປິດໄວ້ເພື່ອຫຼີກເວັ້ນການດໍາເນີນການດຶງຄໍາແນະນໍາທີ່ບໍ່ຖືກຕ້ອງ, ແລະມີຫຼາຍຄໍາແນະນໍາທີ່ຖືກຕ້ອງຢູ່ໃນທໍ່ CPU. ຮູບແບບນີ້ມີການໃຊ້ພະລັງງານຕ່ໍາສຸດ, ແລະການປະຕິບັດຂອງມັນຫຼຸດລົງປະມານ 2 ~ 3 ເທື່ອ. 01: Prefetch Mode 1. ເມື່ອຟັງຊັນ prefetch instruction ເປີດ, CPU ຈະສືບຕໍ່ເຂົ້າຫາຫນ່ວຍຄວາມຈໍາຂອງ instruction ຈົນກ່ວາຈໍານວນຄໍາແນະນໍາທີ່ຈະປະຕິບັດໃນ buffer ຄໍາແນະນໍາພາຍໃນເກີນຈໍານວນທີ່ແນ່ນອນ, ຫຼື buffer ຄໍາແນະນໍາແມ່ນເຕັມ, ແລະ instruction fetching ຈະຖືກລະງັບ; (ຄວາມລົ້ມເຫຼວຂອງການຄາດຄະເນ CPU ຈະນໍາໄປສູ່ການປະຕິບັດການດຶງຂໍ້ມູນຊ້ໍາຊ້ອນ, ແລະໃນບາງກໍລະນີ, ຫນ່ວຍງານປະຕິບັດຈະແນະນໍາ 0 ~ 2 ຮອບຂອງຟອງ, ແລະການປະຕິບັດຂອງໂປລແກລມສ່ວນໃຫຍ່ຈະບໍ່ຫຼຸດລົງຢ່າງຈະແຈ້ງ); 10: ສະຫງວນ; |
0x1 |
ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມແບບຊ້ອນກັນ (inestcr)
ການລົງທະບຽນນີ້ບໍ່ຖືກຕ້ອງພຽງແຕ່ສໍາລັບ V3A:
| ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| ນັກລົງທຶນ | 0xBC1 | MRW | ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມແບບຊ້ອນກັນ | 0x00000000 |
ຄົນຂອງມັນຖືກ ກຳ ນົດເປັນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| 31 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| 30 | NEST_OV | MRW | Interrupt/exception nested overflow flag bit, ຂຽນ 1 ເພື່ອລຶບ:
0: ການຂັດຂວາງບໍ່ໄດ້ລົ້ນ; 1: ຂັດຂວາງທຸງ overflow. ໝາຍເຫດ: Interrupt overflow ຈະເກີດຂຶ້ນພຽງແຕ່ເມື່ອປະຕິບັດຟັງຊັນບໍລິການລົບກວນຂັ້ນສອງເພື່ອສ້າງຂໍ້ຍົກເວັ້ນການສັ່ງ ຫຼື NMI interrupt. ໃນເວລານີ້, ຂໍ້ຍົກເວັ້ນແລະ NMI ຂັດຂວາງເຂົ້າໄປໃນປົກກະຕິ, ແຕ່ CPU stack overflows, ດັ່ງນັ້ນທ່ານບໍ່ສາມາດອອກຈາກຂໍ້ຍົກເວັ້ນນີ້ແລະ. NMI ຂັດຈັງຫວະ. |
0 |
| [29:12] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [11:8] | NEST_STA | MRO | Nested status flag bit:
0000: ບໍ່ມີການຂັດຂວາງ; 0001: ລະດັບ 1 ຂັດຂວາງ; 0011: ລະດັບ 2 ຂັດຂວາງ (ຮັງ 1 ລະດັບ); |
0 |
| 0111: ລະດັບ 3 ຂັດຂວາງ (ລົ້ນ);
1111: ລະດັບ 4 ຂັດຂວາງ (ລົ້ນ). |
||||
| [7:2] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [1:0] | NEST_LVL | MRW | ລະດັບການຮັງ:
00: ການເຮັດຮັງຖືກຫ້າມແລະຫນ້າທີ່ຮັງຖືກປິດ; 01: ການເຮັດຮັງໃນລະດັບທໍາອິດ, ເຊິ່ງເຮັດໃຫ້ການທໍາງານຂອງຮັງ; ອື່ນ: ບໍ່ຖືກຕ້ອງ. ຫມາຍເຫດ: ຂຽນ 10 ຫຼື 11 ໃສ່ພາກສະຫນາມນີ້, ແລະພາກສະຫນາມຈະຖືກຕັ້ງເປັນ 01. ເມື່ອຂຽນ 11 ໄປຫາພາກສະຫນາມນີ້, ອ່ານການລົງທະບຽນນີ້ເພື່ອໃຫ້ໄດ້ລະດັບການຮັງສູງສຸດຂອງຊິບ. |
0 |
ໂໝດຜູ້ໃຊ້ລົບກວນທົ່ວໂລກ ເປີດລົງທະບຽນ (ຝຶກງານ)
ການລົງທະບຽນນີ້ບໍ່ຖືກຕ້ອງພຽງແຕ່ສໍາລັບ V3A:
| ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| gintenr | 0x800 | URW | Global interrupt ເປີດລົງທະບຽນ | 0x00000000 |
ການລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມການເປີດໃຊ້ງານແລະຫນ້າກາກຂອງການລົບກວນທົ່ວໂລກ. ການເປີດໃຊ້ງານແລະຫນ້າກາກຂອງການລົບກວນທົ່ວໂລກໃນໂຫມດເຄື່ອງຈັກສາມາດຄວບຄຸມໄດ້ໂດຍ MIE ແລະ MPIE bits ໃນສະຖານະ, ແຕ່ການລົງທະບຽນນີ້ບໍ່ສາມາດດໍາເນີນການໃນຮູບແບບຜູ້ໃຊ້ໄດ້.
ການຂັດຂວາງການເປີດໃຊ້ການລົງທະບຽນ gintenr ທົ່ວໂລກແມ່ນການສ້າງແຜນທີ່ຂອງ MIE ແລະ MPIE ໃນ mstatus, ແລະສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດແລະລ້າງ MIE ແລະ MPIE ໂດຍການດໍາເນີນງານ gintenr ໃນໂຫມດຜູ້ໃຊ້.
ແຕ່ລະພວກມັນຖືກກໍານົດເປັນ:
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:13] | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0 |
| [12:11] | MPP | URO | ເຂົ້າສູ່ໂໝດສິດທິພິເສດກ່ອນການຂັດຈັງຫວະ. | 0 |
| [10:8] | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0 |
| 7 | MPIE | URW | ເມື່ອ 0xBC0(CSR)bit5 ຖືກເປີດໃຊ້, ບິດນີ້
ສາມາດອ່ານແລະຂຽນໃນຮູບແບບຜູ້ໃຊ້. |
0 |
| [6:4] | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0 |
| 3 | MIE | URW | ເມື່ອ 0xBC0(CSR)bit5 ຖືກເປີດໃຊ້, ບິດນີ້
ສາມາດອ່ານແລະຂຽນໃນຮູບແບບຜູ້ໃຊ້. |
0 |
| [1:0] | ສະຫງວນໄວ້ | URO | ສະຫງວນໄວ້ | 0 |
ຂັດຂວາງ Nesting
ສົມທົບກັບການຂັດຂວາງ, ການລົງທະບຽນການຕັ້ງຄ່າ PFIC_CFGR ແລະລົງທະບຽນບູລິມະສິດຂັດຂວາງ PFIC_IPRIOR, ການສ້າງຮັງຂອງຂັດຂວາງສາມາດເກີດຂຶ້ນໄດ້. ເປີດໃຊ້ nesting ໃນທະບຽນການຕັ້ງຄ່າລົບກວນ ( Nesting ໄດ້ຖືກເປີດໂດຍຄ່າເລີ່ມຕົ້ນສໍາລັບ microprocessors ຊຸດ V3) ແລະກໍານົດບູລິມະສິດຂອງ interrupt ທີ່ສອດຄ້ອງກັນ. ຄ່າບູລິມະສິດນ້ອຍກວ່າ, ບູລິມະສິດສູງກວ່າ. ມູນຄ່າຂອງບິດລ່ວງໜ້າໜ້ອຍລົງ, ບຸລິມະສິດການຈອງທີ່ສູງກວ່າ. ຖ້າມີການຂັດຂວາງທີ່ຫ້ອຍຢູ່ໃນເວລາດຽວກັນພາຍໃຕ້ບູລິມະສິດ preemption ດຽວກັນ, microprocessor ຕອບສະຫນອງຕໍ່ການຂັດຂວາງດ້ວຍຄ່າບູລິມະສິດຕ່ໍາ (ບູລິມະສິດສູງກວ່າ) ທໍາອິດ.
ຮາດແວ Prologue/Epilogue (HPE)
- ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, ໄມໂຄຣໂປຣເຊສເຊີຢຸດການໄຫຼຂອງໂປຼແກຼມປະຈຸບັນແລະປ່ຽນໄປສູ່ການປະຕິບັດການຍົກເວັ້ນຫຼືການຂັດຂວາງ, ສະຖານທີ່ຂອງການໄຫຼຂອງໂປແກມໃນປະຈຸບັນຕ້ອງໄດ້ຮັບການບັນທຶກໄວ້. ຫຼັງຈາກການຍົກເວັ້ນຫຼືການຂັດຂວາງການກັບຄືນ, ມັນຈໍາເປັນຕ້ອງຟື້ນຟູສະຖານທີ່ແລະສືບຕໍ່ການປະຕິບັດການໄຫຼຂອງໂປຼແກຼມທີ່ຢຸດເຊົາ. ສໍາລັບ microprocessors ຊຸດ V3, "ເວັບໄຊ" ໃນທີ່ນີ້ຫມາຍເຖິງການລົງທະບຽນ Caller Saved ທັງຫມົດໃນຕາຕະລາງ 1-2.
- ໄມໂຄຣໂປຣເຊສເຊີຊຸດ V3 ຮອງຮັບຮາດແວແບບວົງຈອນດຽວອັດຕະໂນມັດ 16 ຂອງການລົງທະບຽນຜູ້ໂທທີ່ບັນທຶກໄວ້ໃນຮູບເປັນພື້ນທີ່ stack ພາຍໃນທີ່ຜູ້ໃຊ້ບໍ່ເຫັນ. ເມື່ອມີຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງກັບຄືນມາ, ວົງຈອນດຽວຂອງຮາດແວຈະຟື້ນຟູຂໍ້ມູນຈາກພື້ນທີ່ stack ພາຍໃນໂດຍອັດຕະໂນມັດໄປສູ່ການລົງທະບຽນ 16 ຮູບ. HPE ຮອງຮັບການສ້າງຮັງໄດ້ເຖິງ 2 ລະດັບເລິກ.
- A schematic ຂອງ stack ຄວາມກົດດັນຂອງ microprocessor ແມ່ນສະແດງຢູ່ໃນຮູບດັ່ງຕໍ່ໄປນີ້.

ໝາຍເຫດ:
- ຟັງຊັນຂັດຂວາງໂດຍໃຊ້ HPE ຈໍາເປັນຕ້ອງຖືກລວບລວມໂດຍໃຊ້ MRS ຫຼືລະບົບຕ່ອງໂສ້ເຄື່ອງມືທີ່ສະຫນອງຂອງມັນແລະຫນ້າທີ່ຂັດຂວາງຕ້ອງໄດ້ຮັບການປະກາດດ້ວຍ __attribute__((interrupt(“WCH-Interrupt-fast”))).
- ຟັງຊັນຂັດຂວາງໂດຍໃຊ້ stack push ແມ່ນປະກາດໂດຍ __attribute__((interrupt())).
ຕາຕະລາງ vector ຟຣີ (VTF)
- Programmable Fast Interrupt Controller (PFIC) ສະໜອງ 4 ຊ່ອງ VTF, ເຊັ່ນ: ການເຂົ້າເຖິງການເຂົ້າຟັງຊັນລົບກວນໂດຍກົງໂດຍບໍ່ຕ້ອງຜ່ານຂະບວນການຊອກຫາຕາຕະລາງ vector ທີ່ຂັດຂວາງ.
- ຊ່ອງທາງ VTF ສາມາດຖືກເປີດໃຊ້ໂດຍການຂຽນຕົວເລກຂັດຂວາງຂອງມັນ, ທີ່ຢູ່ຖານຟັງຊັນການບໍລິການຂັດຂວາງ, ແລະທີ່ຢູ່ຊົດເຊີຍເຂົ້າໄປໃນທະບຽນຕົວຄວບຄຸມ PFIC ທີ່ສອດຄ້ອງກັນໃນຂະນະທີ່ກໍານົດຫນ້າທີ່ຂັດຂວາງຕາມປົກກະຕິ.
- ຂະບວນການຕອບສະຫນອງ PFIC ສໍາລັບການຂັດຂວາງໄວແລະບໍ່ມີຕາຕະລາງແມ່ນສະແດງຢູ່ໃນຮູບ 3-2 ຂ້າງລຸ່ມນີ້.

ການປົກປ້ອງຄວາມຊົງຈໍາທາງກາຍ PMP
- ເພື່ອປັບປຸງຄວາມປອດໄພຂອງລະບົບ, ໂມດູນປ້ອງກັນຄວາມຊົງຈໍາທາງດ້ານຮ່າງກາຍ (PMP) ຖືກອອກແບບຕາມມາດຕະຖານສະຖາປັດຕະຍະກໍາ RISC-V ສໍາລັບ microprocessors ຊຸດ V3 ຂອງ barley ເຂດເນີນສູງ. ການຄຸ້ມຄອງສິດການເຂົ້າເຖິງເຖິງ 4 ພາກພື້ນທາງດ້ານຮ່າງກາຍແມ່ນສະຫນັບສະຫນູນ. ການອະນຸຍາດປະກອບມີການອ່ານ (R), ຂຽນ (W), ແລະປະຕິບັດ (X) ຄຸນລັກສະນະ, ແລະຄວາມຍາວຂອງພື້ນທີ່ປ້ອງກັນສາມາດຖືກກໍານົດເປັນ 4 bytes ຢ່າງຫນ້ອຍ. ໂມດູນ PMP ມີຜົນສະເໝີໃນໂໝດຜູ້ໃຊ້, ແຕ່ມັນສາມາດມີຜົນເປັນທາງເລືອກໂດຍການລັອກຄຸນສົມບັດ (L) ໃນໂໝດເຄື່ອງ.
- ຖ້າການເຂົ້າເຖິງລະເມີດຂອບເຂດການອະນຸຍາດໃນປະຈຸບັນ, ມັນຈະເຮັດໃຫ້ເກີດການລົບກວນທີ່ຜິດປົກກະຕິ. ໂມດູນ PMP ປະກອບມີສີ່ກຸ່ມຂອງການລົງທະບຽນການຕັ້ງຄ່າ 8-bit (ກຸ່ມຫນຶ່ງຂອງ 32-bit) ແລະສີ່ກຸ່ມຂອງທະບຽນທີ່ຢູ່, ທັງຫມົດນີ້ຕ້ອງໄດ້ຮັບການເຂົ້າເຖິງໃນຮູບແບບເຄື່ອງຈັກໂດຍຄໍາແນະນໍາ CSR.
- ໝາຍເຫດ: ຈໍານວນພື້ນທີ່ປົກປ້ອງທີ່ສະຫນັບສະຫນູນໂດຍ PMP ໃນຮູບແບບຕ່າງໆຂອງ microprocessors ອາດຈະແຕກຕ່າງກັນ, ແລະຈໍານວນທີ່ສະຫນັບສະຫນູນໂດຍ pmpcfg ແລະ pmpaddr registers ກໍ່ແຕກຕ່າງກັນ. ເບິ່ງຕາຕະລາງ 1-1 ສໍາລັບລາຍລະອຽດ.
ຊຸດລົງທະບຽນ PMP
ບັນຊີລາຍຊື່ຂອງການລົງທະບຽນ CSR ສະຫນັບສະຫນູນໂດຍໂມດູນ PMP ຂອງ microprocessor V3 ແມ່ນສະແດງຢູ່ໃນຕາຕະລາງ 4-1 ຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ 4-1 ຊຸດລົງທະບຽນໂມດູນ PMP
| ຊື່ | ທີ່ຢູ່ CSR | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| pmpcfg0 | 0x3A0 | MRW | ລົງທະບຽນການຕັ້ງຄ່າ PMP 0 | 0x00000000 |
| pmpaddr0 | 0x3B0 | MRW | ລົງທະບຽນທີ່ຢູ່ PMP 0 | 0xXXXXXXXXX |
| pmpaddr1 | 0x3B1 | MRW | ລົງທະບຽນທີ່ຢູ່ PMP 1 | 0xXXXXXXXXX |
| pmpaddr2 | 0x3B2 | MRW | ລົງທະບຽນທີ່ຢູ່ PMP 2 | 0xXXXXXXXXX |
| pmpaddr3 | 0x3B3 | MRW | ລົງທະບຽນທີ່ຢູ່ PMP 3 | 0xXXXXXXXXX |
pmp
pmpcfg ແມ່ນການລົງທະບຽນການຕັ້ງຄ່າຂອງຫນ່ວຍບໍລິການ PMP, ແລະແຕ່ລະທະບຽນປະກອບດ້ວຍສີ່ພາກສະຫນາມ 8-bit pumping, ທີ່ສອດຄ້ອງກັນກັບການຕັ້ງຄ່າຂອງສີ່ພາກພື້ນ, ແລະ pumping ເປັນຕົວແທນຂອງຄ່າການຕັ້ງຄ່າຂອງພາກພື້ນ i. ຮູບແບບຂອງມັນຖືກສະແດງຢູ່ໃນຕາຕະລາງ 4-2 ຕໍ່ໄປນີ້.
ຕາຕະລາງ 4-2 pmpcfg0 ລົງທະບຽນ
pmpcfg ຖືກນໍາໃຊ້ເພື່ອກໍານົດພື້ນທີ່ I ແລະຄໍານິຍາມ bit ຂອງມັນໄດ້ຖືກອະທິບາຍໄວ້ໃນຕາຕະລາງ 4-3 ຕໍ່ໄປນີ້.
ຕາຕະລາງ 4-3 pmp
| ບິດ | ຊື່ | ລາຍລະອຽດ |
| 7 | L | ການລັອກຖືກເປີດໃຊ້ງານ ແລະສາມາດປົດລັອກໄດ້ໃນໂໝດເຄື່ອງ. 0: ບໍ່ໄດ້ລັອກ;
1: ລັອກທະບຽນທີ່ກ່ຽວຂ້ອງ. |
| [6:5] | – | ສະຫງວນໄວ້ |
| [4:3] | A | ການຈັດຮຽງທີ່ຢູ່ ແລະການເລືອກໄລຍະພື້ນທີ່ປ້ອງກັນ. 00: ປິດ (PMP ປິດ)
01: TOR (ການປົກປ້ອງການຈັດຕໍາແຫນ່ງເທິງ) 10: NA4 (ການປ້ອງກັນສີ່ໄບຕ໌ຄົງທີ່) 11: NAPOT (2(G+2) ການປົກປ້ອງໄບຕ໌, G≥1) |
| 2 | X | ຄຸນລັກສະນະທີ່ປະຕິບັດໄດ້. |
| 0: ບໍ່ມີການອະນຸຍາດປະຕິບັດ;
1: ປະຕິບັດການອະນຸຍາດ. |
||
|
1 |
W |
ຄຸນລັກສະນະທີ່ສາມາດຂຽນໄດ້.
0: ບໍ່ມີການອະນຸຍາດຂຽນ 1: ການອະນຸຍາດຂຽນ. |
|
0 |
R |
ຄຸນລັກສະນະທີ່ສາມາດອ່ານໄດ້
0: ບໍ່ມີການອະນຸຍາດອ່ານ 1: ການອະນຸຍາດອ່ານ. |
pmpaddr
ທະບຽນ pmpaddr ຖືກນໍາໃຊ້ເພື່ອກໍານົດທີ່ຢູ່ຂອງພື້ນທີ່ I. ຄໍານິຍາມມາດຕະຖານແມ່ນຢູ່ພາຍໃຕ້ສະຖາປັດຕະຍະ RV32, ເຊິ່ງເປັນການເຂົ້າລະຫັດຂອງ 32 bits ເທິງຂອງທີ່ຢູ່ທາງດ້ານຮ່າງກາຍ 34-bit, ແລະຮູບແບບຂອງມັນຖືກສະແດງຢູ່ໃນຕາຕະລາງ 4-4 ຕໍ່ໄປນີ້.
ພື້ນທີ່ທີ່ຢູ່ທາງກາຍະພາບທັງໝົດຂອງ V3 microprocessor ແມ່ນ 4G, ດັ່ງນັ້ນສອງບິດເທິງຂອງທະບຽນນີ້ບໍ່ໄດ້ໃຊ້.
ຕາຕະລາງ 4-4 pmpaddr 
ເມື່ອ NAPOT ຖືກເລືອກ, ບິດຕ່ໍາຂອງທະບຽນທີ່ຢູ່ຍັງຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກຂະຫນາດຂອງພື້ນທີ່ປ້ອງກັນໃນປະຈຸບັນ, ດັ່ງທີ່ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້, ບ່ອນທີ່ 'y' ແມ່ນເລັກນ້ອຍຂອງທະບຽນ.
ຕາຕະລາງ 4-5 ຕາຕະລາງຄວາມສໍາພັນລະຫວ່າງການຕັ້ງຄ່າ PMP ແລະການລົງທະບຽນທີ່ຢູ່ແລະພື້ນທີ່ປ້ອງກັນ.
| pmpaddr | pmpcfg. ກ | ການຈັບຄູ່ທີ່ຢູ່ແລະຂະຫນາດພື້ນຖານ |
| yyyy…yyyy | NA4 | ດ້ວຍ 'yy…yyyy00' ເປັນທີ່ຢູ່ພື້ນຖານ, ພື້ນທີ່ 4-byte ຈະຖືກປົກປ້ອງ. |
| yyyy…yyy0 | ນາໂພທ | ດ້ວຍ 'yy…yyy000' ເປັນທີ່ຢູ່ພື້ນຖານ, ພື້ນທີ່ 8-byte ຈະຖືກປົກປ້ອງ. |
| yyyy…yy01 | ນາໂພທ | ດ້ວຍ 'yy…yy0000' ເປັນທີ່ຢູ່ພື້ນຖານ, ພື້ນທີ່ 16-byte ຈະຖືກປົກປ້ອງ. |
| yyyy…y011 | ນາໂພທ | ດ້ວຍ 'yy…y00000' ເປັນທີ່ຢູ່ພື້ນຖານ, ພື້ນທີ່ 16-byte ຈະຖືກປົກປ້ອງ. |
| … | … | … |
| yyy01…111 | ນາໂພທ | ດ້ວຍ 'y0…000000' ເປັນທີ່ຢູ່ພື້ນຖານ, ພື້ນທີ່ 231-byte ຖືກປົກປ້ອງ. |
| yy011…111 | ນາໂພທ | ປົກປ້ອງພື້ນທີ່ທັງຫມົດ 232-byte. |
ກົນໄກການປົກປ້ອງ
X/W/R ໃນ pmpcfg ຖືກນໍາໃຊ້ເພື່ອກໍານົດອໍານາດການປົກປ້ອງຂອງພື້ນທີ່ I, ແລະການລະເມີດສິດອໍານາດທີ່ກ່ຽວຂ້ອງຈະເຮັດໃຫ້ມີຂໍ້ຍົກເວັ້ນທີ່ສອດຄ້ອງກັນ:
- ເມື່ອພະຍາຍາມດຶງເອົາຄໍາແນະນໍາໃນພື້ນທີ່ PMP ໂດຍບໍ່ມີເຈົ້າຫນ້າທີ່ປະຕິບັດ, ມັນຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດໃນການດຶງຂໍ້ມູນຄໍາແນະນໍາ (mcause = 1).
- ເມື່ອພະຍາຍາມຂຽນຂໍ້ມູນຢູ່ໃນພື້ນທີ່ PMP ໂດຍບໍ່ມີການອະນຸຍາດເປັນລາຍລັກອັກສອນ, ມັນຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດ (mcause = 7) ໃນການເຂົ້າເຖິງຄໍາແນະນໍາໃນຮ້ານ.
- ເມື່ອພະຍາຍາມອ່ານຂໍ້ມູນໃນພື້ນທີ່ PMP ໂດຍບໍ່ມີການອະນຸຍາດອ່ານ, ມັນຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດໃນການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາທີ່ຜິດປົກກະຕິ (mcause = 5) ສໍາລັບຄໍາແນະນໍາການໂຫຼດ.
A ໃນ pmpcfg ຖືກນໍາໃຊ້ເພື່ອກໍານົດໄລຍະການປົກປັກຮັກສາແລະການຈັດຕໍາແຫນ່ງທີ່ຢູ່ຂອງພາກພື້ນ I, ແລະເພື່ອປົກປັກຮັກສາຄວາມຊົງຈໍາຂອງ A_ADDR ≤ ພາກພື້ນ < i > < B_ADDR (ທັງ A_ADDR ແລະ B_ADDR ແມ່ນຈໍາເປັນຕ້ອງໄດ້ຮັບການຈັດຮຽງໃນ 4 bytes:
- ຖ້າ B _ ADDR–A_ADDR = = 22, ໂໝດ NA4 ຖືກຮັບຮອງເອົາ;
- ຖ້າ B _ ADDR–A_ADDR = = 2(G+2), G≥1, ແລະທີ່ຢູ່ _ ເປັນ 2(g+2), ວິທີການ NAPOT ໄດ້ຖືກຮັບຮອງເອົາ;
- ຖ້າບໍ່ດັ່ງນັ້ນ, ຮູບແບບ TOP ຖືກຮັບຮອງເອົາ.
ຕາຕະລາງ 4-6 ວິທີການຈັບຄູ່ທີ່ຢູ່ PMP
| ຄ່າ | ຊື່ | ລາຍລະອຽດ |
| 0b00 | ປິດ | ບໍ່ມີພື້ນທີ່ເພື່ອປົກປ້ອງ |
| 0b01 | TOR | ການປົກປ້ອງພື້ນທີ່ຈັດຮຽງດ້ານເທິງ.
ພາຍໃຕ້ pmp pmpaddri = B_ADDR >> 2. ຫມາຍເຫດ: ຖ້າພື້ນທີ່ 0 ຂອງ PMP ຖືກຕັ້ງຄ່າເປັນໂຫມດ TOR (i=0), ຂອບເຂດຕ່ໍາຂອງພື້ນທີ່ປ້ອງກັນແມ່ນ 0 ທີ່ຢູ່, ie 0 ≤ addr < pmpaddr0, ທັງຫມົດພາຍໃນຂອບເຂດທີ່ກົງກັນ. |
| 0b10 | NA4 | ແກ້ໄຂການປ້ອງກັນພື້ນທີ່ 4-byte.
pmp |
| 0b11 | ນາໂພທ | ປົກປ້ອງພາກພື້ນ 2(G+2) ດ້ວຍ G ≥ 1, ເມື່ອ A_ADDR ແມ່ນ 2(G+2) ຈັດຮຽງ. pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< >1. |
- L bit ໃນ pmp
- QingKe V3 series microprocessors ສະຫນັບສະຫນູນການປົກປ້ອງຫຼາຍເຂດ. ເມື່ອການດຳເນີນການດຽວກັນກົງກັບຫຼາຍເຂດໃນເວລາດຽວກັນ, ເຂດທີ່ມີຕົວເລກນ້ອຍກວ່າຈະຖືກຈັບຄູ່ກ່ອນ.
ໂມງຈັບເວລາລະບົບ (SysTick)
- QingKe V3 series microprocessor ຖືກອອກແບບມາດ້ວຍຕົວນັບ 32-bit ຫຼື 64-bit (SysTick) ພາຍໃນ. ແຫຼ່ງໂມງຂອງມັນແມ່ນໂມງລະບົບຫຼືການແບ່ງ 8 ຄວາມຖີ່ຂອງມັນ, ແລະ V3A ຮອງຮັບການແບ່ງ 8 ຄວາມຖີ່ເທົ່ານັ້ນ.
- ມັນສາມາດສະຫນອງຖານທີ່ໃຊ້ເວລາ, ກໍານົດເວລາ, ແລະການວັດແທກລະບົບປະຕິບັດການທີ່ໃຊ້ເວລາທີ່ແທ້ຈິງ. ປະເພດຕ່າງໆຂອງທະບຽນທີ່ກ່ຽວຂ້ອງກັບເຄື່ອງຈັບເວລາມີທີ່ຢູ່ແຜນທີ່ທີ່ແຕກຕ່າງກັນ, ດັ່ງທີ່ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້ 5-1 ແລະ 5-2.
ຕາຕະລາງ 5-1 ບັນຊີລາຍຊື່ລົງທະບຽນ V3A SysTick
| ຊື່ | ເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| STK_CTLR | 0xE000F000 | ລົງທະບຽນການຄວບຄຸມລະບົບ counter | 0x00000000 |
| STK_CNTL | 0xE000F004 | ລະບົບ counter ຕ່ໍາລົງທະບຽນ | 0xXXXXXXXXX |
| STK_CNTH | 0xE000F008 | ລະບົບ counter ການລົງທະບຽນສູງ
ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ. |
0xXXXXXXXXX |
| STK_CMPLR | 0xE000F00C | ຄ່າການປຽບທຽບຈຳນວນລະບົບການລົງທະບຽນຕໍ່າ | 0xXXXXXXXXX |
| STK_CMPHR | 0xE000F010 | ການປຽບທຽບລະບົບການນັບມູນຄ່າການລົງທະບຽນສູງ
ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ. |
0xXXXXXXXXX |
ຕາຕະລາງ 5-2 V3 SysTick ບັນຊີລາຍຊື່ລົງທະບຽນຂອງຕົວແບບອື່ນໆ
| ຊື່ | ເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| STK_CTLR | 0xE000F000 | ລົງທະບຽນການຄວບຄຸມລະບົບ counter | 0x00000000 |
| STK_SR | 0xE000F004 | ລົງທະບຽນສະຖານະການຕ້ານລະບົບ | 0x00000000 |
| STK_CNTL | 0xE000F008 | ການລົງທະບຽນຕ່ໍາຂອງລະບົບ counter | 0xXXXXXXXXX |
| STK_CMPLR | 0xE000F010 | ນັບມູນຄ່າການປຽບທຽບຕ່ໍາລົງທະບຽນ | 0xXXXXXXXXX |
ແຕ່ລະທະບຽນແມ່ນໄດ້ອະທິບາຍລາຍລະອຽດດັ່ງນີ້.
ທະບຽນການຄວບຄຸມລະບົບ counter (STK_CTLR)
ຕາຕະລາງ 5-3 ລົງທະບຽນການຄວບຄຸມ SysTick
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:5] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
|
4 |
ໂໝດ |
RW |
ຮູບແບບການນັບ: 1: ນັບລົງ;
0: ນັບເຖິງ. ໝາຍເຫດ: ບໍ່ຖືກຕ້ອງສຳລັບ V3A. |
0 |
|
3 |
STRE |
RW |
ການໂຫຼດໃໝ່ອັດຕະໂນມັດເປີດ bit:
1: ນັບຈາກ 0 ອີກເທື່ອໜຶ່ງ ຫຼັງຈາກນັບເຖິງຄ່າສົມທຽບ, ແລະ ນັບຈາກຄ່າປຽບທຽບອີກຄັ້ງ ຫຼັງຈາກນັບລົງເປັນ 0; 0: ສືບຕໍ່ນັບຂຶ້ນ/ລົງ. ໝາຍເຫດ: ບໍ່ຖືກຕ້ອງສຳລັບ V3A. |
0 |
|
2 |
STCLK |
RW |
ບິດການເລືອກແຫຼ່ງນັບນັບ:
1: HCLK ເປັນພື້ນຖານເວລາ; 0: HCLK/8 ເປັນຖານເວລາ. ຫມາຍເຫດ: ມັນບໍ່ຖືກຕ້ອງສໍາລັບ V3A, ເຊິ່ງພຽງແຕ່ສະຫນັບສະຫນູນ HCLK/8 ເປັນຖານເວລາ. |
0 |
| 1 | ເວັບໄຊ | RW | ຕ້ານການຂັດຂວາງການເປີດໃຊ້ບິດຄວບຄຸມ: | 0 |
| 1: ເປີດໃຊ້ counter interrupt; 0: ປິດການຂັດຂວາງການຕ້ານການຂັດຂວາງ.
ໝາຍເຫດ: ບໍ່ຖືກຕ້ອງສຳລັບ V3A. |
||||
| 0 | STE | RW | ຕົວຕ້ານການລະບົບເຮັດໃຫ້ສາມາດຄວບຄຸມໄດ້. 1: ເປີດໃຊ້ລະບົບ counter STK;
0: ປິດການໃຊ້ງານລະບົບເຄົາເຕີ STK ແລະເຄົາເຕີຢຸດນັບ. |
0 |
ລົງທະບຽນສະຖານະການຕ້ານລະບົບ (STK_SR)
ທະບຽນນີ້ບໍ່ນຳໃຊ້ກັບ V3A.
ຕາຕະລາງ 5-4 SysTick counter low register
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
|
31 |
SWIE |
RW |
Software interrupt trigger enable (SWI): 1: ກະຕຸ້ນຊອບແວຂັດຂວາງ;
0: ປິດຕົວກະຕຸ້ນ. ໝາຍເຫດ: ບິດນີ້ຈະຕ້ອງຖືກລຶບລ້າງຫຼັງຈາກເຂົ້າໄປຂັດຈັງຫວະຂອງຊອບແວ, ຖ້າບໍ່ດັ່ງນັ້ນມັນຈະກະຕຸ້ນສະເໝີ. |
0 |
| [30:1] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
|
0 |
CNTIF |
RW |
ນັບທຸງປຽບທຽບ, ຂຽນ 0 ຢ່າງຊັດເຈນ, ຂຽນ 1 ບໍ່ຖືກຕ້ອງ:
1: ນັບເຖິງຄ່າປຽບທຽບ ແລະ ນັບລົງເປັນ 0; 0: ຄ່າການປຽບທຽບບໍ່ຮອດ. |
0 |
ການລົງທະບຽນຕົວນັບຕ່ໍາລະບົບ (STK_CNTL)
ຕາຕະລາງ 5-5 SysTick counter low register
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:0] | CNTL | RW | ຄ່ານັບນັບປະຈຸບັນແມ່ນຕ່ຳກວ່າ 32 ບິດ. ສໍາລັບ V3A, ທະບຽນນີ້ສາມາດອ່ານໄດ້ເປັນ 8-bit / 16-bit
/32-bit, ແຕ່ສາມາດຂຽນເປັນ 8-bit, ແລະອື່ນໆ ແບບບໍ່ຈໍາກັດ. |
0xXXXXXXXXX |
ໝາຍເຫດ: ລົງທະບຽນ STK_CNTL ແລະລົງທະບຽນ STK_CNTH ໃນ V3A ຮ່ວມກັນປະກອບເປັນຕົວນັບລະບົບ 64-bit.
ລະບົບ counter high register (STK_CNTH)
ຕາຕະລາງ 5-6 SysTick counter high register
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:0] | CNTH | RW | ຄ່ານັບນັບປະຈຸບັນແມ່ນສູງກວ່າ 32 bits. ທະບຽນນີ້ສາມາດອ່ານໄດ້ໂດຍ 8-bit/16-bit/32-bit, ແຕ່ສາມາດຂຽນໄດ້ພຽງແຕ່ 8-bit.
ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ. |
0xXXXXXXXXX |
ໝາຍເຫດ: ລົງທະບຽນ STK_CNTL ແລະລົງທະບຽນ STK_CNTH ໃນ V3A ຮ່ວມກັນປະກອບເປັນຕົວນັບລະບົບ 64-bit.
ຄ່າການປຽບທຽບການນັບລະບົບຕ່ຳ (STK_CMPLR)
ຕາຕະລາງ 5-7 ມູນຄ່າການປຽບທຽບ SysTick ລົງທະບຽນຕໍ່າ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:0] | CMPL | RW | ກໍານົດຄ່າການປຽບທຽບ counter ເປັນ 32 bits ຕ່ໍາກວ່າ. ເມື່ອຄ່າ CMP ແລະຄ່າ CNT ເທົ່າກັບ, STK interrupt ຈະຖືກກະຕຸ້ນ. ສໍາລັບ V3A, ລົງທະບຽນນີ້ສາມາດອ່ານໄດ້ເປັນ 8-bit / 16-bit / 32-bit, ແຕ່ພຽງແຕ່ສາມາດເປັນ.
ຂຽນເປັນ 8-bit, ແລະຮູບແບບອື່ນໆແມ່ນບໍ່ຈໍາກັດ. |
0xXXXXXXXXX |
ໝາຍເຫດ: ການລົງທະບຽນ STK_CMPLR ແລະທະບຽນ STK_CMPHR ໃນ V3A ຮ່ວມກັນປະກອບເປັນມູນຄ່າການປຽບທຽບ 64-bit.
ຄ່າການປຽບທຽບການນັບລະບົບສູງ (STK_CMPHR)
ຕາຕະລາງ 5-8 ມູນຄ່າການປຽບທຽບ SysTick ລົງທະບຽນສູງ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ປັບຄ່າ |
| [31:0] | CMPH | RW | ຕັ້ງຄ່າການປຽບທຽບ counter 32 bits ສູງກວ່າ. ການຂັດຂວາງ STK ຈະຖືກກະຕຸ້ນເມື່ອຄ່າ CMP ແລະຄ່າ CNT ເທົ່າທຽມກັນ.
ທະບຽນນີ້ສາມາດອ່ານໄດ້ໂດຍ 8-bit/16-bit/32-bit, ແຕ່ສາມາດຂຽນໄດ້ພຽງແຕ່ 8-bit. ໝາຍເຫດ: ສາມາດໃຊ້ໄດ້ກັບ V3A ເທົ່ານັ້ນ. |
0xXXXXXXXXX |
ໝາຍເຫດ: ການລົງທະບຽນ STK_CMPLR ແລະທະບຽນ STK_CMPHR ໃນ V3A ຮ່ວມກັນປະກອບເປັນມູນຄ່າການປຽບທຽບ 64-bit.
ການຕັ້ງຄ່າພະລັງງານຕໍ່າຂອງໂປເຊດເຊີ
- QingKe V3 series microprocessors ຮອງຮັບການນອນຫຼັບຜ່ານຄໍາແນະນໍາ WFI (Wait for Interrupt) ເພື່ອບັນລຸການໃຊ້ພະລັງງານຄົງທີ່ຕໍ່າ.
- ພ້ອມກັບການລົງທະບຽນການຄວບຄຸມລະບົບຂອງ PFIC (PFIC_SCTLR), ຮູບແບບການນອນ ແລະຄໍາແນະນໍາ WFE ຕ່າງໆສາມາດຖືກປະຕິບັດໄດ້.
ເຂົ້ານອນ
- QingKe V3 series microprocessors ສາມາດນອນໄດ້ສອງວິທີ, Wait for Interrupt (WFI) ແລະ Wait for Event (WFE). ວິທີການ WFI ຫມາຍຄວາມວ່າ microprocessor ໄປນອນ, ລໍຖ້າການລົບກວນທີ່ຈະຕື່ນຂຶ້ນ, ແລະຫຼັງຈາກນັ້ນຕື່ນນອນກັບການຂັດຂວາງທີ່ສອດຄ້ອງກັນເພື່ອປະຕິບັດ. ວິທີການ WFE ຫມາຍຄວາມວ່າ microprocessor ໄປນອນ, ລໍຖ້າເຫດການທີ່ຈະຕື່ນຂຶ້ນ, ແລະຕື່ນຂຶ້ນມາເພື່ອສືບຕໍ່ປະຕິບັດການໄຫຼຂອງໂປຼແກຼມທີ່ຢຸດກ່ອນຫນ້ານີ້.
- RISC-V ມາດຕະຖານສະຫນັບສະຫນູນຄໍາແນະນໍາ WFI, ແລະຄໍາສັ່ງ WFI ສາມາດຖືກປະຕິບັດໂດຍກົງເພື່ອເຂົ້ານອນໂດຍວິທີການ WFI. ສໍາລັບວິທີການ WFE, ບິດ WFITOWFE ໃນລະບົບການລົງທະບຽນ PFIC_SCTLR ຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມຄໍາສັ່ງ WFI ຕໍ່ມາເປັນການປະມວນຜົນ WFE ເພື່ອບັນລຸວິທີການ WFE ເຂົ້າໄປໃນການນອນ.
- ຄວາມເລິກຂອງການນອນແມ່ນຄວບຄຸມໂດຍ SLEEPDEEP bit ໃນ PFIC_SCTLR.
- ຖ້າ SLEEPDEEP ໃນທະບຽນ PFIC_SCTLR ຖືກລຶບລ້າງໃຫ້ເປັນສູນ, ໄມໂຄຣໂປຣເຊສເຊີຈະເຂົ້າສູ່ໂໝດການນອນ ແລະໂມງໜ່ວຍພາຍໃນແມ່ນອະນຸຍາດໃຫ້ປິດໄດ້ ຍົກເວັ້ນສຳລັບ SysTick ແລະສ່ວນໜຶ່ງຂອງເຫດຜົນການປຸກ.
- ຖ້າ SLEEPDEEP ໃນທະບຽນ PFIC_SCTLR ຖືກຕັ້ງ, ໄມໂຄຣໂປຣເຊສເຊີຈະເຂົ້າສູ່ໂໝດການນອນເລິກ ແລະໂມງເຊວທັງໝົດຖືກອະນຸຍາດໃຫ້ປິດໄດ້.
- ເມື່ອໄມໂຄຣໂປຣເຊສເຊີຢູ່ໃນໂໝດດີບັກ, ມັນບໍ່ສາມາດເຂົ້າໂໝດນອນຫຼັບໄດ້.
ຕື່ນນອນ
ໄມໂຄຣໂປຣເຊສເຊີຊຸດ QingKe V3 ສາມາດປຸກໄດ້ຫຼັງຈາກນອນຫຼັບເນື່ອງຈາກ WFI ແລະ WFE ໃນວິທີຕໍ່ໄປນີ້.
ຫຼັງຈາກວິທີການ WFI ໄປນອນ, ມັນສາມາດໄດ້ຮັບການປຸກໂດຍ
- ໄມໂຄຣໂປຣເຊສເຊີສາມາດຖືກປຸກໄດ້ໂດຍແຫຼ່ງລົບກວນທີ່ຕອບສະໜອງໂດຍຕົວຄວບຄຸມລົບກວນ. ຫຼັງຈາກຕື່ນນອນ, ໄມໂຄຣໂປຣເຊສເຊີຈະປະຕິບັດໜ້າທີ່ຂັດຂວາງກ່ອນ.
- ເຂົ້າສູ່ໂໝດການນອນ, ການຮ້ອງຂໍແກ້ບັນຫາສາມາດເຮັດໃຫ້ໄມໂຄຣໂປຣເຊສເຊີປຸກ ແລະເຂົ້າສູ່ການນອນຫຼັບໄດ້, ການຮ້ອງຂໍແກ້ບັນຫາບໍ່ສາມາດປຸກ microprocessor ໄດ້.
ຫຼັງຈາກວິທີການ WFE ໄປນອນ, microprocessor ສາມາດຖືກປຸກໂດຍດັ່ງຕໍ່ໄປນີ້.
- ເຫດການພາຍໃນຫຼືພາຍນອກ, ເມື່ອບໍ່ຈໍາເປັນຕ້ອງກໍານົດຕົວຄວບຄຸມການຂັດຂວາງ, ຕື່ນຂຶ້ນແລະສືບຕໍ່ດໍາເນີນໂຄງການ.
- ຖ້າແຫຼ່ງລົບກວນຖືກເປີດໃຊ້, ໄມໂຄຣໂປຣເຊສເຊີຖືກປຸກເມື່ອມີການລົບກວນຖືກສ້າງຂື້ນ, ແລະຫຼັງຈາກຕື່ນຂຶ້ນມາ, ໄມໂຄຣໂປຣເຊສເຊີຈະປະຕິບັດໜ້າທີ່ລົບກວນກ່ອນ.
- ຖ້າບິດ SEVONPEND ໃນ PFIC_SCTLR ຖືກຕັ້ງຄ່າ, ຕົວຄວບຄຸມການຂັດຈັງຫວະບໍ່ໄດ້ເປີດໃຊ້ການລົບກວນ, ແຕ່ເມື່ອສັນຍານລໍຖ້າການລົບກວນໃໝ່ຖືກສ້າງຂື້ນ (ສັນຍານທີ່ຄ້າງຢູ່ທີ່ສ້າງຂຶ້ນກ່ອນໜ້ານີ້ບໍ່ມີຜົນ), ມັນຍັງສາມາດເຮັດໃຫ້ໄມໂຄຣໂປຣເຊສເຊີຕື່ນຂຶ້ນໄດ້, ແລະທຸງທີ່ຄ້າງຢູ່ລະຫວ່າງການລົບກວນທີ່ສອດຄ້ອງກັນຈະຕ້ອງຖືກລຶບລ້າງດ້ວຍຕົນເອງຫຼັງຈາກຕື່ນນອນ.
- ການຮ້ອງຂໍການດີບັ໊ກໃນໂໝດການນອນສາມາດເຮັດໃຫ້ໄມໂຄຣໂປຣເຊສເຊີປຸກ ແລະເຂົ້າສູ່ການນອນຫຼັບໄດ້, ການຮ້ອງຂໍການດີບັກບໍ່ສາມາດປຸກໄມໂຄຣໂປຣເຊສເຊີໄດ້.
- ນອກຈາກນັ້ນ, ສະຖານະຂອງ microprocessor ຫຼັງຈາກຕື່ນນອນສາມາດຄວບຄຸມໄດ້ໂດຍການຕັ້ງຄ່າ SLEEPONEXIT bit ໃນ PFIC_SCTLR.
- SLEEPONEXIT ຖືກຕັ້ງໄວ້ ແລະລະດັບສຸດທ້າຍຂອງຄໍາສັ່ງກັບຄືນຂັດຂວາງ (mret) ຈະກະຕຸ້ນການນອນຂອງ WFI mode.
SLEEPONEXIT ຖືກລຶບລ້າງໂດຍບໍ່ມີຜົນກະທົບ.
ຜະລິດຕະພັນ MCU ຕ່າງໆທີ່ມີອຸປະກອນ microprocessors ຊຸດ V3 ສາມາດຮັບຮອງເອົາຮູບແບບການນອນທີ່ແຕກຕ່າງກັນ, ປິດອຸປະກອນຂ້າງຄຽງແລະໂມງທີ່ແຕກຕ່າງກັນ, ປະຕິບັດນະໂຍບາຍການຄຸ້ມຄອງພະລັງງານທີ່ແຕກຕ່າງກັນແລະວິທີການປຸກຕາມການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນຂອງ PFIC_SCTLR, ແລະຮັບຮູ້ໂຫມດພະລັງງານຕ່ໍາຕ່າງໆ.
ສະຫນັບສະຫນູນດີບັກ
- QingKe V3 series microprocessors ປະກອບມີໂມດູນດີບັກຮາດແວທີ່ສະຫນັບສະຫນູນການດໍາເນີນການແກ້ໄຂທີ່ສັບສົນ. ເມື່ອ microprocessor ຖືກໂຈະ, ໂມດູນ debug ສາມາດເຂົ້າເຖິງ GPRs ຂອງ microprocessor, CSRs, Memory, ອຸປະກອນພາຍນອກ, ແລະອື່ນໆໂດຍຜ່ານຄໍາສັ່ງ abstract, program buffer deployment, etc. module debug can suspend and resume the microprocessor.
- ໂມດູນດີບັກປະຕິບັດຕາມຂໍ້ສະເພາະຂອງ RISC-V External Debug Support Version0.13.2, ເອກະສານລາຍລະອຽດສາມາດດາວໂຫຼດໄດ້ຈາກ RISC-V International webເວັບໄຊ.
ໂມດູນດີບັກ
- ໂມດູນດີບັກພາຍໃນ microprocessor, ສາມາດປະຕິບັດການດີບັ໊ກທີ່ອອກໂດຍແມ່ຂ່າຍດີບັກ, ລວມມີ.
- ການເຂົ້າເຖິງການລົງທະບຽນໂດຍຜ່ານການໂຕ້ຕອບການດີບັກ
- ຣີເຊັດ, ໂຈະ, ແລະສືບຕໍ່ microprocessor ຜ່ານຕົວໂຕ້ຕອບດີບັກ
- ອ່ານແລະຂຽນຫນ່ວຍຄວາມຈໍາ, ລົງທະບຽນຄໍາແນະນໍາ, ແລະອຸປະກອນພາຍນອກໂດຍຜ່ານການໂຕ້ຕອບດີບັກ
- ນຳໃຊ້ຫຼາຍຄຳແນະນຳທີ່ມັກຜ່ານຕົວໂຕ້ຕອບດີບັກ
- ກໍານົດຈຸດແບ່ງຊອບແວໂດຍຜ່ານການໂຕ້ຕອບດີບັກ
- ຕັ້ງຄ່າຈຸດແບ່ງຮາດແວຜ່ານການໂຕ້ຕອບດີບັກ
- ສະຫນັບສະຫນູນຄໍາສັ່ງ abstract ການປະຕິບັດອັດຕະໂນມັດ
- ສະຫນັບສະຫນູນການດີບັກຂັ້ນຕອນດຽວ
- ໝາຍເຫດ: V3A ບໍ່ຮອງຮັບຈຸດແບ່ງຮາດແວ, ຈຸດແບ່ງຮາດແວ V3B ຮອງຮັບການຈັບຄູ່ທີ່ຢູ່ຄໍາແນະນໍາ, ແລະຈຸດແບ່ງຮາດແວ V3C ຮອງຮັບການຈັບຄູ່ທີ່ຢູ່ຄໍາແນະນໍາ ແລະທີ່ຢູ່ຂໍ້ມູນ.
- ການລົງທະບຽນພາຍໃນຂອງໂມດູນການດີບັກໃຊ້ລະຫັດທີ່ຢູ່ 7-ບິດ, ແລະການລົງທະບຽນຕໍ່ໄປນີ້ຖືກປະຕິບັດຢູ່ໃນຕົວປະມວນຜົນ microprocessors ຊຸດ QingKe V3.
ຕາຕະລາງ 7-1 Debug module register list
| ຊື່ | ເຂົ້າເຖິງ | ລາຍລະອຽດ |
| ຂໍ້ມູນ0 | 0x04 | ລົງທະບຽນຂໍ້ມູນ 0, ສາມາດໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ |
| ຂໍ້ມູນ1 | 0x05 | ລົງທະບຽນຂໍ້ມູນ 1, ສາມາດໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ |
| ຄວບຄຸມ | 0x10 | ລົງທະບຽນການຄວບຄຸມໂມດູນດີບັກ |
| dmstatus | 0x11 | ການລົງທະບຽນສະຖານະໂມດູນດີບັກ |
| ຂໍ້ມູນ | 0x12 | ລົງທະບຽນສະຖານະໄມໂຄຣໂປຣເຊສເຊີ |
| ບົດຄັດຫຍໍ້ | 0x16 | ລົງທະບຽນສະຖານະການຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ |
| ຄໍາສັ່ງ | 0x17 | ລົງທະບຽນຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ |
| ອັດຕະໂນມັດ abstract | 0x18 | ຄໍາສັ່ງ Abstract ການປະຕິບັດອັດຕະໂນມັດ |
| progbuf0-7 | 0x20-0x27 | cache ການສອນລົງທະບຽນ 0-7 |
| haltsum0 | 0x40 | ຢຸດການລົງທະບຽນສະຖານະ |
- ໂຮສດີບັກສາມາດຄວບຄຸມການລະງັບ microprocessor, ສືບຕໍ່, ຣີເຊັດ, ແລະອື່ນໆ. ໂດຍການຕັ້ງຄ່າຕົວຄວບຄຸມການລົງທະບຽນ. ມາດຕະຖານ RISC-V ກໍານົດສາມປະເພດຂອງຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ: ລົງທະບຽນການເຂົ້າເຖິງ, ການເຂົ້າເຖິງໄວ, ແລະຫນ່ວຍຄວາມຈໍາເຂົ້າເຖິງ.
- ໄມໂຄຣໂປຣເຊສເຊີ QingKe V3A ຮອງຮັບການເຂົ້າເຖິງການລົງທະບຽນເທົ່ານັ້ນ, ຮູບແບບອື່ນໆຮອງຮັບການລົງທະບຽນ ແລະການເຂົ້າເຖິງໜ່ວຍຄວາມຈຳ, ແຕ່ບໍ່ແມ່ນການເຂົ້າເຖິງໄວ. ການເຂົ້າເຖິງການລົງທະບຽນ (GPRs, CSRs) ແລະການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາຢ່າງຕໍ່ເນື່ອງສາມາດຖືກຮັບຮູ້ໂດຍຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ.
- ໂມດູນດີບັກປະຕິບັດ 8 ຄໍາສັ່ງ cache ລົງທະບຽນ progbuf0-7, ແລະແມ່ຂ່າຍດີບັກສາມາດ cache ຄໍາແນະນໍາຫຼາຍ (ຊຶ່ງສາມາດບີບອັດຄໍາແນະນໍາ) ກັບ buffer ແລະສາມາດເລືອກທີ່ຈະສືບຕໍ່ປະຕິບັດຄໍາແນະນໍາໃນ cache ຄໍາແນະນໍາຫຼັງຈາກປະຕິບັດຄໍາສັ່ງ abstract ຫຼືປະຕິບັດຄໍາສັ່ງ cache ໂດຍກົງ.
- ໝາຍເຫດ ວ່າຄໍາແນະນໍາສຸດທ້າຍໃນໂຄງການຕ້ອງເປັນຄໍາແນະນໍາ "ebreak" ຫຼື "c.ebreak". ການເຂົ້າເຖິງການເກັບຮັກສາ, ອຸປະກອນຕໍ່ພ່ວງ, ແລະອື່ນໆແມ່ນເປັນໄປໄດ້ໂດຍຜ່ານຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນແລະຄໍາແນະນໍາທີ່ເກັບໄວ້ໃນໂຄງການ.
- ແຕ່ລະທະບຽນແມ່ນໄດ້ອະທິບາຍລາຍລະອຽດດັ່ງນີ້.
- ບັນທຶກຂໍ້ມູນ 0 (data0)
ຕາຕະລາງ 7-2 ນິຍາມການລົງທະບຽນຂໍ້ມູນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | ຂໍ້ມູນ0 | RW | ລົງທະບຽນຂໍ້ມູນ 0, ໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ | 0 |
ບັນທຶກຂໍ້ມູນ 1 (data1)
ຕາຕະລາງ 7-3 data1 ຄໍານິຍາມລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | ຂໍ້ມູນ1 | RW | ລົງທະບຽນຂໍ້ມູນ 1, ໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ | 0 |
ລົງທະບຽນຄວບຄຸມໂມດູນດີບັກ (ຕົວຄວບຄຸມ)
ການລົງທະບຽນນີ້ຄວບຄຸມການຢຸດຊົ່ວຄາວ, ຣີເຊັດ ແລະສືບຕໍ່ຂອງ microprocessor. ໂຮສດີບັກຂຽນຂໍ້ມູນໃສ່ຊ່ອງຂໍ້ມູນທີ່ສອດຄ້ອງກັນເພື່ອບັນລຸການຢຸດຊົ່ວຄາວ (haltreq), ຣີເຊັດ (ndmreset), ສືບຕໍ່ ( resumereq). ທ່ານອະທິບາຍດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-4 ຄໍານິຍາມຂອງການຄວບຄຸມການລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| 31 | haltreq | WO | 0: ລຶບຄຳຮ້ອງຂໍຢຸດຊົ່ວຄາວ
1: ສົ່ງຄໍາຮ້ອງຂໍຢຸດຊົ່ວຄາວ |
0 |
| 30 | resumerq | W1 | 0: ບໍ່ຖືກຕ້ອງ
1: ຟື້ນຟູ microprocessor ປັດຈຸບັນ ຫມາຍເຫດ: ຂຽນ 1 ແມ່ນຖືກຕ້ອງແລະຮາດແວຖືກລຶບລ້າງຫຼັງຈາກ microprocessor ຖືກຟື້ນຕົວ |
0 |
| 29 | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 28 | ຕັ້ງຄືນໃໝ່ | W1 | 0: ບໍ່ຖືກຕ້ອງ
1: ລ້າງສະຖານະການເກັບກ່ຽວຂອງ microprocessor |
0 |
| [27:2] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 1 | ndmreset | RW | 0: ລຶບຣີເຊັດ
1: ຣີເຊັດລະບົບທັງໝົດນອກຈາກໂມດູນດີບັກ |
0 |
| 0 | ປິດໃຊ້ງານ | RW | 0: ຣີເຊັດໂມດູນດີບັກ
1: ໂມດູນ Debug ເຮັດວຽກຢ່າງຖືກຕ້ອງ |
0 |
ການລົງທະບຽນສະຖານະໂມດູນດີບັກ (ສະຖານະ dm)
- ການລົງທະບຽນນີ້ແມ່ນໃຊ້ເພື່ອຊີ້ບອກສະຖານະຂອງໂມດູນດີບັກ ແລະເປັນການລົງທະບຽນແບບອ່ານຢ່າງດຽວກັບລາຍລະອຽດຕໍ່ໄປນີ້ຂອງແຕ່ລະບິດ.
ຕາຕະລາງ 7-5 ຄໍານິຍາມການລົງທະບຽນ dmstatus
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:20] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 19 | ຕັ້ງຄ່າທັງໝົດ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ຣີເຊັດໄມໂຄຣໂປຣເຊສເຊີ |
0 |
| 18 | ຕັ້ງອັນໃດກໍໄດ້ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ຣີເຊັດໄມໂຄຣໂປຣເຊສເຊີ |
0 |
| 17 | ປະຫວັດຫຍໍ້ທັງໝົດ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ຣີເຊັດໄມໂຄຣໂປຣເຊສເຊີ |
0 |
| 16 | ຊີວະປະຫວັດຫຍໍ້ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ຣີເຊັດໄມໂຄຣໂປຣເຊສເຊີ |
0 |
| [15:14] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 13 | ລ່ອງລອຍ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: microprocessor ບໍ່ສາມາດໃຊ້ໄດ້ |
0 |
| 12 | ປະໂຫຍດໃດໆ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: microprocessor ບໍ່ສາມາດໃຊ້ໄດ້ |
0 |
| 11 | ແລ່ນທັງຫມົດ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ໄມໂຄຣໂປຣເຊສເຊີກຳລັງແລ່ນ |
0 |
| 10 | ແລ່ນໃດໆ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: ໄມໂຄຣໂປຣເຊສເຊີກຳລັງແລ່ນ |
0 |
| 9 | ຢຸດ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: microprocessor ຢູ່ໃນ suspension |
0 |
| 8 | ຢຸດໃດໆ | RO | 0: ບໍ່ຖືກຕ້ອງ
1: Microprocessor ອອກຈາກ suspension |
0 |
| 7 | ຮັບຮອງ |
RO |
0: ຕ້ອງມີການກວດສອບຄວາມຖືກຕ້ອງກ່ອນທີ່ຈະໃຊ້ໂມດູນດີບັກ
1: ໂມດູນ debugging ໄດ້ຮັບການຢັ້ງຢືນ |
0x1 |
| [6:4] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| [3:0] | ສະບັບ | RO | Debugging ລະບົບສະຫນັບສະຫນູນສະຖາປັດຕະຍະ 0010: V0.13 | 0x2 |
ລົງທະບຽນສະຖານະໄມໂຄຣໂປຣເຊສເຊີ (hartinfo)
ລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອສະຫນອງຂໍ້ມູນກ່ຽວກັບ microprocessor ກັບ host debug ແລະເປັນການລົງທະບຽນອ່ານໄດ້ຢ່າງດຽວກັບແຕ່ລະ bit ອະທິບາຍດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-6 hartinfo register ຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:24] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| [23:20] | ຮອຍຂີດຂ່ວນ | RO | ຈໍານວນການລົງທະບຽນ scratch ສະຫນັບສະຫນູນ | 0x3 |
| [19:17] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 16 | ການເຂົ້າເຖິງຂໍ້ມູນ | RO | 0: ການລົງທະບຽນຂໍ້ມູນຖືກສ້າງແຜນທີ່ໄປຫາທີ່ຢູ່ CSR
1: ບັນທຶກຂໍ້ມູນຖືກແຜນທີ່ກັບທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາ |
0x1 |
| [15:12] | ຂະຫນາດຂໍ້ມູນ | RO | ຈໍານວນການລົງທະບຽນຂໍ້ມູນ | 0x2 |
| [11:0] | ເພີ່ມຂໍ້ມູນ |
RO |
ທີ່ຢູ່ offset ຂອງຂໍ້ມູນລົງທະບຽນ data0,
ທີ່ຢູ່ພື້ນຖານຂອງມັນແມ່ນ 0xe0000000, ແມ່ນຂຶ້ນກັບການອ່ານສະເພາະ. |
0xXXX |
ການຄວບຄຸມຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນແລະສະຖານະພາບ (ບົດຄັດຫຍໍ້)
ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກການປະຕິບັດຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ. ເຈົ້າພາບ debug ສາມາດອ່ານການລົງທະບຽນນີ້ເພື່ອຮູ້ວ່າຄໍາສັ່ງ abstract ສຸດທ້າຍຖືກປະຕິບັດຫຼືບໍ່ແລະສາມາດກວດເບິ່ງວ່າມີຂໍ້ຜິດພາດທີ່ເກີດຂື້ນໃນລະຫວ່າງການປະຕິບັດຄໍາສັ່ງ abstract ແລະປະເພດຂອງຂໍ້ຜິດພາດ, ເຊິ່ງອະທິບາຍລາຍລະອຽດດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-7 abstracts register ຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:29] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| [28:24] | progbufsize | RO | ຊີ້ບອກຈໍານວນຂອງໂປຣແກຣມ buffer program
ລົງທະບຽນ cache |
0x8 |
| [23:13] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 12 | ຫວ່າງ | RO | 0: ບໍ່ມີຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນກໍາລັງປະຕິບັດ
1: ມີຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນຖືກປະຕິບັດ ຫມາຍເຫດ: ຫຼັງຈາກການປະຕິບັດ, ຮາດແວໄດ້ຖືກລົບລ້າງ. |
0 |
| 11 | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| [10:8] | cmder | RW | Abstract commanderror type 000: ບໍ່ມີຂໍ້ຜິດພາດ
001: ການປະຕິບັດຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນເພື່ອຂຽນໃສ່ຄໍາສັ່ງ, abstracts, abstract auto registers ຫຼືອ່ານແລະຂຽນກັບຂໍ້ມູນແລະ progbuf ລົງທະບຽນ 010: ບໍ່ຮອງຮັບຄໍາສັ່ງ abstract ໃນປັດຈຸບັນ 011: ການປະຕິບັດຄໍາສັ່ງ abstract ໂດຍມີຂໍ້ຍົກເວັ້ນ 100: microprocessor ບໍ່ຖືກໂຈະ ຫຼືບໍ່ມີ ແລະບໍ່ສາມາດປະຕິບັດຄໍາສັ່ງ abstract 101: Bus error 110: Parity bit error ລະຫວ່າງການສື່ສານ 111: ຂໍ້ຜິດພາດອື່ນໆ ຫມາຍເຫດ: ສໍາລັບການຂຽນ bit 1 ແມ່ນໃຊ້ເພື່ອລົບສູນ. |
0 |
| [7:4] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| [3:0] | ສ່ວນຫຼຸດ | RO | ຈໍານວນການລົງທະບຽນຂໍ້ມູນ | 0x2 |
- Debugging hosts ສາມາດເຂົ້າເຖິງ GPRs, CSR registers, ແລະຄວາມຊົງຈໍາໂດຍການຂຽນຄ່າການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນເຂົ້າໄປໃນທະບຽນຄໍາສັ່ງ abstract.
- ເມື່ອເຂົ້າເຖິງທະບຽນ, ບິດລົງທະບຽນຄໍາສັ່ງແມ່ນຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້.
- ຕາຕະລາງ 7-8 ຄໍານິຍາມຂອງຄໍາສັ່ງລົງທະບຽນເມື່ອເຂົ້າເຖິງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:24] | ປະເພດ cmd | WO | ປະເພດຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ 0: ລົງທະບຽນການເຂົ້າເຖິງ;
1: ການເຂົ້າເຖິງໄວ (ບໍ່ສະຫນັບສະຫນູນ); 2: ການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ. |
0 |
| 23 | ສະຫງວນໄວ້ | WO | ສະຫງວນໄວ້ | 0 |
| [22:20] | aarsize | WO | Access register data bit width 000: 8-bit
001:16-ບິດ 010:32-ບິດ |
0 |
| 011: 64-bit (ບໍ່ຮອງຮັບ) 100: 128-bit (ບໍ່ຮອງຮັບ)
ຫມາຍເຫດ: ເມື່ອເຂົ້າເຖິງການລົງທະບຽນຈຸດລອຍ FPRs, ພຽງແຕ່ການເຂົ້າເຖິງ 32-bit ແມ່ນສະຫນັບສະຫນູນ. |
||||
| 19 | aarpostincrement | WO | 0: ບໍ່ມີຜົນກະທົບ
1: ອັດຕະໂນມັດເພີ່ມມູນຄ່າຂອງ regno ຫຼັງຈາກການເຂົ້າເຖິງການລົງທະບຽນ |
0 |
| 18 | ຕອບ exec | WO | 0: ບໍ່ມີຜົນກະທົບ
1:ປະຕິບັດຄໍາສັ່ງ abstract ແລະຫຼັງຈາກນັ້ນປະຕິບັດຄໍາສັ່ງໃນ progbuf |
0 |
| 17 | ໂອນ | WO | 0: ຢ່າປະຕິບັດການດໍາເນີນການທີ່ລະບຸໄວ້ໂດຍການຂຽນ
1: ປະຕິບັດການຫມູນໃຊ້ທີ່ລະບຸໂດຍການຂຽນ |
0 |
| 16 | ຂຽນ | WO | 0: ຄັດລອກຂໍ້ມູນຈາກທະບຽນທີ່ລະບຸໄວ້ເປັນ data0 1: ສຳເນົາຂໍ້ມູນຈາກທະບຽນ data0 ໄປໃສ່ທະບຽນທີ່ກຳນົດໄວ້ |
0 |
| [15:0] | regno | WO | ລະບຸການລົງທະບຽນການເຂົ້າເຖິງ 0x0000-0x0fff ແມ່ນ CSRs 0x1000-0x101f ແມ່ນ GPRs |
0 |
ເມື່ອເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ, bits ໃນທະບຽນຄໍາສັ່ງຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-9 ຄໍານິຍາມຂອງຄໍາສັ່ງລົງທະບຽນເມື່ອເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:24] | ປະເພດ cmd | WO | ປະເພດຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນ 0: ລົງທະບຽນການເຂົ້າເຖິງ;
1: ການເຂົ້າເຖິງໄວ (ບໍ່ສະຫນັບສະຫນູນ); 2: ເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ. |
0 |
| 23 | aamvirtual | WO | 0: ເຂົ້າເຖິງທີ່ຢູ່ທາງດ້ານຮ່າງກາຍ;
1: ເຂົ້າເຖິງທີ່ຢູ່ virtual. |
0 |
| [22:20] | ຂະຫນາດແຂນ | WO | ເຂົ້າເຖິງຂໍ້ມູນຫນ່ວຍຄວາມຈໍາ bit width 000: 8-bit;
001: 16-ບິດ; 010: 32-ບິດ; 011: 64-bit (ບໍ່ຮອງຮັບ); 100: 128-bit (ບໍ່ຮອງຮັບ); |
0 |
| 19 | aampostincrement | WO | 0: ບໍ່ມີອິດທິພົນ;
1: ຫຼັງຈາກການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາສົບຜົນສໍາເລັດ, ເພີ່ມທີ່ຢູ່ເກັບຮັກສາໄວ້ໃນ data1 ລົງທະບຽນໂດຍຈໍານວນຂອງ bytes ທີ່ສອດຄ້ອງກັນກັບ bit width ກໍານົດໂດຍຂະຫນາດແຂນ. Aamsize=0, ເຂົ້າເຖິງໂດຍ byte, data1 ບວກ 1. Aamsize=1, ເຂົ້າເຖິງໂດຍເຄິ່ງຄຳ, data1 ບວກ 2. aamsize=2, ເຂົ້າເຖິງໂດຍບິດ, data1 ບວກ 4. |
0 |
| 18 | ຕອບ exec | WO | 0: ບໍ່ມີອິດທິພົນ;
1: ປະຕິບັດຄໍາສັ່ງໃນ progbuf ຫຼັງຈາກປະຕິບັດຄໍາສັ່ງ abstract. |
0 |
| 17 | ຈອງ | RO | ສະຫງວນໄວ້ | 0 |
|
16 |
ຂຽນ |
WO |
0: ອ່ານຂໍ້ມູນຈາກທີ່ຢູ່ທີ່ລະບຸໂດຍ data1 ຫາ data0
1: ຂຽນຂໍ້ມູນໃນ data0 ໄປຫາທີ່ຢູ່ທີ່ກໍານົດໄວ້ໂດຍ ຂໍ້ມູນ1. |
0 |
|
[15:14] |
ເປົ້າໝາຍສະເພາະ |
WO |
ນິຍາມຂອງຮູບແບບການອ່ານ ແລະການຂຽນ ຂຽນ:
00, 01: ຂຽນໂດຍກົງໃສ່ຄວາມຊົງຈໍາ; 10: ຫຼັງຈາກຂໍ້ມູນໃນ data0 ແມ່ນ OR ກັບ bits ຂໍ້ມູນໃນຫນ່ວຍຄວາມຈໍາ, ຜົນໄດ້ຮັບຈະຖືກຂຽນເຂົ້າໄປໃນຫນ່ວຍຄວາມຈໍາ (ພຽງແຕ່ການເຂົ້າເຖິງຄໍາສັບແມ່ນສະຫນັບສະຫນູນ). 11: ຫຼັງຈາກສະຫຼຸບຂໍ້ມູນໃນ data0 ກັບ bits ຂໍ້ມູນໃນຫນ່ວຍຄວາມຈໍາ, ຂຽນຜົນໄດ້ຮັບເຂົ້າໄປໃນຫນ່ວຍຄວາມຈໍາ (ພຽງແຕ່ການເຂົ້າເຖິງຄໍາສັບແມ່ນສະຫນັບສະຫນູນ). ອ່ານ: 00, 01, 10, 11: ອ່ານ 0 ໂດຍກົງຈາກຫນ່ວຍຄວາມຈໍາ. |
0 |
| [13:0] | ຈອງ | RO | ສະຫງວນໄວ້ |
ບັນດາການຈົດທະບຽນການປະຕິບັດອັດຕະໂນມັດ (Abstract auto)
ທະບຽນນີ້ຖືກໃຊ້ເພື່ອຕັ້ງຄ່າໂມດູນດີບັກ. ເມື່ອອ່ານແລະຂຽນ progbufx ແລະຂໍ້ມູນຂອງໂມດູນ debugging, ຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນສາມາດຖືກປະຕິບັດອີກເທື່ອຫນຶ່ງ.
ລາຍລະອຽດຂອງການລົງທະບຽນນີ້ແມ່ນດັ່ງຕໍ່ໄປນີ້:
ຕາຕະລາງ 7-10 abstract auto register definition
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:16] | autoexecprogbuf | RW | ຖ້າມີການຕັ້ງຄ່າເລັກນ້ອຍ, ການອ່ານແລະການຂຽນທີ່ສອດຄ້ອງກັນຂອງ progbufx ຈະເຮັດໃຫ້ຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນຢູ່ໃນທະບຽນຄໍາສັ່ງຖືກປະຕິບັດອີກເທື່ອຫນຶ່ງ.
ຫມາຍເຫດ: ຊຸດ V3 ຖືກອອກແບບດ້ວຍ 8 progbufs, ສອດຄ້ອງກັບ bits [23:16]. |
0 |
| [15:12] | ຈອງ | RO | ສະຫງວນໄວ້ | 0 |
| [11:0] | autoexecdata |
RW |
ຖ້າບິດຖືກຕັ້ງເປັນ 1, ການອ່ານແລະການຂຽນທີ່ສອດຄ້ອງກັນຂອງທະບຽນຂໍ້ມູນຈະເຮັດໃຫ້ຄໍາສັ່ງທີ່ບໍ່ມີຕົວຕົນຢູ່ໃນທະບຽນຄໍາສັ່ງຖືກປະຕິບັດອີກເທື່ອຫນຶ່ງ.
ໝາຍເຫດ: ຊຸດ V3 ຖືກອອກແບບດ້ວຍຂໍ້ມູນສອງອັນ ລົງທະບຽນ, ທີ່ສອດຄ້ອງກັນກັບ bits [1:0]. |
0 |
ການລົງທະບຽນ cache ຄໍາແນະນໍາ (progbufx)
ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາຄໍາແນະນໍາໃດໆ, ແລະປະຕິບັດການດໍາເນີນການທີ່ສອດຄ້ອງກັນ, ລວມທັງ 8, ເຊິ່ງຈໍາເປັນຕ້ອງເອົາໃຈໃສ່ກັບການປະຕິບັດສຸດທ້າຍທີ່ຕ້ອງການ "break" ຫຼື "c.ebreak".
ຕາຕະລາງ 7-11 ຄໍານິຍາມການລົງທະບຽນ progbuf
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | ໂປຣແກມ | RW | ການເຂົ້າລະຫັດຄໍາແນະນໍາສໍາລັບການດໍາເນີນການ cache, ເຊິ່ງ
ອາດຈະປະກອບມີຄໍາແນະນໍາການບີບອັດ |
0 |
ຢຸດການລົງທະບຽນສະຖານະ (haltsum0)
ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກວ່າ microprocessor ຖືກໂຈະຫຼືບໍ່. ແຕ່ລະບິດຊີ້ບອກສະຖານະການໂຈະຂອງ microprocessor, ແລະເມື່ອມີພຽງແຕ່ຫນຶ່ງຫຼັກ, ພຽງແຕ່ບິດຕ່ໍາສຸດຂອງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກມັນ.
ຕາຕະລາງ 7-12 haltsum0 ຄໍານິຍາມລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:1] | ສະຫງວນໄວ້ | RO | ສະຫງວນໄວ້ | 0 |
| 0 | haltsum0 | RO | 0: ໄມໂຄຣໂປຣເຊສເຊີເຮັດວຽກຕາມປົກກະຕິ
1: ໄມໂຄຣໂປຣເຊສເຊີຢຸດ |
0 |
- ນອກເຫນືອຈາກການລົງທະບຽນທີ່ໄດ້ກ່າວມາຂ້າງເທິງຂອງໂມດູນດີບັກ, ຟັງຊັນດີບັກຍັງກ່ຽວຂ້ອງກັບການລົງທະບຽນ CSR, ຕົ້ນຕໍແມ່ນການຄວບຄຸມການດີບັກແລະສະຖານະພາບການລົງທະບຽນ dcsr ແລະຕົວຊີ້ຄໍາແນະນໍາ debug dpc, ເຊິ່ງໄດ້ອະທິບາຍລາຍລະອຽດດັ່ງຕໍ່ໄປນີ້.
- ການຄວບຄຸມການແກ້ໄຂບັນຫາແລະສະຖານະພາບ (dcsr)
ຕາຕະລາງ 7-13 ຄໍານິຍາມການລົງທະບຽນ dcsr
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:28] | xdebugver | DRO | 0000: ບໍ່ຮອງຮັບການດີບັກພາຍນອກ 0100: ຮອງຮັບການດີບັກພາຍນອກມາດຕະຖານ
1111: ການດີບັກພາຍນອກໄດ້ຮັບການສະຫນັບສະຫນູນ, ແຕ່ບໍ່ຕອບສະຫນອງ ສະເພາະ |
0x4 |
| [27:16] | ສະຫງວນໄວ້ | DRO | ສະຫງວນໄວ້ | 0 |
| 15 | ພັກຜ່ອນ | DRW | 0: ຄໍາສັ່ງຢຸດໃນໂຫມດເຄື່ອງປະຕິບັດຕົວຕາມທີ່ໄດ້ອະທິບາຍໄວ້ໃນສິດທິພິເສດ file
1: ຄໍາສັ່ງ break ໃນໂຫມດເຄື່ອງສາມາດເຂົ້າໄປໃນໂຫມດດີບັກ |
0 |
| [14:13] | ສະຫງວນໄວ້ | DRO | ສະຫງວນໄວ້ | 0 |
| 12 | ການແຕກແຍກ |
DRW |
0: ຄໍາສັ່ງ break ໃນໂຫມດຜູ້ໃຊ້ປະຕິບັດຕົວຕາມທີ່ໄດ້ອະທິບາຍໄວ້ໃນສິດທິພິເສດ file
1: ຄໍາສັ່ງ break ໃນໂຫມດຜູ້ໃຊ້ສາມາດເຂົ້າໄປໃນໂຫມດ debug |
0 |
| 11 | ຂັ້ນຕອນ | DRW | 0: ການຂັດຂວາງຖືກປິດການໃຊ້ງານພາຍໃຕ້ການດີບັກຂັ້ນຕອນດຽວ
1: ເປີດໃຊ້ການຂັດຂວາງພາຍໃຕ້ການດີບັກຂັ້ນຕອນດຽວ |
0 |
| 10 | ສະຫງວນໄວ້ | DRO | ສະຫງວນໄວ້ | 0 |
| 9 | ເວລາຢຸດ | DRW | 0: ເຄື່ອງຈັບເວລາລະບົບແລ່ນຢູ່ໃນໂໝດດີບັກ
1: ຕົວຈັບເວລາລະບົບຢຸດຢູ່ໃນໂໝດດີບັກ |
0 |
| [8:6] | ສາເຫດ | DRO | ເຫດຜົນສໍາລັບການເຂົ້າສູ່ debugging
001: ເຂົ້າສູ່ debugging ໃນຮູບແບບຂອງ break command (priority 3) 010: ເຂົ້າສູ່ການດີບັກໃນຮູບແບບຂອງໂມດູນ trigger (ບູລິມະສິດ 4, ສູງສຸດ) 011: ປ້ອນການດີບັກໃນຮູບແບບການຮ້ອງຂໍຢຸດຊົ່ວຄາວ (ບູລິມະສິດ 1) 100: debugging ໃນຮູບແບບຂອງການ debugging ຂັ້ນຕອນດຽວ (ບູລິມະສິດ 0, ຕໍ່າສຸດ) |
0 |
| 101: ເຂົ້າສູ່ໂໝດດີບັກໂດຍກົງຫຼັງຈາກຣີເຊັດ microprocessor (ບູລິມະສິດ 2) ອື່ນໆ: ສະຫງວນໄວ້ | ||||
| [5:3] | ສະຫງວນໄວ້ | DRO | ສະຫງວນໄວ້ | 0 |
| 2 | ຂັ້ນຕອນ | DRW | 0: ປິດການດີບັກຂັ້ນຕອນດຽວ
1: ເປີດໃຊ້ການດີບັກຂັ້ນຕອນດຽວ |
0 |
| [1:0] | ກ່ອນໜ້າ | DRW | ໂໝດສິດທິພິເສດ 00: ໂໝດຜູ້ໃຊ້
01: ໂໝດຜູ້ຄຸມງານ (ບໍ່ຮອງຮັບ) 10: ສະຫງວນໄວ້ 11: ໂໝດເຄື່ອງ ໝາຍເຫດ: ບັນທຶກໂໝດສິດທິພິເສດເມື່ອເຂົ້າສູ່ໂໝດດີບັກ, ຕົວດີບັກສາມາດແກ້ໄຂຄ່ານີ້ເພື່ອແກ້ໄຂໂໝດສິດທິພິເສດເມື່ອອອກຈາກການດີບັກ |
0 |
ຕົວຊີ້ໂປຣແກຣມໂໝດດີບັກ (DPC)
- ການລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາທີ່ຢູ່ຂອງຄໍາແນະນໍາຕໍ່ໄປທີ່ຈະດໍາເນີນການຫຼັງຈາກ microprocessor ເຂົ້າສູ່ໂຫມດດີບັກ, ແລະມູນຄ່າຂອງມັນຖືກປັບປຸງດ້ວຍກົດລະບຽບທີ່ແຕກຕ່າງກັນໂດຍອີງຕາມເຫດຜົນສໍາລັບການເຂົ້າສູ່ debug. ການລົງທະບຽນ dpc ໄດ້ຖືກອະທິບາຍໄວ້ໃນລາຍລະອຽດດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-14 ຄໍານິຍາມການລົງທະບຽນ dpc
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | DPC | DRW | ທີ່ຢູ່ຄໍາແນະນໍາ | 0 |
ກົດລະບຽບການປັບປຸງການລົງທະບຽນແມ່ນສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້.
ຕາຕະລາງ 7-15 ກົດລະບຽບການປັບປຸງ dpc
| ກະລຸນາໃສ່ວິທີການດີບັກ | dpc ກົດລະບຽບການປັບປຸງ |
| ພັກຜ່ອນ | ທີ່ຢູ່ຂອງຄໍາແນະນໍາ Ebreak |
| ຂັ້ນຕອນດຽວ | ທີ່ຢູ່ຄໍາແນະນໍາຂອງຄໍາແນະນໍາຕໍ່ໄປຂອງຄໍາແນະນໍາໃນປະຈຸບັນ |
| ໂມດູນກະຕຸ້ນ | ບໍ່ຮອງຮັບຊົ່ວຄາວ |
| ຄໍາຮ້ອງສະຫມັກຢຸດເຊົາການ | ທີ່ຢູ່ຂອງຄໍາແນະນໍາຕໍ່ໄປທີ່ຈະປະຕິບັດໃນເວລາທີ່ເຂົ້າ Debug |
ການໂຕ້ຕອບ Debug
- ແຕກຕ່າງຈາກມາດຕະຖານ JTAG ອິນເຕີເຟດທີ່ກຳນົດໂດຍ RISC-V, QingKe V3 series microprocessor ນຳໃຊ້ 1- ເປັນສາຍ/2-wire ການໂຕ້ຕອບການດີບັກ serial ແລະປະຕິບັດຕາມ WCH debug interface protocol V1.0.
- ການໂຕ້ຕອບການດີບັ໊ກແມ່ນຮັບຜິດຊອບຕໍ່ການສື່ສານລະຫວ່າງແມ່ຂ່າຍດີບັກ ແລະໂມດູນດີບັກ ແລະຮັບຮູ້ການປະຕິບັດການອ່ານ/ຂຽນຂອງແມ່ຂ່າຍດີບັກຕໍ່ກັບການລົງທະບຽນໂມດູນດີບັກ.
- WCH ອອກແບບ WCH_Link ແລະ open source ຂອງມັນ schematic ແລະ program binary files, ເຊິ່ງສາມາດໃຊ້ສໍາລັບການ debugging microprocessors ທັງຫມົດຂອງສະຖາປັດຕະ RISC-V.
- ອ້າງອີງເຖິງ WCH Debug Protocol Manual ສໍາລັບໂປຣໂຕຄອນການໂຕ້ຕອບການດີບັກສະເພາະ.
ລາຍຊື່ລົງທະບຽນ CSR
- ສະຖາປັດຕະຍະກໍາ RISC-V ກໍານົດຈໍານວນການຄວບຄຸມແລະສະຖານະພາບການລົງທະບຽນ (CSRs) ສໍາລັບການຄວບຄຸມແລະບັນທຶກສະຖານະການປະຕິບັດງານຂອງ microprocessor.
- ບາງສ່ວນຂອງ CSRs ໄດ້ຖືກນໍາສະເຫນີໃນພາກກ່ອນ, ແລະບົດນີ້ຈະລາຍລະອຽດກ່ຽວກັບການລົງທະບຽນ CSR ທີ່ຖືກປະຕິບັດໃນ QingKe V3 series microprocessors.
ລາຍຊື່ລົງທະບຽນ CSR
ຕາຕະລາງ 8-1 ບັນຊີລາຍຊື່ຂອງ Microprocessor CSR ລົງທະບຽນ
| ປະເພດ | ຊື່ | CSR ທີ່ຢູ່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ |
| RISC-V
ມາດຕະຖານ CSR |
marchid | 0xF12 | MRO | ທະບຽນເລກສະຖາປັດ |
| ຂີ້ຄ້ານ | 0xF13 | MRO | ການລົງທະບຽນຕົວເລກການປະຕິບັດຮາດແວ | |
| mstatus | 0x300 | MRW | ສະຖານະການລົງທະບຽນ | |
| ມິຊາ | 0x301 | MRW | ລົງທະບຽນຊຸດຄໍາແນະນໍາຂອງຮາດແວ | |
| mtvec | 0x305 | MRW | ການຍົກເວັ້ນການລົງທະບຽນທີ່ຢູ່ຖານ | |
| mscratch | 0x340 | MRW | ໂໝດເຄື່ອງ stagລົງທະບຽນ | |
| MEPC | 0x341 | MRW | ລົງທະບຽນຕົວຊີ້ໂຄງການຍົກເວັ້ນ | |
| ສາເຫດ | 0x342 | MRW | ການລົງທະບຽນສາເຫດຍົກເວັ້ນ | |
| mtval | 0x343 | MRW | ການລົງທະບຽນມູນຄ່າການຍົກເວັ້ນ | |
| pmpcfg | 0x3A0+i | MRW | ລົງທະບຽນການຕັ້ງຄ່າ PMP | |
| pmpaddr | 0x3B0+i | MRW | ລົງທະບຽນທີ່ຢູ່ PMP | |
| ເລືອກ | 0x7A0 | MRW | Debug trigger ການລົງທະບຽນລົງທະບຽນ | |
| tdata1 | 0x7A1 | MRW | Debug trigger data register 1 | |
| tdata2 | 0x7A2 | MRW | Debug trigger data register 2 | |
| dcsr | 0x7B0 | DRW | ການຄວບຄຸມການແກ້ໄຂບັນຫາແລະການຈົດທະບຽນສະຖານະພາບ | |
| dpc | 0x7B1 | DRW | ການລົງທະບຽນຕົວຊີ້ໂປຣແກຣມຮູບແບບດີບັກ | |
| dscratch0 | 0x7B2 | DRW | ໂໝດດີບັກ stagລົງທະບຽນ 0 | |
| dscratch1 | 0x7B3 | DRW | ໂໝດດີບັກ stagລົງທະບຽນ 1 | |
|
ຜູ້ຂາຍໄດ້ກໍານົດ CSR |
gintenr | 0x800 | URW | Global interrupt ເປີດລົງທະບຽນ |
| intsyscr | 0x804 | URW | ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມລະບົບ | |
| corecfgr | 0xBC0 | MRW | ລົງທະບຽນການຕັ້ງຄ່າໄມໂຄຣໂປຣເຊສເຊີ | |
| inestcr | 0xBC1 | MRW | ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມແບບຊ້ອນກັນ |
ການລົງທະບຽນ CSR ມາດຕະຖານ RISC-V
- ທະບຽນເລກສະຖາປັດຕະຍະກຳ (marchid)
- ທະບຽນນີ້ແມ່ນການລົງທະບຽນແບບອ່ານເທົ່ານັ້ນເພື່ອຊີ້ບອກໝາຍເລກສະຖາປັດຕະຍະກຳຮາດແວຂອງຈຸນລະພາກປະຈຸບັນ, ເຊິ່ງສ່ວນໃຫຍ່ແມ່ນປະກອບດ້ວຍລະຫັດຜູ້ຂາຍ, ລະຫັດສະຖາປັດຕະຍະກຳ, ລະຫັດຊຸດ ແລະລະຫັດເວີຊັນ. ແຕ່ລະຄົນຂອງພວກເຂົາຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-2 ຄໍານິຍາມການລົງທະບຽນ marchid
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| 31 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 1 |
| [30:26] | ຜູ້ຂາຍ0 | MRO | ລະຫັດຜູ້ຜະລິດ 0
ແກ້ໄຂກັບຕົວອັກສອນ “W” ລະຫັດ |
0x17 |
| [25:21] | ຜູ້ຂາຍ1 | MRO | ລະຫັດຜູ້ຜະລິດ 1
ຖືກແກ້ໄຂກັບລະຫັດ "C". |
0x03 |
| [20:16] | ຜູ້ຂາຍ2 | MRO | ລະຫັດຜູ້ຜະລິດ 2
ຖືກແກ້ໄຂກັບຕົວອັກສອນ “H” ລະຫັດ |
0x08 |
| 15 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 1 |
| [14:10] | Arch | MRO | ລະຫັດສະຖາປັດຕະຍະກໍາ | 0x16 |
| ສະຖາປັດຕະຍະກຳ RISC-V ຖືກສ້ອມແຊມໃສ່ລະຫັດຕົວອັກສອນ “V” | ||||
| [9:5] | ລໍາດັບ | MRO | ລະຫັດຊຸດ
ຊຸດ QingKe V3, ຖືກແກ້ໄຂເປັນເລກ “3” |
0x03 |
| [4:0] | ຮຸ່ນ | MRO | ລະຫັດເວີຊັນ
ສາມາດເປັນສະບັບ “A”, “B”, “C” ແລະຕົວອັກສອນອື່ນໆຂອງລະຫັດ |
x |
ໝາຍເລກຜູ້ຜະລິດ ແລະໝາຍເລກລຸ້ນແມ່ນເປັນຕົວໜັງສື, ແລະໝາຍເລກຊຸດແມ່ນເປັນຕົວເລກ. ຕາຕະລາງການເຂົ້າລະຫັດຂອງຕົວອັກສອນແມ່ນສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-3 ຕາຕະລາງການວາງແຜນຕົວອັກສອນ
| 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 |
- ໃນບັນດາພວກເຂົາ, QingKe V3A microprocessor, ລົງທະບຽນອ່ານກັບຄືນໄປບ່ອນ 0.
ການລົງທະບຽນຕົວເລກການປະຕິບັດຮາດແວ (ຈໍາກັດ)
- ການລົງທະບຽນນີ້ແມ່ນສ່ວນໃຫຍ່ແມ່ນປະກອບດ້ວຍລະຫັດຜູ້ຂາຍ, ແຕ່ລະອັນແມ່ນຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-4 ຄໍານິຍາມການລົງທະບຽນlimpid
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| 31 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 1 |
| [30:26] | ຜູ້ຂາຍ0 | MRO | ລະຫັດຜູ້ຜະລິດ 0
ແກ້ໄຂກັບຕົວອັກສອນ “W” ລະຫັດ |
0x17 |
| [25:21] | ຜູ້ຂາຍ1 | MRO | ລະຫັດຜູ້ຜະລິດ 1
ຖືກແກ້ໄຂກັບລະຫັດ "C". |
0x03 |
| [20:16] | ຜູ້ຂາຍ2 | MRO | ລະຫັດຜູ້ຜະລິດ 2
ຖືກແກ້ໄຂກັບຕົວອັກສອນ “H” ລະຫັດ |
0x08 |
| 15 | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 1 |
| [14:8] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [7:4] | ເລັກນ້ອຍ | MRO | ຈໍານວນການໂຄ່ນລົ້ມ | 0xX |
| [3:0] | ຫລັກ | MR0 | ໝາຍເລກລຸ້ນຫຼັກ | 0xX |
- ທະບຽນນີ້ແມ່ນສາມາດອ່ານໄດ້ໃນການປະຕິບັດເຄື່ອງຈັກໃດໆ, ແລະໃນໂຮງງານຜະລິດຊຸດ QingKe V3A, ທະບຽນນີ້ອ່ານກັບສູນ.
ການລົງທະບຽນສະຖານະຂອງເຄື່ອງຈັກ (mstatus)
- ການລົງທະບຽນນີ້ໄດ້ຖືກອະທິບາຍບາງສ່ວນໃນພາກກ່ອນ, ແລະຄົນຂອງມັນຖືກຈັດໃສ່ດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-5 mstatus register ຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:13] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [12:11] | MPP | MRW | ຮູບແບບສິດທິພິເສດກ່ອນທີ່ຈະເຂົ້າໄປໃນການພັກຜ່ອນ | 0 |
| [10:8] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| 7 | MPIE | MRW | ຂັດຂວາງການເປີດໃຊ້ສະຖານະກ່ອນທີ່ຈະເຂົ້າໄປໃນການຂັດຂວາງ | 0 |
| [6:4] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| 3 | MIE | MRW | ໂໝດເຄື່ອງລົບກວນເປີດໃຊ້ງານ | 0 |
| [2:0] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
- ຊ່ອງຂໍ້ມູນ MPP ຖືກນໍາໃຊ້ເພື່ອບັນທຶກໂຫມດສິດທິພິເສດກ່ອນທີ່ຈະເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງແລະຖືກນໍາໃຊ້ເພື່ອຟື້ນຟູໂຫມດສິດທິພິເສດຫຼັງຈາກອອກຈາກການຍົກເວັ້ນຫຼືຂັດຂວາງ. MIE ແມ່ນບິດເປີດການຂັດຂວາງທົ່ວໂລກ, ແລະເມື່ອເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ, ມູນຄ່າຂອງ MPIE ຈະຖືກປັບປຸງເປັນມູນຄ່າຂອງ MIE, ແລະຄວນສັງເກດວ່າໃນ microprocessors ຊຸດ QingKe V3, MIE ຈະບໍ່ຖືກປັບປຸງເປັນ 0 ກ່ອນທີ່ລະດັບສຸດທ້າຍຂອງການຂັດຂວາງ nested ເພື່ອຮັບປະກັນວ່າການຂັດຂວາງການຮັງຢູ່ໃນໂຫມດເຄື່ອງຈັກຍັງສືບຕໍ່ດໍາເນີນການ. ເມື່ອມີການຍົກເວັ້ນຫຼືຂັດຂວາງ, ໄມໂຄຣໂປຣເຊສເຊີຈະກັບຄືນສູ່ໂຫມດເຄື່ອງທີ່ບັນທຶກໄວ້ໂດຍ MPP, ແລະ MIE ຈະຖືກຟື້ນຟູເປັນຄ່າ MPIE.
- QingKe V3 microprocessor ສະຫນັບສະຫນູນໂຫມດເຄື່ອງຈັກແລະໂຫມດຜູ້ໃຊ້, ຖ້າທ່ານຕ້ອງການເຮັດໃຫ້ microprocessor ເຮັດວຽກພຽງແຕ່ຢູ່ໃນໂຫມດເຄື່ອງຈັກ, ທ່ານສາມາດຕັ້ງ MPP ເປັນ 0x3 ໃນການເລີ່ມຕົ້ນຂອງການບູດ. file, ນັ້ນແມ່ນ, ຫຼັງຈາກກັບຄືນມາ, ມັນຈະຢູ່ໃນໂຫມດເຄື່ອງຈັກສະ ເໝີ.
ລົງທະບຽນຊຸດຄໍາແນະນໍາຮາດແວ (misa)
- ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກສະຖາປັດຕະຍະກໍາຂອງ microprocessor ແລະການຂະຫຍາຍຊຸດຄໍາແນະນໍາທີ່ສະຫນັບສະຫນູນ, ແຕ່ລະອັນໄດ້ຖືກອະທິບາຍດັ່ງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-6 ຄໍານິຍາມການລົງທະບຽນ misa
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:30] | MXL | MRO | ຄວາມຍາວຂອງເຄື່ອງຈັກ 1:32
2:64 3:128 |
1 |
| [29:26] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [25:0] | ສ່ວນຂະຫຍາຍ | MRO | ການຂະຫຍາຍຊຸດຄໍາແນະນໍາ | x |
- MXL ຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກຄວາມຍາວຄໍາສັບຂອງ microprocessor, QingKe V3 ແມ່ນ microprocessors 32-bit, ແລະໂດເມນໄດ້ຖືກແກ້ໄຂເປັນ 1.
- ສ່ວນຂະຫຍາຍຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກວ່າ microprocessor ສະຫນັບສະຫນູນລາຍລະອຽດຊຸດຄໍາແນະນໍາທີ່ຂະຫຍາຍ, ແຕ່ລະຄົນຊີ້ໃຫ້ເຫັນເຖິງການຂະຫຍາຍ, ລາຍລະອຽດຂອງມັນແມ່ນສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້.
ຕາຕະລາງ 8-7 ລາຍລະອຽດການຂະຫຍາຍຊຸດຄໍາແນະນໍາ
| ບິດ | ຊື່ | ລາຍລະອຽດ |
| 0 | A | ການຂະຫຍາຍປະລໍາມະນູ |
| 1 | B | ສະຫງວນໄວ້ຢ່າງບໍ່ຢຸດຢັ້ງສຳລັບສ່ວນຂະຫຍາຍ Bit-Manipulation |
| 2 | C | ການຂະຫຍາຍທີ່ຖືກບີບອັດ |
| 3 | D | ການຂະຫຍາຍຈຸດລອຍທີ່ມີຄວາມຊັດເຈນສອງເທົ່າ |
| 4 | E | RV32E ພື້ນຖານ ISA |
| 5 | F | ການຂະຫຍາຍຈຸດລອຍແບບຄວາມຊັດເຈນດຽວ |
| 6 | G | ມີສ່ວນຂະຫຍາຍມາດຕະຖານເພີ່ມເຕີມ |
| 7 | H | ສ່ວນຂະຫຍາຍ Hypervisor |
| 8 | I | RV32I/64I/128I ຖານ ISA |
| 9 | J | ສະຫງວນໄວ້ຊົ່ວຄາວສຳລັບສ່ວນຂະຫຍາຍພາສາທີ່ແປແບບໄດນາມິກ |
| 10 | K | ສະຫງວນໄວ້ |
| 11 | L | ສະຫງວນໄວ້ຢ່າງບໍ່ຢຸດຢັ້ງສຳລັບການຂະຫຍາຍຈຸດເລື່ອນເລກຖານສິບ |
| 12 | M | Integer Multiply/Divide extension |
| 13 | N | ຮອງຮັບການຂັດຂວາງລະດັບຜູ້ໃຊ້ |
| 14 | O | ສະຫງວນໄວ້ |
| 15 | P | ສະຫງວນໄວ້ຊົ່ວຄາວສໍາລັບການຂະຫຍາຍ Packed-SIMD |
| 16 | Q | ການຂະຫຍາຍຈຸດເລື່ອນຄວາມຊັດເຈນ quad |
| 17 | R | ສະຫງວນໄວ້ |
| 18 | S | ນຳໃຊ້ໂໝດຜູ້ຄຸມງານແລ້ວ |
| 19 | T | ສະຫງວນໄວ້ຊົ່ວຄາວສຳລັບການຂະຫຍາຍໜ່ວຍຄວາມຈຳທຸລະກຳ |
| 20 | U | ຮູບແບບຜູ້ໃຊ້ຖືກປະຕິບັດ |
| 21 | V | ສະຫງວນໄວ້ຊົ່ວຄາວສໍາລັບການຂະຫຍາຍ Vector |
| 22 | W | ສະຫງວນໄວ້ |
| 23 | X | ມີສ່ວນຂະຫຍາຍທີ່ບໍ່ແມ່ນມາດຕະຖານ |
| 24 | Y | ສະຫງວນໄວ້ |
| 25 | Z | ສະຫງວນໄວ້ |
- ຕົວຢ່າງample, ສໍາລັບ QingKe V3A microprocessor, ມູນຄ່າການລົງທະບຽນແມ່ນ 0x401001105, ຊຶ່ງຫມາຍຄວາມວ່າສະຖາປັດຕະຍະກໍາຊຸດຄໍາແນະນໍາທີ່ສະຫນັບສະຫນູນແມ່ນ RV32IMAC, ແລະມັນມີການປະຕິບັດຮູບແບບຜູ້ໃຊ້.
ລົງທະບຽນທີ່ຢູ່ຖານຂໍ້ຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກ (mtvec)
- ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາທີ່ຢູ່ພື້ນຖານຂອງຂໍ້ຍົກເວັ້ນຫຼືຕົວຈັດການຂັດຂວາງແລະສອງບິດຕ່ໍາຖືກນໍາໃຊ້ເພື່ອກໍານົດຮູບແບບແລະວິທີການກໍານົດຂອງຕາຕະລາງ vector ດັ່ງທີ່ອະທິບາຍໄວ້ໃນພາກ 3.2.
ໂໝດເຄື່ອງ stagລົງທະບຽນ (mscratch)
ຕາຕະລາງ 8-8 ຄໍານິຍາມການລົງທະບຽນ mscratch
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | mscratch | MRW | ການເກັບຮັກສາຂໍ້ມູນ | 0 |
ການລົງທະບຽນນີ້ແມ່ນ 32-bit ທີ່ອ່ານໄດ້ແລະຂຽນໄດ້ໃນໂຫມດເຄື່ອງສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ. ຕົວຢ່າງample, ເມື່ອເຂົ້າໄປໃນການຍົກເວັ້ນຫຼືຕົວຈັດການຂັດຂວາງ, ຜູ້ໃຊ້ stack pointer SP ຖືກເກັບໄວ້ໃນທະບຽນນີ້ແລະຕົວຊີ້ stack interrupt ຖືກມອບຫມາຍໃຫ້ລົງທະບຽນ SP. ຫຼັງຈາກອອກຈາກການຍົກເວັ້ນຫຼືຂັດຂວາງ, ຟື້ນຟູຄ່າຂອງຕົວຊີ້ SP ຜູ້ໃຊ້ stack ຈາກ scratch. ນັ້ນແມ່ນ, stack ຂັດຂວາງແລະ stack ຜູ້ໃຊ້ສາມາດແຍກໄດ້.
ໂປຣແກຣມຕົວຊີ້ການຍົກເວັ້ນໂປຣແກຣມໂໝດເຄື່ອງຈັກ (ແຜນທີ່)
ຕາຕະລາງ 8-9 mepc ຄໍານິຍາມການລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | mepc | MRW | ຕົວຊີ້ຂັ້ນຕອນການຍົກເວັ້ນ | 0 |
- ລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອບັນທຶກຕົວຊີ້ໂຄງການໃນເວລາທີ່ເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງ.
- ມັນຖືກນໍາໃຊ້ເພື່ອບັນທຶກຕົວຊີ້ PC ຄໍາແນະນໍາກ່ອນທີ່ຈະເຂົ້າໄປໃນຂໍ້ຍົກເວັ້ນໃນເວລາທີ່ການຍົກເວັ້ນຫຼືການຂັດຂວາງຖືກສ້າງຂື້ນ, ແລະ mepc ຖືກນໍາໃຊ້ເປັນທີ່ຢູ່ກັບຄືນເມື່ອຂໍ້ຍົກເວັ້ນຫຼືຂັດຂວາງຖືກຈັດການແລະໃຊ້ສໍາລັບການຍົກເວັ້ນຫຼືການຂັດຂວາງ.
- ຢ່າງໃດກໍ່ຕາມ, ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າ.
- ເມື່ອມີຂໍ້ຍົກເວັ້ນເກີດຂຶ້ນ, mepc ຈະຖືກປັບປຸງເປັນມູນຄ່າ PC ຂອງຄໍາແນະນໍາທີ່ປະຈຸບັນສ້າງຂໍ້ຍົກເວັ້ນ.
- ເມື່ອມີການຂັດຂວາງ, mepc ຈະຖືກປັບປຸງໃຫ້ກັບຄ່າ PC ຂອງຄໍາແນະນໍາຕໍ່ໄປ.
- ເມື່ອທ່ານຕ້ອງການສົ່ງຄືນຂໍ້ຍົກເວັ້ນຫຼັງຈາກການປຸງແຕ່ງຂໍ້ຍົກເວັ້ນ, ທ່ານຄວນເອົາໃຈໃສ່ກັບການປ່ຽນແປງມູນຄ່າຂອງ mepc, ແລະລາຍລະອຽດເພີ່ມເຕີມສາມາດພົບໄດ້ໃນບົດທີ 2 ຂໍ້ຍົກເວັ້ນ.
ການຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກເຮັດໃຫ້ການລົງທະບຽນ (mcause)
ຕາຕະລາງ 8-10 mcause register ຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| 31 | ຂັດຂວາງ | MRW | ຊ່ອງສະແດງການຂັດຂວາງ 0: ຂໍ້ຍົກເວັ້ນ
1: ການຂັດຂວາງ |
0 |
| [30:0] | ລະຫັດຂໍ້ຍົກເວັ້ນ | MRW | ສໍາລັບລະຫັດການຍົກເວັ້ນ, ເບິ່ງຕາຕະລາງ 2-1 ສໍາລັບລາຍລະອຽດ | 0 |
- ທະບຽນນີ້ສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອເກັບຮັກສາສາເຫດຂອງການຍົກເວັ້ນຫຼືຈໍານວນການຂັດຂວາງການຂັດຂວາງ. ບິດສູງສຸດຂອງມັນແມ່ນພາກສະຫນາມ Interrupt, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກວ່າການປະກົດຕົວໃນປະຈຸບັນເປັນຂໍ້ຍົກເວັ້ນຫຼືການຂັດຂວາງ.
- ບິດຕ່ໍາແມ່ນລະຫັດຂໍ້ຍົກເວັ້ນ, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກສາເຫດສະເພາະ. ລາຍລະອຽດຂອງມັນສາມາດພົບໄດ້ໃນພາກທີ 2 ຂໍ້ຍົກເວັ້ນ.
ການລົງທະບຽນມູນຄ່າການຍົກເວັ້ນຮູບແບບເຄື່ອງຈັກ (mtval)
ຕາຕະລາງ 8-11 ຄໍານິຍາມຂອງທະບຽນ mtval
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | mtval | MRW | ຄ່າຍົກເວັ້ນ | 0 |
- ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຖືມູນຄ່າທີ່ເຮັດໃຫ້ເກີດຂໍ້ຍົກເວັ້ນເມື່ອມີຂໍ້ຍົກເວັ້ນເກີດຂຶ້ນ. ສໍາລັບລາຍລະອຽດເຊັ່ນ: ມູນຄ່າແລະເວລາຂອງການເກັບຮັກສາຂອງມັນ, ກະລຸນາເບິ່ງບົດທີ 2 ຂໍ້ຍົກເວັ້ນ.
ລົງທະບຽນການຕັ້ງຄ່າ PMP (pmpcfg
- ທະບຽນນີ້ສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອກໍາຫນົດຄ່າຫນ່ວຍຄວາມຈໍາທາງກາຍະພາບ, ແລະທຸກໆ 8 bits ຂອງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອກໍານົດການປົກປັກຮັກສາພື້ນທີ່. ກະລຸນາເບິ່ງບົດທີ 4 ສໍາລັບຄໍານິຍາມລະອຽດ.
ລົງທະບຽນທີ່ຢູ່ PMP (pmpaddr
- ການລົງທະບຽນນີ້ສ່ວນໃຫຍ່ແມ່ນໃຊ້ສໍາລັບການຕັ້ງຄ່າທີ່ຢູ່ຂອງຫນ່ວຍຄວາມຈໍາທາງດ້ານຮ່າງກາຍ, ເຊິ່ງເຂົ້າລະຫັດ 32 bits ຂອງທີ່ຢູ່ທາງດ້ານຮ່າງກາຍ 34-bit. ກະລຸນາເບິ່ງບົດທີ 4 ສໍາລັບວິທີການກໍານົດສະເພາະ.
ການລົງທະບຽນຕົວຊີ້ໂປຣແກຣມຮູບແບບດີບັກ (DPC)
- ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາທີ່ຢູ່ຂອງຄໍາແນະນໍາຕໍ່ໄປທີ່ຈະດໍາເນີນການຫຼັງຈາກ microprocessor ເຂົ້າມາ
- ໂຫມດດີບັກ ແລະຄ່າຂອງມັນຖືກປັບປຸງດ້ວຍກົດລະບຽບທີ່ແຕກຕ່າງກັນຂຶ້ນກັບເຫດຜົນສໍາລັບການເຂົ້າສູ່ດີບັກ. ເບິ່ງພາກ 6.1 ສໍາລັບລາຍລະອຽດລາຍລະອຽດ.
Debug trigger ເລືອກລົງທະບຽນ (ເລືອກ)
- ມັນໃຊ້ໄດ້ສະເພາະກັບໂປເຊດເຊີຈຸນລະພາກທີ່ຮອງຮັບຈຸດແບ່ງຮາດແວ ແລະ ຮອງຮັບຈຸດແບ່ງ 4 ຊ່ອງເປັນສ່ວນໃຫຍ່, ແລະ 2 bits ຕ່ໍາຂອງມັນແມ່ນຖືກຕ້ອງ.
- ເມື່ອຕັ້ງຄ່າແຕ່ລະຈຸດແບ່ງຊ່ອງ, ທ່ານຈໍາເປັນຕ້ອງເລືອກຊ່ອງທາງທີ່ສອດຄ້ອງກັນໂດຍຜ່ານການລົງທະບຽນນີ້ກ່ອນທີ່ຈະຕັ້ງຄ່າ.
ຕາຕະລາງ 8-12 ເລືອກຄໍານິຍາມລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:2] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
| [1:0] |
ເລືອກ |
MRW |
ການລົງທະບຽນການຄັດເລືອກຊ່ອງ breakpoint ໄດ້ຖືກຕັ້ງຄ່າ, ນັ້ນແມ່ນ, ຫຼັງຈາກເລືອກຊ່ອງທີ່ສອດຄ້ອງກັນ, ການລົງທະບຽນ tdata1 ແລະ tdata2 ສາມາດດໍາເນີນການເພື່ອກໍານົດຄ່າ breakpoint.
ຂໍ້ມູນ. |
X |
Debug trigger data register 1(tdata1)
ມັນໃຊ້ໄດ້ສະເພາະກັບໄມໂຄຣໂປຣເຊສເຊີທີ່ຮອງຮັບຈຸດແບ່ງຮາດແວເທົ່ານັ້ນ. Microprocessors ພຽງແຕ່ສະຫນັບສະຫນູນທີ່ຢູ່ຄໍາແນະນໍາແລະຈຸດຢຸດທີ່ຢູ່ຂໍ້ມູນ, ບ່ອນທີ່ bit TYPE ຂອງທະບຽນ tdata1 ເປັນຄ່າຄົງທີ່ຂອງ 2, ແລະ bits ອື່ນໆສອດຄ່ອງກັບຄໍານິຍາມຂອງການຄວບຄຸມໃນມາດຕະຖານ debugging.
ຕາຕະລາງ 8-13 tdata1 ການລົງທະບຽນຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:28] | ປະເພດ | MRO | ປະເພດ Breakpoint ຄໍານິຍາມ, ປະເພດການຄວບຄຸມ. | 0x2 |
|
27 |
DMODE |
MRO |
0: ການລົງທະບຽນທີ່ກ່ຽວຂ້ອງຂອງ flip-flop ສາມາດແກ້ໄຂໄດ້ທັງໃນໂຫມດເຄື່ອງແລະຮູບແບບການດີບັກ;
1: ມີພຽງແຕ່ຮູບແບບການດີບັກສາມາດແກ້ໄຂການລົງທະບຽນທີ່ກ່ຽວຂ້ອງຂອງ flip-flop ໄດ້. |
1 |
| [26:21] |
MASKMAX |
MRO |
ເມື່ອ MATCH=1, ຂອບເຂດການຈັບຄູ່ແບບເລກກຳລັງສູງສຸດແມ່ນອະນຸຍາດ, ນັ້ນແມ່ນ, ຊ່ວງການຈັບຄູ່ທີ່ອະນຸຍາດສູງສຸດແມ່ນ 231 ໄບຕ໌. |
0x1F |
| [20:13] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
|
12 |
ປະຕິບັດ |
MRW |
ຕັ້ງຄ່າໂໝດການປະມວນຜົນເມື່ອເປີດໃຊ້ຈຸດຢຸດ:
0: ເມື່ອກະຕຸ້ນ, ເຂົ້າໄປໃນຈຸດຢຸດແລະໂທຫາການຂັດຂວາງ; 1: ເຂົ້າສູ່ໂໝດດີບັກເມື່ອຖືກກະຕຸ້ນ. |
0 |
| [11:8] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
|
7 |
ການແຂ່ງຂັນ |
MRW |
ການກຳນົດຄ່ານະໂຍບາຍທີ່ກົງກັນ:
0: ຈັບຄູ່ເມື່ອຄ່າ trigger ເທົ່າກັບ TDATA2; 1: ຄ່າ trigger ກົງກັບ high m bit ຂອງ TDATA2, ເຊິ່ງ m = 31–n, ແລະ n ແມ່ນ 0 quote ທຳອິດຂອງ TDATA2 (ເລີ່ມຈາກຄ່າ low bit). |
0 |
|
6 |
M |
MRW |
ເປີດໃຊ້ flip-flop ໃນໂຫມດ M:
0: ປິດໃຊ້ງານຕົວກະຕຸ້ນໃນໂຫມດ M; 1: ເປີດໃຊ້ຕົວກະຕຸ້ນໃນໂໝດ M. |
0 |
| [5:4] | ສະຫງວນໄວ້ | MRO | ສະຫງວນໄວ້ | 0 |
|
3 |
U |
MRW |
ເປີດໃຊ້ຕົວກະຕຸ້ນໃນໂໝດ U:
0: ປິດການໃຊ້ງານຕົວກະຕຸ້ນໃນໂຫມດ U; 1: ເປີດໃຊ້ຕົວກະຕຸ້ນໃນໂຫມດ U. |
0 |
|
2 |
ປະຕິບັດ |
MRW |
ຄໍາແນະນໍາການອ່ານທີ່ຢູ່ trigger ເປີດໃຊ້: 0: ປິດການໃຊ້ງານ;
1: ເປີດໃຊ້. |
0 |
|
1 |
ເກັບຮັກສາ |
MRW |
ຂໍ້ມູນການຂຽນທີ່ຢູ່ trigger ເປີດໃຊ້: 0: ປິດການໃຊ້ງານ;
1: ເປີດໃຊ້. |
0 |
|
0 |
ໂຫຼດ |
MRW |
ຂໍ້ມູນການອ່ານທີ່ຢູ່ກະຕຸ້ນໃຫ້ໃຊ້ງານ: 0: ປິດການທໍາງານ;
1: ເປີດໃຊ້. |
0 |
Debug trigger data register 2(tdata2)
ມັນໃຊ້ໄດ້ສະເພາະກັບໄມໂຄຣໂປຣເຊສເຊີທີ່ຮອງຮັບຈຸດແບ່ງຮາດແວ ແລະໃຊ້ເພື່ອບັນທຶກຄ່າທີ່ກົງກັນຂອງທຣິກເກີ.
ຕາຕະລາງ 8-14 tdata2 ການລົງທະບຽນຄໍານິຍາມ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | TDATA2 | MRW | ໃຊ້ເພື່ອບັນທຶກຄ່າທີ່ກົງກັນ. | X |
ການຄວບຄຸມການແກ້ໄຂບັນຫາແລະສະຖານະພາບ (dcsr)
ການລົງທະບຽນນີ້ແມ່ນໃຊ້ເພື່ອຄວບຄຸມ ແລະບັນທຶກສະຖານະການເຮັດວຽກຂອງໂໝດດີບັກ. ເບິ່ງພາກ 7.1 ສໍາລັບລາຍລະອຽດ.
ຕົວຊີ້ໂປຣແກຣມໂໝດດີບັກ (DPC)
ລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາທີ່ຢູ່ຂອງຄໍາແນະນໍາຕໍ່ໄປທີ່ຈະດໍາເນີນການຫຼັງຈາກ microprocessor ເຂົ້າສູ່ໂຫມດ debugging, ມູນຄ່າຂອງມັນຈະແຕກຕ່າງກັນໄປຕາມເຫດຜົນສໍາລັບການເຂົ້າສູ່ໂຫມດ debugging, ແລະກົດລະບຽບການປັບປຸງຍັງແຕກຕ່າງກັນ. ເບິ່ງພາກ 7.1 ສໍາລັບລາຍລະອຽດລາຍລະອຽດ.
ໂໝດດີບັກ stagລົງທະບຽນ (dscratch0-1)
ກຸ່ມຂອງທະບຽນນີ້ແມ່ນໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວໃນໂຫມດດີບັກ.
ຕາຕະລາງ 8-15 dscratch0-1 ຄໍານິຍາມລົງທະບຽນ
| ບິດ | ຊື່ | ການເຂົ້າເຖິງ | ລາຍລະອຽດ | ຕັ້ງຄ່າຄືນໃ່ |
| [31:0] | dscratch | DRW | ຂໍ້ມູນໂໝດດີບັກ stagມູນຄ່າ | 0 |
ການລົງທະບຽນ CSR ທີ່ກຳນົດໂດຍຜູ້ໃຊ້
ໂໝດຜູ້ໃຊ້ລົບກວນທົ່ວໂລກ ເປີດລົງທະບຽນ (gintenr)
- ການລົງທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມການເປີດໃຊ້ງານແລະຫນ້າກາກຂອງການລົບກວນທົ່ວໂລກ. ການເປີດໃຊ້ງານແລະຫນ້າກາກຂອງການລົບກວນທົ່ວໂລກໃນໂຫມດເຄື່ອງຈັກສາມາດຄວບຄຸມໄດ້ໂດຍ MIE ແລະ MPIE bits ໃນສະຖານະ, ແຕ່ການລົງທະບຽນນີ້ບໍ່ສາມາດດໍາເນີນການໃນຮູບແບບຜູ້ໃຊ້ໄດ້.
- ໃນຂະນະທີ່ການຂັດຂວາງທົ່ວໂລກເຮັດໃຫ້ການລົງທະບຽນ gintenr ແມ່ນການສ້າງແຜນທີ່ຂອງ MIE ແລະ MPIE ໃນສະຖານະ.
- ໃນໂຫມດຜູ້ໃຊ້, ຄວາມຕັ້ງໃຈສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດແລະລ້າງ MIE ແລະ MPIE, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນພາກ 3.2 ສໍາລັບລາຍລະອຽດ.
ໝາຍເຫດ
- ການຂັດຂວາງທົ່ວໂລກບໍ່ລວມເອົາການຂັດຂວາງທີ່ບໍ່ເປີດເຜີຍ NMI ແລະຂໍ້ຍົກເວັ້ນ.
ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມລະບົບ (intsyscr)
ການລົງທະບຽນນີ້ສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອກໍານົດຄວາມເລິກຂອງຮັງຂັດຂັດຈັງຫວະ, ການກົດຄ້າງຮາດແວ, ແລະຟັງຊັນທີ່ກ່ຽວຂ້ອງອື່ນໆ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນພາກ 3.2 ສໍາລັບລາຍລະອຽດ.
ລົງທະບຽນການຕັ້ງຄ່າໄມໂຄຣໂປຣເຊສເຊີ (corecfgr)
ທະບຽນນີ້ຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມວ່າ NMI interrupt ໄດ້ຖືກອະນຸຍາດໃຫ້ຫຼັງຈາກການຂັດຂວາງ overflows ແລະບໍ່ວ່າການຮ້ອງຂໍການຂັດຂວາງໄດ້ຖືກລຶບລ້າງໃນເວລາທີ່ຄໍາແນະນໍາຮົ້ວຖືກປະຕິບັດ. ກະລຸນາເບິ່ງພາກ 3.2 ສໍາລັບຄໍານິຍາມສະເພາະ.
ຂັດຂວາງການລົງທະບຽນການຄວບຄຸມແບບຊ້ອນກັນ (inestcr)
ທະບຽນນີ້ຖືກໃຊ້ເພື່ອຊີ້ບອກເຖິງສະຖານະຂອງຮັງທີ່ຖືກຂັດຈັງຫວະ ແລະວ່າມັນຈະລົ້ນຫຼືບໍ່, ແລະເພື່ອຄວບຄຸມລະດັບການຮັງສູງສຸດ. ກະລຸນາເບິ່ງພາກ 3.2 ສໍາລັບຄໍານິຍາມສະເພາະ.
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
WH V3 Microprocessor [pdf] ຄູ່ມືຜູ້ໃຊ້ V3 Microprocessor, V3, ໄມໂຄຣໂປຣເຊສເຊີ |





