306xH系列架构
主系统包含以下部件:
- maters:RISC-V CPU、DMA、CORESIGHT
- slaves:嵌入式SYSRAM、嵌入式Flash memory、系统外设
这些模块通过AMBA总线架构互连,如图所示。
- TCM_BUS:此总线将RISC-V CPU的TCM接口与存储器互连,其中DTCM优先级高于ITCM。
- SYS_BUS:此系统总线实现RISC-V CPU、DMA和CORESIGHT的主接口访问系统外设与DMA主接口经RISC-V CPU TCM接口访问存储器的通路。
- PERI_LS:此外设总线将低速外设连接到SYS_BUS,时钟频率为SYS_BUS时钟频率的1/2。
- PERI_HS:此外设总线将高速外设连接到SYS_BUS,时钟频率为SYS_BUS时钟频率。
地址空间映射
程序存储器、数据存储器、寄存器和I/O端口排列在同一个线性(即地址连续)的4GB地址空间内。
各字节按小端格式对齐(字中编号最低的字节被视为该字的最低有效字节,而编号最高的字节被视为最高有效字节)。
嵌入式SYSRAM
嵌入式SYSRAM能够以最大系统时钟频率按字节、半字(16位)或全字(32位)访问,无需等待周期。
SYSRAM支持奇偶校验功能,数据总线宽度为36位,其中有4位用于奇偶校验(每字节1位)。奇偶校验位在写入SYSRAM时进行计算和保存,然后在读取时自动进行校验。如果某一位失败,则将生成校验错误中断。该错误也连接到APT0~8的系统事件apt_evtsys3,用于输出保护。系统控制器SYSCTRL1的SYSRAM_ERR寄存器sysram_parity_err位域存放该SYSRAM奇偶校验错误标志。
SYSRAM奇偶校验功能默认开启,建议在代码开始处使用软件初始化整个SYSRAM,以免在读取非初始化位置时出现奇偶校验错误。
系统启动与固件升级
芯片内置启动ROM(BOOTROM),当芯片复位撤销后CPU固定从BOOTROM开始执行启动引导程序。芯片支持通过UART0或JTAG对EFLASH内容进行固件升级(烧写)。
启动方式
芯片支持两种启动模式:升级模式与正常启动模式,由BOOT管脚上电锁存值决定。可通过系统控制器SYSCTRL0的SC_SYS_STAT寄存器update_mode位域查询当前启动模式。此状态标志可软件清除。
- 正常启动模式:系统将直接从EFLASH主存储区启动用户程序。但存在以下两种状态的任意一种时,CPU将停止启动系统,此时可以通过JATG/SWD接口调试(或烧写)系统。
- 升级模式:BOOTROM程序将初始化UART0,与上位机通信并接收固件程序。
处理器
308xH系列产品的处理器是一个基于RISC-V ISA设计的32-bit MCU核,具有以下特点:
- 支持RV32IMCF指令集+自定义指令集。
- 支持Machine和User特权模式。
- 支持物理内存保护(Physical Memory Protection, PMP)。
- 单发射3级顺序流水线微架构。
- 支持静态分支预测。
- 支持最大4GB Byte地址空间,具体可访问范围由芯片总线架构决定。
- 支持通过ITCM接口访问指令和数据。
- 支持通过DTCM接口访问数据。
- 支持系统通过外部AHB总线接口(AHBS)访问ITCM和DTCM。
- 支持AHB外设总线(AHBM)访问系统外设寄存器。
- 支持小端数据排布。
- 支持Direct和Vector中断模式。
- 支持WIFI低功耗模式。
- 支持RISC-V标准调试机制。
通用寄存器
RISC-V RV32I基础指令集定义了32个23bit整型通用寄存器加上32bit的PC寄存器,对于支持单精度浮点扩展(RISC-V标准F扩展)的处理器,额外定义了32个32bit的浮点通用寄存器。
**PC寄存器指示当前执行指令的地址。**除了整型寄存器X0为恒0值,对X0的写操作会被忽略,其它通用寄存器并无特殊的硬件规格差异,理论上可以互相替换使用。但RISC-V组织为了软件编程的统一性,指定了软件使用通用寄存器的一些约定,如X1作为函数调用的返回寄存器,X2作为栈指针,X3作为全局指针等。同时还约定了软件在函数调用的时候,哪些寄存器作为传入参数或返回值,哪些寄存器属于调用者(Caller)进行入栈保护,哪些寄存器属于被调用者(Callee)进行入栈保护。
浮点寄存器是独立于整型寄存器的,RISC-V规定每一条指令访问的资源是整型寄存器还是浮点寄存器,对于浮点整型转换等指令,可能需要同时用到整型和浮点寄存器。
控制与状态寄存器CSR
控制与状态寄存器CSR是用于控制CPU运行、提供CPU运行状态信息的寄存器。
CSR寄存器具有独立于系统地址空间的地址空间,所以访问系统地址空间的load/store指令并不能用于访问SCR寄存器,RISC-V提供专用的CSR指令用于读写CSR寄存器,包括CSRRW、CSRRS、CSRRC、CSRRWI、CSRRSI、CSRRCI以及一些伪汇编指令。
RISC-V标准根据CSR寄存器的可访问特权模式和是否支持写操作,将CSR寄存器分成几种类别,本处理器支持的CSR涉及到URW、URO、MRW、MRO四种类别属性。
- URW表示该CSR是用户模式读写寄存器,支持用户模式和机器模式进行读写访问。
- URO表示该CSR是用户模式只读寄存器,支持用户模式和机器模式进行读访问,而对URO类别的CSR操作发起写操作会触发异常。
- MRW表示该CSR是机器模式读写寄存器,支持机器模式下进行读写访问,而处于用户模式下进行读写访问会触发异常。
- MRO表示该CSR是机器模式只读寄存器,只支持机器模式下进行读操作,而任何模式下执行写操作或用户模式下执行读操作都会触发异常。
标准CSR寄存器描述