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

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

3天内不再提示

RISC-V PMP调试

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

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

RISC-V PMP调试 (qq.com)

PMP导致异常问题分析

现象和确认异常原因

触发了异常中断

查看异常原因为7 store access-fault exception.

并查看异常访问的地址为0x28382ad0

图片

gdb也确认这个地址确实只能读不能写

图片

图片

查看PMP寄存器确认根本原因

图片

Pmpcfg0 对应地址pmp0cfg~pmp3cfg

Pmpcfg1 对应地址pmp4cfg~pmp7cfg

Pmpcfg2 对应地址pmp8cfg~pmp11cfg

Pmpcfg3 对应地址pmp12cfg~pmp15cfg

pmpcfg3为0x5100即对应pmp13cfg为0x51

8位的配置属性0x51如下 只读

A=10 即NA4表示4字节区域,即pmpaddrxx对应的4字节区域

图片

L=1

A=10=2 NA4

R=1

X=0

W=0

图片

图片

对应pmp13cfg的pmpaddr13=0xa0e0ab4 是34位地址右移2位的值,所以左移两位恢复实际值是0x2C38 2AD0

图片

表示的范围是[0x2C38 2AD0,0x2C38 2AD3] 4字节

图片

我们的地址空间是0x28000000-0x2bffffff

写0x2C38 2AD0实际映射到了写0x2838 2AD0 64M绕回。

所以写0x2838 2AD0这个不具备写属性的地址触发了store access-fault

exception.异常

所以以上确认了原因是PMP设置了该地址不具备写属性,而代码中去写所以导致了异常。

代码

我们的空间最多只有128M,最多到0x2bff ffff,为什么写了个0x2C38 2AD0的地址进去,

先找到对应的代码

由于是用的所以13的配置,所以先找这个索引对应

#define PMP_FIXED_INDEX_TASK_STACK 13

然后再搜索这个索引

找到如下函数

图片

这个函数在vTaskSwitchContext调用

if (prev != pxCurrentTCB) {


          pmp_task_stack_set((uint32_t)pxCurrentTCB- >pxStack);


      }

即任务有切换时,设置栈底4字节不可写,用于栈溢出检测

加个死循环用于在设置该值时停住

图片

图片

所以要确认什么时候写了0x2838 2AD0这个地址,由于使能了PMP,所以watchpoint抓不到,先触发了pmp的异常。

所以先关闭pmp设置

if (prev != pxCurrentTCB) {


          ///pmp_task_stack_set((uint32_t)pxCurrentTCB- >pxStack);


      }

然后设置数据断点

watch (unsigned int )0x28382ad0

运行

第一次停在栈初始化,第二次停在如下处

图片

可以看到

任务栈的地址是 0x28382ad0开始但是 临时变量mem的地址是0x28382a60在栈前面去了,所以栈溢出了。

图片

图片

把栈改大即可

审核编辑:汤梓红

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

    关注

    5068

    文章

    19013

    浏览量

    303121
  • 调试
    +关注

    关注

    7

    文章

    572

    浏览量

    33893
  • PMP
    PMP
    +关注

    关注

    0

    文章

    45

    浏览量

    18137
  • RISC-V
    +关注

    关注

    44

    文章

    2228

    浏览量

    46007
