0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RISC-V的Store AMO access fault调试实例

嵌入式USB开发 来源:嵌入式USB开发 作者:嵌入式USB开发 2023-06-08 11:10 次阅读

本文转自公众号,欢迎关注

RISC-V的Store AMO access fault调试实例 (qq.com)

前言

本文以一个实例分享RISC-V的Store AMO access fault异常的调试过程。Store AMO access fault主要发生在非法地址访问时(栈溢出,指针异常等)。

过程

现象是程序运行时进入了异常中断,如下

使用bt回溯可以看到进入了异常处理函数exception ()

(gdb) bt


......


#6 0x02002eb2 in exception () at src/lib/riscv/src/exception.c:55


#7 0x00000000 in ?? ()


Backtrace stopped: frame did not save the PC


(gdb)

那么首先想到的是确认异常原因

查看异常寄存器:info reg mcause

可以看到异常原因是0x07

图片

对应的是Store/AMO access fault 异常,这是一个写数据时的异常.

图片

那么接下来就要确认写哪个地方的数据错误了呢?

我们可以通过info reg mtval 查看mtval寄存器看到。

写0x28382ad0时产生了异常.

图片

那么什么时候写这个地址导致了异常呢,之前bt已经看不到回溯的地方了。

我们可以使用数据断点来监控

设置数据断点 watch (unsigned int )0x28382ad0

重新加载程序运行 load

c运行

看到断点停在了memset函数处,这印证了我们前面分析的是写数据导致的问题

图片

继续bt查看

图片

我们找到对应的代码处

图片

看下memset的参数,如果看不到可以在memset前打断点重新运行

图片

最终确认确实是栈初始化时写0x28382ad0这个地址的内容错误,原因是不具备写属性导致异常

(gdb) p pxStack


$8 = (StackType_t *) 0x28382ad0


(gdb)

图片

当然为什么这个地址不能写和这里没关系了,是另外一回事了,是我们的环境DDR的问题。

总结

以上是一个分析实例的过程,遇到类似问题可以参考。有几个关键点一是确认异常原因,异常访问的地址,然后通过数据断点确认什么时候访问了这个地址,到此基本就确认问题了,后面就顺藤摸瓜了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4993

    文章

    18362

    浏览量

    290116
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33641
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70378
  • RISC-V
    +关注

    关注

    41

    文章

    1935

    浏览量

    45191
收藏 人收藏

    评论

    相关推荐

    RISC-V指令异常调试实例

    本文以一个简单的实例介绍RISC-V指令异常的调试过程,思路都是一样的,遇到其他情况时分析过程也类似。
    的头像 发表于 06-08 10:50 1266次阅读
    <b class='flag-5'>RISC-V</b>指令异常<b class='flag-5'>调试</b><b class='flag-5'>实例</b>

    RISC-V PMP调试

    RISC-V PMP调试
    的头像 发表于 06-08 11:52 1347次阅读
    <b class='flag-5'>RISC-V</b> PMP<b class='flag-5'>调试</b>

    什么是RISC-V

    siFive搞RISC-V 赛昉搞RISC-V 香山搞RISC-V 到底什么是RISC-V? 先不问有什么用,RISC-V目前的能力来说,工
    发表于 02-02 10:41

    RISC-V工作模式及寄存器基本知识

    Instruction 0 3 Breakpoint 0 4 Load address misaligned 0 5 Load access fault 0 6 Store/AMO
    发表于 04-12 14:06

    为什么选择RISC-V

    RISC-V是一种开放式ISA(指令集体系结构),为处理器体系结构的创新开创了新纪元。RISC-V基金会由325多家成员公司组成。这是该技术的主要优势。软件架构师/固件工程师/软件开发
    发表于 07-27 17:38

    科普RISC-V生态架构(认识RISC-V)

    RISC-V 生态架构浅析前言RISC-V最近越来越多的出现在科技新闻中,大量的公司加入到RISC-V研究和生产中。在越来越多的RISC-V研究热下,毋容置疑的是
    发表于 08-02 11:50

    RISC-V你了解多少?

    之前不断看到关于RISC-V的内容,今天周末,也学习并整理了一份关于RISC-V的内容。1.RISC-V简介RISC:Reduced Instruction Set Computer,
    发表于 08-13 15:13

    ARM与RISC-V架构的区别是什么?

    2019年开始,RISC-V得到了越来越多的重视,原因有很多,ARM授权费高是关键的因素,下面就来说说关于ARM和RISC-V架构,以及相关的内容。 关于ARM 1991 年ARM 公司成立于英国
    发表于 04-25 09:13

    RISC-V是什么?如何去设计RISC-V处理器?

    RISC-V是什么?有哪些特点?如何去设计RISC-V处理器?
    发表于 06-18 09:24

    RISC-V是什么

    (刚刚投入芯片行业学习的新人,存在理解错误的地方欢迎指出,并探讨,还请多多包涵,谢谢!) RISC-V是区别于 INTEL x86架构、arm架构的另一种芯片内核架构。 RISC-V,主要区别于当代
    发表于 07-23 06:06

    RISC-V架构简介

    【摘要】 本文首先对RISC-V的架构做了简要的介绍,在此基础上实现了LiteOS在RISC-V架构上的适配过程的具体步骤,希望对你有所帮助。1 RISC-V架构简介RISC-V是一个
    发表于 07-28 07:46

    什么是RISC-VRISC-V指令具有哪些特点应用?

    什么是RISC-VRISC-V指令具有哪些特点应用?自己怎么才能设计出设计一套指令集?
    发表于 10-14 09:05

    RISC-V简介

    RISC-V简介  RISC-V 是一个自由和开放的 ISA(开源指令集架构),通过开放的标准协作实现处理器创新的新时代。RISC-V ISA在架构上提供了一个新的自由、可扩展的软件和硬件自由级别
    发表于 02-27 19:56

    RISC-V架构

      RISC-V架构  RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。  与大多数指令集相比,RISC-V指令集可以自由地
    发表于 04-03 15:29

    RISC-V 发展

    RISC-V 发展2015年成立了RISC-V基金会,这是个非营利性组织,主要为了维护和发展RISC-V。目前RISC-V的IP供应商大部分是国内的厂商,例如sifive、阿里平头哥、
    发表于 04-14 10:18