当前位置:网站首页>[risc-v] external interrupt
[risc-v] external interrupt
2022-07-06 03:13:00 【Mr. Jiada】
It is divided into interrupt and exception , The main record here is RISC-V Interrupt of instruction set .
List of articles
One 、CPU block diagram

Two 、RISC-V Classification of interruptions
- Local interrupt (Local interrupt)
- software interrupt
- timer interrupt
- Global interrupt (Global interrupt)
- externel interrupt

- externel interrupt
3、 ... and 、 Interrupt related registers (mie/mip)
mstatus The register of MIE The flag bit is the global interrupt switch bit , Equivalent to level 1 interrupt flag .
mie (Machine interrupt Enable)
Used for setting up M/S/U Corresponding in mode External/Timer/Software interrupt .(M/S/U The privilege mode below says )
stay RISCV Next , Will interrupt (interrupt) It is subdivided into three types : Timed interrupt (timer)、 Internuclear interruption (soft)、 Interrupt Controller Interrupt (external). Timed interrupts can be used to generate tick, Internuclear interrupts are used for different cpu Nuclear communication , The interrupt controller is responsible for all peripheral interrupts . This design and arm It's a little different , stay arm Multi core , Timer interrupt in architecture 、 Inter core interrupt and peripheral interrupt are managed by interrupt controller , And in the RISCV Timer and inter core interrupt are separated in , These two interrupts are called CLINT(Core Local Interrupt), The interrupt controller that manages other peripheral interrupts is called PLIC(Platform-Level Interrupt Controller).
mip (Machine Interrupt Pending): Get current M/S/U Corresponding in mode External/Timer/Software Whether the interruption occurs .

Four 、 Privilege mode
RISCV There are three privilege levels under the architecture , Namely Machine、Supervisor and User, abbreviation M Pattern 、S Patterns and U Pattern .M Mode permission is the highest , Programs at this level can access all hardware and execute all privileged instructions ;S Mode is generally used to run the operating system , You can set MMU Use a virtual address ;U Patterns are generally used by ordinary applications , Minimum authority .
M Mode uses physical addresses for access , Not pass MMU, But there are similar arm Next cortex-m Medium MPU function ;S The mode can be set MMU To access memory using virtual addresses , So it's like Linux This kind of operating system runs on S In mode . So someone has to ask , Why? RISCV The architecture privilege pattern is designed like this , Put... Directly M Patterns and S Can't the two modes be integrated ? This has to come from RISCV From the background of the birth of architecture ,RISCV Architecture was born in 2010 About years ago , At this time, whether it is x86 still arm The architecture is relatively mature , therefore RISCV When designing the architecture, it is targeted that this architecture can be used from microcontrollers to large supercomputers . Used on microcontrollers RISCV The architecture is generally only M Pattern , Or use M and U Two modes , Be similar to cortex-m Positioning of architecture ; And in the belt MMU On the chip ,RISCV Architecture is generally used M、S and U Three models , This way “ Building blocks ” Can make RISCV The architecture is applicable to various scenarios .
5、 ... and 、PLIC (Platform-Level Interrupt Controller)
RISC-V The interrupt controller inside , amount to ARM Medium GIC, Mainly deal with external interrupts according to priority
Interrupt source -> Interrupt number -> Interrupt vector -> Interrupt service routine (ISR)-> Interrupt return
Interrupt source ID Range :1 ~ 53(0x35),0 Retain 
PLIC Programming interface (API) - register
- RISC-V Specifications stipulated ,PLIC Memory mapping is used in the register programming of (memory map) The way . The width of each register is 32 - bit.
- Specific register addressing adopts base + offset The format of , And base By each specific platform Define your own .

