"); //-->
CSR简介
RISC-V 架构的控制和状态寄存器(Control and Status Register, CSR),用于配置或记录一些处理器核的运行状态。CSR寄存器是处理器核内部的寄存器,使用其专有的12位地址编码空间,数量最多有4096个。所以访问CSR寄存器需要使用特殊的指令。
RISC-V定义了以下几种CSR访问指令:
CSR除了RSC-V标准的CSR之外,芯片厂商可能还会添加自定义的CSR,用于实现一些特别功能。例如芯来科技的Bumblebee内核就扩展了数个CSR用于处理中断嵌套,记录处理器当前的异常类型等。
RISC-V的可扩展特性给了厂商比较大的灵活性,可扩展特性也引起了碎片化的问题。这个问题确实是存在的,只有当软硬件工具都提供了一种机制能够灵活的来适应不同的厂商,才能消除这个因素带来的影响。
J-Link访问CSR寄存器
J-Link从6.48 r1开始,支持了读写CSR。于是在对RISC-V处理器进行调试时,就很方便了。不论是标准的CSR,还是厂商自定义的CSR,只需要给出它的地址即可实现读或写操作。在此之前只能通过IDE的调试系统查看标准的CSR,而自定义CSR则无法在IDE调试窗口中查看。
下面以GD32VF103这颗MCU为例,使用J-Link调试器以及J-Link Commander软件工具来读写标准和自定义CSR。GD32VF103使用的是芯来科技的Bumblebee内核,下面先在代码中触发一个EXTI线0中断,然后通过J-Link读取标准CSR中的mcause寄存器:
从mcause寄存器可以看到,当EXTI线0中断触发,bit31应该是1,bit11:0应该是其中断编号,从GD32VF103的手册中确认是25,也就是0x19。
在EXTI0的中断服务程序中加一个断点,让CPU在此暂停执行。
然后通过J-Link Commander连上MCU,通过ReadCSR命令读取macuse(地址0x342):
可以确认读取CSR成功。
下面通过J-Link来写厂商自定义CSR。mcountinhibit(地址0x320)是Bumblebee内核提供的一个自定义CSR,用于开启和关闭RISC-V核内定时器和CPU计数器。
通过WriteCSR命令,对mcountinhibit的CY位置位,关闭mcycle:
在IDE中可以,再次运行代码可以发现mcycle定时器的值不再变化,说明关闭成功。再次置零,mcycle的值又会变化。
Segger Embedded Studio中查看自定义CSR
Segger Embedded Studio是一个支持ARM和RISC-V架构的IDE,具有功能强,运行速度快等优点。从Embedded Studio for RISC-V v6.12a版本开始,用户可以添加厂商自定义的CSR。其中,针对RISC-V内核CSR,在安装路径的targets目录下的cpu_registers_riscv.xml文件描述了当前处理器支持的CSR。
通过修改这个文件可以添加厂商自定义CSR。将这个文件复制到工程路径下面,进行修改。这里添加Bumblebee内核的msubm寄存器,其指示当异常发生时异常的类型。
在cpu_registers_riscv.xml文件的最后面添加上对msubm寄存器的描述,并将Group命名为Customized CSRs:BumbleBee。
然后在Embedded Studio进入调试后,在寄存器窗口可以看到添加的自定义Group,将其使能。
当中断发生时,可从寄存器窗口看到msubm寄存器的TYP域的值变成了1,指示当前发生的是中断。
当异常触发时,TYP域的值变成了2,指示当前发生的是系统异常。
SEGGER的J-Link和Embedded Studio工具都针对RISC-V的CSR寄存器提供了读写功能,方便用户在使用不同厂家的MCU时提高调试的效率。如果你在使用RISC-V架构的处理器,并且有J-Link的话,不妨一试。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
美国议员指控TP-Link与中国关系密切,公司否认并回应
TP-Link芯片部门被曝已全员解散
QNX 的 RTOS 平台
这里有没有TP-LINK的工程师
Light Link智能灯控解决方案
[转帖]RTOS-μITRON
教程:设置内置逻辑的 IO-Link 网络
Stella:Self-Balancing Robot Powered by Nucleus RTOS on TI Stellaris
PowerIntegrations公布LinkSwitch-XT IC
意法半导体模块化IO-Link开发套件简化工业自动化设备节点开发
自动驾驶、无线传输,汽车电子发展的终极是什么?
IO-Link通信从站的设计
C语言进阶-ASIX Win link list 第五讲代码
DSP开发全过程经典
imec旗下IC-Link正式加入台积电开放创新平台
使用IO-Link®和10BASE-T1L以太网实现无缝连接
TP-Link确认Wi-Fi 8试验成功
从RTOS到Linux的应用移植
TP-LINK诚聘研发工程师(工作地点深圳)
TP-LINK诚聘研发工程师(深圳)
IAR平台现已提供对Zephyr RTOS的量产级支持
RTOS课程建设
TP-Link Systems突然大裁员
TP-Link遭美调查 联洲国际无预警大裁员
实时系统的实现(PDF)
RTOS和CPU指令设计—uc/os—||| 的启示
1 加 1- 2, Link and Sync 的智慧平台系統
为智能工厂铺平道路:ADI公司获得CC-Link IE TSN认证