本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注
未對(duì)齊導(dǎo)致問(wèn)題案例 (qq.com)
前言
本文以一個(gè)實(shí)例,講解RISC-V未對(duì)齊訪問(wèn)導(dǎo)致的問(wèn)題.
未對(duì)齊導(dǎo)致的問(wèn)題很常見,本文以實(shí)例分享調(diào)試分析過(guò)程。
過(guò)程
現(xiàn)象是程序進(jìn)入了異常中斷函數(shù)exception()
先分部打端點(diǎn),結(jié)合step單步運(yùn)行,確認(rèn)執(zhí)行哪個(gè)函數(shù)的哪一句執(zhí)行后異常。
這里已經(jīng)確認(rèn)是rom_usb_uvc.c的984行執(zhí)行后異常。
在執(zhí)行異常的語(yǔ)句前打斷點(diǎn)
b rom_usb_uvc.c:984
再重新運(yùn)行到該處
顯示匯編界面layout split
stepi
按照匯編單步執(zhí)行
最終確認(rèn)執(zhí)行匯編指令
lw a2,0(a1)
后異常
查看此時(shí)寄存器a1
的值。
(gdb) info reg a1
a1 0x28429ddd 675454429
stepi
執(zhí)行完`lw a2,0(a1)``后進(jìn)入異常處理函數(shù)
查看此時(shí)mcause
寄存器
(gdb) info reg mcause
mcause 0x4 4
見 對(duì)應(yīng) 即 所以修改緩沖區(qū)按照WORD對(duì)齊。<
的<>.
Load address misaligned
。正是lw
指令寄存器a1
間接尋址非WORD
對(duì)齊地址0x28429ddd
導(dǎo)致。jpeg2usbpacket
函數(shù)傳入的指向緩沖區(qū)的指針參數(shù)非WORD
對(duì)齊導(dǎo)致。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5147文章
19626瀏覽量
316593 -
調(diào)試
+關(guān)注
關(guān)注
7文章
612瀏覽量
34642 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82773 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4379瀏覽量
64643 -
RISC-V
+關(guān)注
關(guān)注
46文章
2538瀏覽量
48594
發(fā)布評(píng)論請(qǐng)先 登錄
什么是RISC-V
rIsc-v的缺的是什么?
為什么選擇RISC-V?
什么是RISC-V? RISC-V指令具有哪些特點(diǎn)應(yīng)用?
RISC-V 發(fā)展
RISC-V未對(duì)齊訪問(wèn)導(dǎo)致問(wèn)題案例
RISC-V規(guī)范的演進(jìn) RISC-V何時(shí)爆發(fā)?
第一屆RISC-V中國(guó)峰會(huì)看點(diǎn) risc-v開發(fā)要怎么優(yōu)化risc-v指令集架構(gòu)代碼密度

RISC-V的挑戰(zhàn)分析
RISC-V學(xué)習(xí)筆記【1】RISC-V概述
openEuler加入RISC-V Landscape
RISC-V設(shè)計(jì)支持工具,支持RISC-V技術(shù)的基礎(chǔ)
RISC-V Summit China 2024 青稞RISC-V+接口PHY,賦能RISC-V高效落地

加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未來(lái) !

評(píng)論