0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RISC-V PMP調試

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-06-08 11:52 ? 次閱讀

本文轉自公眾號,歡迎關注

RISC-V PMP調試 (qq.com)

PMP導致異常問題分析

現(xiàn)象和確認異常原因

觸發(fā)了異常中斷

查看異常原因為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字節(jié)區(qū)域,即pmpaddrxx對應的4字節(jié)區(qū)域

圖片

L=1

A=10=2 NA4

R=1

X=0

W=0

圖片

圖片

對應pmp13cfg的pmpaddr13=0xa0e0ab4 是34位地址右移2位的值,所以左移兩位恢復實際值是0x2C38 2AD0

圖片

表示的范圍是[0x2C38 2AD0,0x2C38 2AD3] 4字節(jié)

圖片

我們的地址空間是0x28000000-0x2bffffff

寫0x2C38 2AD0實際映射到了寫0x2838 2AD0 64M繞回。

所以寫0x2838 2AD0這個不具備寫屬性的地址觸發(fā)了store access-fault

exception.異常

所以以上確認了原因是PMP設置了該地址不具備寫屬性,而代碼中去寫所以導致了異常。

代碼

我們的空間最多只有128M,最多到0x2bff ffff,為什么寫了個0x2C38 2AD0的地址進去,

先找到對應的代碼

由于是用的所以13的配置,所以先找這個索引對應

#define PMP_FIXED_INDEX_TASK_STACK 13

然后再搜索這個索引

找到如下函數(shù)

圖片

這個函數(shù)在vTaskSwitchContext調用

if (prev != pxCurrentTCB) {


          pmp_task_stack_set((uint32_t)pxCurrentTCB- >pxStack);


      }

即任務有切換時,設置棧底4字節(jié)不可寫,用于棧溢出檢測。

加個死循環(huán)用于在設置該值時停住

圖片

圖片

所以要確認什么時候寫了0x2838 2AD0這個地址,由于使能了PMP,所以watchpoint抓不到,先觸發(fā)了pmp的異常。

所以先關閉pmp設置

if (prev != pxCurrentTCB) {


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


      }

然后設置數(shù)據斷點

watch (unsigned int )0x28382ad0

運行

第一次停在棧初始化,第二次停在如下處

圖片

可以看到

任務棧的地址是 0x28382ad0開始但是 臨時變量mem的地址是0x28382a60在棧前面去了,所以棧溢出了。

圖片

圖片

把棧改大即可

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5059

    文章

    18973

    瀏覽量

    302042
  • 調試
    +關注

    關注

    7

    文章

    571

    瀏覽量

    33872
  • PMP
    PMP
    +關注

    關注

    0

    文章

    45

    瀏覽量

    18131
  • RISC-V
    +關注

    關注

    44

    文章

    2204

    瀏覽量

    45958
收藏 人收藏

    評論

    相關推薦

    RISC-V指令異常調試實例

    本文以一個簡單的實例介紹RISC-V指令異常的調試過程,思路都是一樣的,遇到其他情況時分析過程也類似。
    的頭像 發(fā)表于 06-08 10:50 ?1796次閱讀
    <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目前的能力來說,工
    發(fā)表于 02-02 10:41

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

    量產芯片的關鍵技術;公司籌備了第二屆RISC-V中國峰會的南京會場;青稞RISC-V的單雙線調試技術,在第三屆峰會上入選RISC-V新技術與新成果。 02 連接聯(lián)網連世界 有核有根有
    發(fā)表于 08-30 17:37

    玄鐵VirtualZone:基于RISC-V架構的安全擴展

    的TrustZone、Intel的SGX以及AMD的SEV等。本文主要描述基于RISC-V架構的玄鐵C系列處理器的安全擴展,該擴展主要基于RISC-V架構提供的PMP保護機制和多層特權模型,虛擬出多個
    發(fā)表于 09-01 14:38

    RISC-V規(guī)范的演進 RISC-V何時爆發(fā)?

    RISC-V的關注度越來越高,開源的理念也正在被越來越多的開發(fā)者和公司接受。對于尚不成熟的RISC-V而言,無論是規(guī)范和技術的演進還是生態(tài)的建設,還有人才和專利都還有不小挑戰(zhàn)。2021年RISC-V
    的頭像 發(fā)表于 02-11 10:10 ?3121次閱讀

    RISC-V調試標準及跟蹤技術

    本文主要詳細介紹了RISC-V調試標準以及RISC-V的跟蹤技術,感興趣的小伙伴跟小編一起了解一下吧。
    的頭像 發(fā)表于 06-23 17:19 ?2876次閱讀
    <b class='flag-5'>RISC-V</b>的<b class='flag-5'>調試</b>標準及跟蹤技術

    使用Eclipse和MCUXpresso IDE調試RV32M1-VEGA RISC-V開發(fā)板

    使用Eclipse和MCUXpresso IDE調試RV32M1-VEGA RISC-V開發(fā)板
    發(fā)表于 12-06 20:06 ?7次下載
    使用Eclipse和MCUXpresso IDE<b class='flag-5'>調試</b>RV32M1-VEGA <b class='flag-5'>RISC-V</b>開發(fā)板

    RISC-V CPU調試機制的設計原理

    本文將詳細介紹RISC-V CPU調試機制的設計原理。
    發(fā)表于 10-18 09:19 ?2147次閱讀

    RISC-V學習筆記【1】RISC-V概述

    國產處理器芯片起步較晚,從2013年至今,集成電路每年的進口額均超過了 2000 億美元。RISC-V和AI(人工智能)芯片是我國最有希望突破的領域之一。RISC-V使用的領域還是對于生態(tài)依賴比較
    發(fā)表于 11-24 09:28 ?2571次閱讀

    RISC-VRISC-V AI的未來(特邀講座)

    主題演講:RISC-VRISC-V AI的未來(特邀講座)ppt分享
    發(fā)表于 07-14 17:15 ?15次下載

    RISC-V調試和完善的跟蹤解決方案

    RISC-V調試和完善的跟蹤解決方案ppt分享
    發(fā)表于 07-14 17:15 ?0次下載

    RISC-V設計支持工具,支持RISC-V技術的基礎

    RISC-V設計支持工具,支持RISC-V技術的基礎 ppt分享
    發(fā)表于 07-14 17:15 ?12次下載

    Imagination CPU 系列研討會 | RISC-V 平臺的性能分析和調試

    為了讓開發(fā)者及工程師深入了解Imagination的CPU產品及相關解決方案,Imagination將陸續(xù)推出5期線上研討會,包含:RISC-V平臺的性能分析和調試;RISC-V安全和全球平臺可信
    的頭像 發(fā)表于 08-10 08:28 ?233次閱讀
    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新技術與新成果。
    的頭像 發(fā)表于 08-30 18:18 ?1327次閱讀
    <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,您將
    的頭像 發(fā)表于 09-10 08:08 ?281次閱讀
    加入全球 <b class='flag-5'>RISC-V</b> Advocate 行列,共筑 <b class='flag-5'>RISC-V</b> 的未來 !