Priority register
| Programmable register | Function description | Memory mapped address |
|---|---|---|
| Priority | Set the priority of an interrupt source | BASE + (interrupt-id) * 4 |
- Every PLIC Interrupt sources have a memory mapped address , The register pointed to by this address is used to configure the priority of the interrupt source .
- If two interrupt sources have the same priority , According to the ID Values further prioritize ,ID The smaller the value, the higher the priority
Pending register
| Programmable register | Function description | Memory mapped address |
|---|---|---|
| Pending | Used to indicate whether an interrupt source occurs | BASE + 0x1000 + ((interrupt-id/32)) |
- Every PLIC The interrupt controller contains 2 individual 32 Bit Pending register ( because 52 Interrupt sources 1 individual 32bit Cannot express completely ), every last bit Corresponding to an interrupt source , by 1 Indicates that an interrupt has occurred on the interrupt source ( Get into Pending state ), remain hart Handle , Otherwise, it means that there is currently no interrupt on the interrupt source .
- Pending Register interrupt Pending The state can pass through claim Way to clear .
- first Pending The first of the registers 0 Bit correspondence does not exist 0 Interrupt source No , Its value is always 0.
Enable register
| Programmable register | Function description | Memory mapped address |
|---|---|---|
| Enable | For something hart Turn on or off an interrupt source | BASE + 0x2000 + (hart) * 0x80 |
- Every Hart Yes 2 individual Enable register (Enable1 and Enable2) For this Hart Start or close a certain interrupt source .
- Each interrupt source corresponds to Enable One of the registers bit, among Enable1 Be responsible for controlling 131 Interrupt source No ;Enable2 Be responsible for controlling 3253 Interrupt source No . The corresponding bit Bit is set to 1 Indicates that the interrupt source is enabled , Otherwise, it means that the interrupt source is closed .
Threshold register
| Programmable register | Function description | Memory mapped address |
|---|---|---|
| Threshold | For something hart Set the threshold of interrupt source priority | BASE + 0x200000 + (hart) * 0x1000 |
- Every Hart Yes 1 individual Threshold Register is used to set the threshold of interrupt priority .
- All less than or equal to (<=) Even if the interrupt source of this threshold occurs, it will be PLIC discarded . Specially , When the threshold is 0 Interrupts that occur on all interrupt sources are allowed ; When the threshold is 7 Discard all interrupts that occur on the interrupt source .
Claim/Complete register
| Programmable register | Function description | Memory mapped address |
|---|---|---|
| Claim/Complete | Get the interrupt source with the highest priority currently occurring ID/ notice PLIC The processing of the interrupt has ended | BASE + 0x200004 + (hart) * 0x1000 |
- Claim and Complete It's the same register , Every Hart One .
- Reading this register is called Claim, That is, get the interrupt source with the highest priority currently occurring ID.Claim After success, the corresponding Pending position .
- Writing to this register is called Complete. So-called Complete Means notice PLIC The processing of this route interrupt has ended .
6、 ... and 、 Interrupt processing flow
Even if the interruption occurs at the same time , It will also respond according to the filter of interrupt priority .
Details can be skipped
FreeRTOS The interrupt mechanism of can jump
边栏推荐
- Custom attribute access__ getattribute__/ Settings__ setattr__/ Delete__ delattr__ method
- Leetcode problem solving -- 173 Binary search tree iterator
- 【Unity3D】GUI控件
- Huawei, H3C, Cisco command comparison, mind map form from the basic, switching, routing three directions [transferred from wechat official account network technology alliance station]
- 【RISC-V】外部中断
- 下一个行业风口:NFT 数字藏品,是机遇还是泡沫?
- OCR文字識別方法綜述
- js 正则过滤和增加富文本中图片前缀
- Modeling specifications: naming conventions
- 1003 emergency (25 points), "DIJ deformation"
猜你喜欢

ERA5再分析资料下载攻略

The next industry outlet: NFT digital collection, is it an opportunity or a foam?

Modeling specifications: naming conventions
如何做好功能测试

C # create self host webservice

Linear programming matlab
How to do function test well

Sign SSL certificate as Ca

Princeton University, Peking University & UIUC | offline reinforcement learning with realizability and single strategy concentration

IPv6 comprehensive experiment
随机推荐
Is there a completely independent localization database technology
Leetcode problem solving -- 108 Convert an ordered array into a binary search tree
Résumé des méthodes de reconnaissance des caractères ocr
jsscript
1. Dynamic parameters of function: *args, **kwargs
Rust language -- iterators and closures
Microservice registration and discovery
【Kubernetes 系列】一文學會Kubernetes Service安全的暴露應用
Lua uses require to load the shared library successfully, but the return is Boolean (always true)
Deep parsing pointer and array written test questions
Function knowledge points
The difference between sizeof and strlen in C language
张丽俊:穿透不确定性要靠四个“不变”
Data and Introspection__ dict__ Attributes and__ slots__ attribute
Apt installation ZABBIX
微服务间通信
js凡客banner轮播图js特效
建模规范:命名规范
Buuctf question brushing notes - [geek challenge 2019] easysql 1
Princeton University, Peking University & UIUC | offline reinforcement learning with realizability and single strategy concentration