chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

RISC-V指令異常調(diào)試實例

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-06-08 10:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文轉(zhuǎn)自公眾號,歡迎關(guān)注關(guān)于

RISC-V指令異常調(diào)試實例 (qq.com)

前言

本文以一個簡單的實例介紹RISC-V指令異常的調(diào)試過程,思路都是一樣的,遇到其他情況時分析過程也類似。

相關(guān)內(nèi)容參考《riscv-privileged-20211203.pdf》

過程

現(xiàn)象是程序執(zhí)行后進入了異常中斷,可以通過GDB的bt命令看到

#12 0x02002e9c in exception () at src/lib/riscv/src/exception.c:55


#13 0x02002b40 in is_exception ()


Backtrace stopped: frame did not save the PC


(gdb)

既然是進入了異常中斷,那么就需要確認到底是什么異常,

這可以通過mcause寄存器查看

(gdb) info reg mcause


mcause 0x2      0x2


(gdb)

可以看到是非法指令異常

那么我們就搜索文檔的Illegal instruction可以查看到所有可能導致Illegal instruction的原因。

圖片

我們搜到以下信息,即mtval寄存器保存了異常指令,mepc指向了異常指令

圖片

圖片

可以看到mepc的內(nèi)容是0,那么猜測應該是函數(shù)指針未初始化直接調(diào)用導致的

(gdb) info reg mtval


mtval 0x0      0x0


(gdb) info reg mepc


mepc 0x0      0x0


(gdb)

到這里基本就確認了方向了,可以重點看哪些地方有函數(shù)指針,或者逐步注釋函數(shù),或者逐步斷點定位即可。

這里很快就確認了是

是如下代碼導致

int xxx_ioctl(unsigned int dev_id, unsigned int cmd, void *data)
{


if (dev_id >= xxx_drv.dev_num)


return -1;


return xxx_drv.ops.ioctl(&(xxx_drv.dev[dev_id]), cmd, data);


}

查看函數(shù)指針正好是0

(gdb) p xxx_drv.ops.ioctl


$1 = (int (*)(struct xxx_dev_s *, unsigned int, void *)) 0x0


(gdb)

回溯代碼確認了是某個外設(shè)沒有初始化成功則這個回調(diào)函數(shù)沒有初始化。原因就定位了。

總結(jié)

對于異常的調(diào)試可以參考手冊《riscv-privileged-20211203.pdf》,從異常原因入手,逐漸反推,確認異常觸發(fā)點然后確定原因。

審核編輯:湯梓紅

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

    關(guān)注

    1

    文章

    616

    瀏覽量

    36464
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    612

    瀏覽量

    34727
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    737

    瀏覽量

    22880
  • RISC-V
    +關(guān)注

    關(guān)注

    46

    文章

    2572

    瀏覽量

    48829
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    正式的RISC-V基礎(chǔ)指令集架構(gòu)與特權(quán)架構(gòu)規(guī)范來了,RISC-V基金會已正式批準

    根據(jù)RISC-V基金會官網(wǎng)發(fā)布的公告,RISC-V 基金會宣布了批準RISC-V 基礎(chǔ)指令集架構(gòu)與特權(quán)架構(gòu)規(guī)范,為 RISC-V的可擴展性進
    的頭像 發(fā)表于 07-11 10:46 ?1w次閱讀

    RISC-V指令集架構(gòu)特點

    RISC-V是當下熱門的技術(shù),值得大家學習,這里分享一份關(guān)于RISC-V指令的內(nèi)容給大家。
    的頭像 發(fā)表于 10-14 09:08 ?4260次閱讀

    RISC-V的Store AMO access fault調(diào)試實例

    本文以一個實例分享RISC-V的Store AMO access fault異常調(diào)試過程。Store AMO access fault主要發(fā)生在非法地址訪問時(棧溢出,指針
    的頭像 發(fā)表于 06-08 11:10 ?6020次閱讀
    <b class='flag-5'>RISC-V</b>的Store AMO access fault<b class='flag-5'>調(diào)試</b><b class='flag-5'>實例</b>

    RISC-V PMP調(diào)試

    RISC-V PMP調(diào)試
    的頭像 發(fā)表于 06-08 11:52 ?2442次閱讀
    <b class='flag-5'>RISC-V</b> PMP<b class='flag-5'>調(diào)試</b>

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】RISC-V基礎(chǔ)整數(shù)指令

    第2章 RV32I:RISC-V基礎(chǔ)整數(shù)指令集 本章重點講解構(gòu)成RISC-V基礎(chǔ)整數(shù)指令集的基本指令
    發(fā)表于 01-31 21:10

    RISC-V基礎(chǔ)整數(shù)指令

    可以讀取32位。這些計數(shù)器包括了系統(tǒng)時間, 時鐘周期以及執(zhí)行的指令數(shù)目。在RISC-V指令集中,ecall指令用于向運行時環(huán)境發(fā)出請求,例如系統(tǒng)調(diào)用。
    發(fā)表于 07-27 22:25

    關(guān)于RISC-V學習路線圖推薦

    的編程方法。 學習RISC-V匯編語言 : 了解RISC-V匯編語言的語法和指令格式,編寫簡單的匯編程序。 調(diào)試與優(yōu)化 : 使用調(diào)試工具(如
    發(fā)表于 11-30 15:21

    RISC-V指令集概述

    RISC-V就是RISC的第五代指令集架構(gòu)。而RISC-V目標就是“成為一種完全開放的指令集架構(gòu),可被任何學術(shù)機構(gòu)或商業(yè)組織自由使用”。
    發(fā)表于 11-30 23:30

    RISC-V基礎(chǔ)指令詳解

    RISC-V中定義了六種指令類型,其中包括 R型指令 : 用于寄存器與寄存器之間算數(shù)運算的指令 I型指令 : 用于寄存器和立即數(shù)算術(shù)運算和讀
    發(fā)表于 12-29 18:47

    什么是RISC-V? RISC-V指令具有哪些特點應用?

    什么是RISC-V?RISC-V指令具有哪些特點應用?自己怎么才能設(shè)計出設(shè)計一套指令集?
    發(fā)表于 10-14 09:05

    RISC-V 發(fā)展

    不完善的地方,有傳言未來可能會形成x86、ARM、RISC-V三足鼎立的天下,但能夠形成這個局面,還需要大家的共同努力。RISC-V指令RISC-V
    發(fā)表于 04-14 10:18

    RISC-V調(diào)試標準及跟蹤技術(shù)

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

    簡單講講RISC-V指令集CPU的參數(shù)

    本次CPU采用32位RISC-V指令集架構(gòu)(一代是自己瞎編指令集)。指令集就是程序指令的集合,指引硬件如何設(shè)計、如何運行。
    的頭像 發(fā)表于 08-07 14:55 ?4122次閱讀
    簡單講講<b class='flag-5'>RISC-V</b><b class='flag-5'>指令</b>集CPU的參數(shù)

    RISC-V CPU調(diào)試機制的設(shè)計原理

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

    RISC-V調(diào)試和完善的跟蹤解決方案

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