2404|2

227

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

如何使用J-Link和Embedded Studio读写RISC-V处理器的CSR? [复制链接]

 

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的话,不妨一试。

最新回复

谢谢分享   详情 回复 发表于 2022-8-30 18:55
点赞 关注
个人签名

欢迎关注“麦克泰技术”

 

回复
举报

82

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

# find . -type f -exec ls -s {} \; | sort -n -r | head -5

显示当前目录及其子目录中前 5 个最大的文件

 
 
 

回复

7671

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表