收藏 人收藏

    评论

    相关推荐

    RISC-V指令异常调试实例

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

    什么是RISC-V

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

    RISC-V Summit China 2024 | 青稞RISC-V+接口PHY,赋能RISC-V高效落地

    量产芯片的关键技术;公司筹备了第二届RISC-V中国峰会的南京会场;青稞RISC-V的单双线调试技术,在第三届峰会上入选RISC-V新技术与新成果。 02 连接联网连世界 有核有根有
    发表于 08-30 17:37

    玄铁VirtualZone:基于RISC-V架构的安全扩展

    的TrustZone、Intel的SGX以及AMD的SEV等。本文主要描述基于RISC-V架构的玄铁C系列处理器的安全扩展,该扩展主要基于RISC-V架构提供的PMP保护机制和多层特权模型,虚拟出多个
    发表于 09-01 14:38

    RISC-V规范的演进 RISC-V何时爆发?

    RISC-V的关注度越来越高,开源的理念也正在被越来越多的开发者和公司接受。对于尚不成熟的RISC-V而言,无论是规范和技术的演进还是生态的建设,还有人才和专利都还有不小挑战。2021年RISC-V
    的头像 发表于 02-11 10:10 3141次阅读

    RISC-V调试标准及跟踪技术

    本文主要详细介绍了RISC-V调试标准以及RISC-V的跟踪技术,感兴趣的小伙伴跟小编一起了解一下吧。
    的头像 发表于 06-23 17:19 2895次阅读
    <b class='flag-5'>RISC-V</b>的<b class='flag-5'>调试</b>标准及跟踪技术

    使用Eclipse和MCUXpresso IDE调试RV32M1-VEGA RISC-V开发板

    使用Eclipse和MCUXpresso IDE调试RV32M1-VEGA RISC-V开发板
    发表于 12-06 20:06 7次下载
    使用Eclipse和MCUXpresso IDE<b class='flag-5'>调试</b>RV32M1-VEGA <b class='flag-5'>RISC-V</b>开发板

    RISC-V CPU调试机制的设计原理

    本文将详细介绍RISC-V CPU调试机制的设计原理。
    发表于 10-18 09:19 2167次阅读

    RISC-V学习笔记【1】RISC-V概述

    国产处理器芯片起步较晚,从2013年至今,集成电路每年的进口额均超过了 2000 亿美元。RISC-V和AI(人工智能)芯片是我国最有希望突破的领域之一。RISC-V使用的领域还是对于生态依赖比较
    发表于 11-24 09:28 2584次阅读

    RISC-VRISC-V AI的未来(特邀讲座)

    主题演讲:RISC-VRISC-V AI的未来(特邀讲座)ppt分享
    发表于 07-14 17:15 16次下载

    RISC-V调试和完善的跟踪解决方案

    RISC-V调试和完善的跟踪解决方案ppt分享
    发表于 07-14 17:15 0次下载

    RISC-V设计支持工具,支持RISC-V技术的基础

    RISC-V设计支持工具,支持RISC-V技术的基础 ppt分享
    发表于 07-14 17:15 12次下载

    Imagination CPU 系列研讨会 | RISC-V 平台的性能分析和调试

    为了让开发者及工程师深入了解Imagination的CPU产品及相关解决方案,Imagination将陆续推出5期线上研讨会,包含:RISC-V平台的性能分析和调试RISC-V安全和全球平台可信
    的头像 发表于 08-10 08:28 246次阅读
    Imagination CPU 系列研讨会 | <b class='flag-5'>RISC-V</b> 平台的性能分析和<b class='flag-5'>调试</b>

    RISC-V Summit China 2024 青稞RISC-V+接口PHY,赋能RISC-V高效落地

    第二届RISC-V中国峰会的南京会场;青稞RISC-V的单双线调试技术,在第三届峰会上入选RISC-V新技术与新成果。
    的头像 发表于 08-30 18:18 1368次阅读
    <b class='flag-5'>RISC-V</b> Summit China 2024  青稞<b class='flag-5'>RISC-V</b>+接口PHY,赋能<b class='flag-5'>RISC-V</b>高效落地

    加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未来 !

    加入RISC-VAdvocate行列!我们正在寻找来自世界各地的RISC-V爱好者,通过全球推广和参与,成为支持RISC-V进步的关键参与者。作为一名RISC-VAdvocate,您将
    的头像 发表于 09-10 08:08 306次阅读
    加入全球 <b class='flag-5'>RISC-V</b> Advocate 行列,共筑 <b class='flag-5'>RISC-V</b> 的未来 !