女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

嵌入式USB開發(fā) ? 來(lái)源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-06-08 10:50 ? 次閱讀

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

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

前言

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

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

過(guò)程

現(xiàn)象是程序執(zhí)行后進(jìn)入了異常中斷,可以通過(guò)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)

既然是進(jìn)入了異常中斷,那么就需要確認(rèn)到底是什么異常,

這可以通過(guò)mcause寄存器查看

(gdb) info reg mcause


mcause 0x2      0x2


(gdb)

可以看到是非法指令異常

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

圖片

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

圖片

圖片

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

(gdb) info reg mtval


mtval 0x0      0x0


(gdb) info reg mepc


mepc 0x0      0x0


(gdb)

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

這里很快就確認(rèn)了是

是如下代碼導(dǎo)致

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)

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

總結(jié)

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

審核編輯:湯梓紅

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

    關(guān)注

    1

    文章

    614

    瀏覽量

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

    關(guān)注

    7

    文章

    603

    瀏覽量

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

    關(guān)注

    5

    文章

    725

    瀏覽量

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

    關(guān)注

    46

    文章

    2472

    瀏覽量

    48204
收藏 人收藏

    評(píng)論

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

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

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

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

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

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

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

    RISC-V PMP調(diào)試

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

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

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

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

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

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

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

    RISC-V指令集概述

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

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

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

    什么是RISC-VRISC-V指令具有哪些特點(diǎn)應(yīng)用?

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

    RISC-V 發(fā)展

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

    RISC-V調(diào)試標(biāo)準(zhǔn)及跟蹤技術(shù)

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

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

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

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

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

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

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