USER GUIDE / PROCESSOR & BUS / RISC V V0 / EXCEPTIONS
异常
RISC-V CPU 可因以下异常原因触发异常:
| 异常码 | 说明 |
|---|---|
| 1 | 指令访问故障 |
| 2 | 非法指令 |
| 3 | 断点 |
| 5 | 载入访问故障 |
| 7 | 存储访问故障 |
| 8 | 来自 U 模式的环境调用(ECALL) |
| 11 | 来自 M 模式的环境调用(ECALL) |
LEP_DEV CCU 寄存器说明
寄存器内存映射
表 1 CCU 寄存器内存映射基地址
| 名称 | 基址 | 说明 |
|---|---|---|
| LEP0_CCU_BASE | 0x1210_0000 | V0 CCU 基地址 |
表 2 CCU 寄存器映射
| 名称 | 复位值 | 地址偏移 | 访问大小 |
|---|---|---|---|
| CCSR | 0x0000_0067 | 0x000 | 32 |
| CRER | 0x1FC0_0000 | 0x004 | 32 |
| FROM_HOST | 0x0000_0000 | 0x008 | 32 |
| TO_HOST | 0x0000_0000 | 0x00c | 32 |
| TIME_L | 0x0000_0000 | 0x010 | 32 |
| TIME_H | 0x0000_0000 | 0x014 | 32 |
| TIME_CMP_L | 0xFFFF_FFFF | 0x018 | 32 |
| TIME_CMP_H | 0xFFFF_FFFF | 0x01C | 32 |
| SIP | 0x0000_0000 | 0x030 | 32 |
| CSRR | 0x8000_0000 | 0x0F0 | 32 |
寄存器及字段说明
Core Control Status Register(0x000)
CCSRBase+0x000
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | Timer_en | Reset | Sleep | Bus_idle | Bus_mask | IE | |||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:6 | Reserved | 写入无影响,读取为零。 | R |
| 6 | L1c_idle | 0:L1C 忙。 1:L1C 空闲。 | R |
| 5 | Timer_en | 0:禁用定时器。 1:启用定时器。 | R |
| 4 | Reset | 0:LEP 正在运行。 1:LEP 处于复位状态。 | R |
| 3 | Sleep | 0:LEP 忙。 1:LEP 休眠。 | R |
| 2 | Bus_idle | 0:LEP 总线忙。 1:LEP 总线空闲。 | R |
| 1 | Bus_mask | 0:禁止 LEP 访问总线。 1:允许 LEP 访问总线。 | R/W |
| 1 | IE | 0:中断禁用。 1:中断使能。 | R/W |
Core Reset Entry Register(0x004)
CRERBase+0x004
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | CRER | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | CRER | 复位 PC 值。 | R/W |
LEP Mailbox Register From Host(0x008)
FROM_HOST 邮箱寄存器用于向 RISC-V 内核(LEP)产生from_host邮箱中断。
FROM_HOSTBase+0x008
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | MSG | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | MSG | 发送到内核的消息。 非零值可用作软件标志或参数。 向该寄存器写值可向 RISC-V 内核(LEP)产生mailbox邮箱中断。 | R/W |
LEP Mailbox Register To Host(0x00C)
TO_HOST 邮箱寄存器用于向主机产生to_host邮箱中断。
TO_HOSTBase+0x00C
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | MSG | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | MSG | 发送到主机的消息。 非零值可用作软件标志或参数。 向该寄存器写值可向主机产生mailbox邮箱中断。 | R/W |
Software Interrupt Pending 32bit Register(0x030)
向 SIP 寄存器写入即可产生软件中断。SIP 寄存器是一个 32 位宽、可读可写的寄存器,其中仅 BIT0 在 SIP 寄存器中有效,其余位硬连线为 0。复位后,SIP 寄存器清零。
SIPBase+0x030
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | sip | ||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位段 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:1 | Reserved | 写入无影响,读取为零。 | R |
| 0 | sip | 写入将产生软件中断。 复位时清零。 | R/W |
Core Software Reset register(0x0F0)
CSRRBase+0x0F0
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | rsts | Reserved | ||||||||||||||||||||||||||||||
| RST | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | R/W |
|---|---|---|---|
| 31 | rsts | 0:V0 正在运行 1:V0 处于复位状态 硬件可复位 软件不可复位 复位值为 0x1 | R/W |
| 30:0 | Reserved | 写入无影响,读取为零。 | R |
LEP_DEV PMA 寄存器说明
PMA(Physical Memory Attributes,物理内存属性)单元支持 8 个表项,用于为每个匹配的内存区域指定访问属性。每个表项由一组内存映射寄存器描述,包括 1 个配置寄存器和 1 个地址寄存器。地址匹配逻辑符合《RISC-V Instruction Set Manual, Volume II: Privileged Architecture, Version 1.10》第 3.6.1 节“Address Matching”的定义。
特性
- 支持 8 个配置表项
- 支持 OFF、TOR、NAPOT 可配置地址匹配规则。地址匹配的最小粒度为 4KB
- 每个表项均支持配置读、写、执行权限以及 Cache 属性
- 访问未指定的内存区域将导致访问失败异常
- 编号越小的表项优先级越高,用于确定匹配的内存区域
默认配置
0x00000000 ~ 0x0FFFFFFF:可缓存、可写、可读、可执行。0x10000000 ~ 0x1FFFFFFF:不可缓存、可写、可读、可执行。0x20000000 ~ 0x7FFFFFFF:可缓存、可写、可读、可执行。0x80000000 ~ 0xFFFFFFFF:不可访问。
寄存器内存映射
表 3 PMA 寄存器内存映射基地址
| 名称 | 基址 | 说明 |
|---|---|---|
| PMA_BASE | 0x1210_0000 | PMA 基地址 |
| 名称 | 复位值 | 地址偏移 | 访问大小 |
|---|---|---|---|
| PMA_ADDR0 | 0x0000_0000 | 0x040 | 32 |
| PMA_ADDR1 | 0x0000_0000 | 0x044 | 32 |
| PMA_ADDR2 | 0x0000_0000 | 0x048 | 32 |
| PMA_ADDR3 | 0x0000_0000 | 0x04C | 32 |
| PMA_ADDR4 | 0x0000_0000 | 0x050 | 32 |
| PMA_ADDR5 | 0x0000_0000 | 0x054 | 32 |
| PMA_ADDR6 | 0x05FF_FFFF | 0x058 | 32 |
| PMA_ADDR7 | 0x0FFF_FFFF | 0x05C | 32 |
| PMA_CFG0 | 0x0000_0007 | 0x060 | 32 |
| PMA_CFG1 | 0x0000_0007 | 0x064 | 32 |
| PMA_CFG2 | 0x0000_0007 | 0x068 | 32 |
| PMA_CFG3 | 0x0000_0007 | 0x06c | 32 |
| PMA_CFG4 | 0x0000_0007 | 0x070 | 32 |
| PMA_CFG5 | 0x0000_0007 | 0x074 | 32 |
| PMA_CFG6 | 0x0000_001F | 0x078 | 32 |
| PMA_CFG7 | 0x0000_003F | 0x07c | 32 |
寄存器及字段说明
PMA 地址寄存器(0x040 + x*0x4)
X:0~7
PMAaddr[x]Base+0x040+x*0x4
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Address | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | R/W |
|---|---|---|---|
| 31:9 | Address | PMA 地址[x] 物理地址 = Address << 2 X=0~5 时,复位值为 0x0000_0000 X=6 时,复位值为 0x05FF_FFFF (物理地址为 0x1000_0000~0x1FFF_FFFF) X=7 时,复位值为 0x0FFF_FFFF (物理地址为 0x0000_0000~0x7FFF_FFFF) | 大核:RW 小核:R |
PMA 配置寄存器(0x060 + x*0x4)
X=0~7
PMAcfg[x]Base+0x060+x*0x4
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | C | A | W | R | X | ||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 位 | 名称 | 说明 | R/W |
|---|---|---|---|
| 31:6 | Reserved | 写入无影响,读取为零。 读取为 0。 | 大核:R 小核:R |
| 5 | C | 0:不可缓存 1:可缓存 | 大核:RW 小核:R |
| 4:3 | A | 0:OFF(无效表项) 1:TOR(Top of Range,使用相邻表项地址作为匹配区间上界的模式) 2:NA4(未实现) 3:NAPOT(自然对齐的 2 的幂大小区域),区间大小为 2 的幂次方,且至少为 4KB。 | 大核:RW 小核:R |
| 2 | W | 0:禁止写。 1:允许写。 | 大核:RW 小核:R |
| 1 | R | 0:禁止读。 1:允许读。 | 大核:RW 小核:R |
| 0 | X | 0:禁止执行。 1:允许执行。 | 大核:RW 小核:R |