T-BDT 004-2024 RISC-V 單線調(diào)試接口技術(shù)要求_第1頁
T-BDT 004-2024 RISC-V 單線調(diào)試接口技術(shù)要求_第2頁
T-BDT 004-2024 RISC-V 單線調(diào)試接口技術(shù)要求_第3頁
T-BDT 004-2024 RISC-V 單線調(diào)試接口技術(shù)要求_第4頁
T-BDT 004-2024 RISC-V 單線調(diào)試接口技術(shù)要求_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

ICS35.240.01CCSL70BDTIT/BDT004—2024前言 2規(guī)范性引用文件 3術(shù)語和定義 4縮略語 25基本結(jié)構(gòu) 25.1調(diào)試模塊(DM) 25.2調(diào)試模塊接口(DMI) 25.3調(diào)試傳輸模塊(DTM) 35.4調(diào)試系統(tǒng)簡易框圖 36調(diào)試傳輸協(xié)議規(guī)范 36.1概述 36.2數(shù)據(jù)包格式 36.2.1NewPacket 36.2.2BypPacket 36.2.3數(shù)據(jù)包訪問格式 46.3位定義 46.3.1位定義的判斷依據(jù) 46.3.2速度模式 46.4調(diào)試接口寄存器 56.4.1調(diào)試接口寄存器類型 56.4.2能力寄存器(CPBR) 56.4.3配置寄存器(CFGR) 66.4.4影子配置寄存器(SHDWCFGR) 66.5配置實例 77調(diào)試模塊 77.1調(diào)試操作 77.2調(diào)試模塊寄存器類型 77.2.1概述 77.2.2數(shù)據(jù)寄存器0(data0) 87.2.3數(shù)據(jù)寄存器1(data1) 87.2.4調(diào)試模塊控制寄存器(dmcontrol) 87.2.5調(diào)試模塊狀態(tài)寄存器(dmstatus) 97.2.6微處理器狀態(tài)寄存器(hartinfo) 97.2.7抽象命令控制與狀態(tài)寄存器(abstractcs) 97.2.8抽象命令寄存器(command) 7.2.9抽象命令自動執(zhí)行寄存器(abstractauto) 7.2.10指令緩存寄存器(progbufx) T/BDT004—20247.2.11暫停狀態(tài)寄存器(haltsum0) 7.2.12調(diào)試控制和狀態(tài)寄存器(dcsr) 7.2.13調(diào)試模式程序指針(dpc) 7.3操作實例 附錄A(資料性)配置實例 13A.1配置實例描述 A.1.1使能從機輸出 A.1.2配置時基分頻系數(shù)為1分頻 A.1.3復(fù)位調(diào)試接口 附錄B(資料性)操作實例 14B.1暫停微處理器 B.2恢復(fù)微處理器 B.3復(fù)位微處理器 B.3.1復(fù)位后微處理器重新運行 B.3.2復(fù)位后微處理器立即暫停 B.4復(fù)位調(diào)試模塊 B.5讀/寫通用寄存器(GPR) B.5.1讀GPR,以x16為例 B.5.2寫GPR,以x16為例 B.6讀/寫控制和狀態(tài)寄存器(CSR) B.6.1讀CSR,以mepc為例,其CSR地址為0x341 B.6.2寫CSR,以mepc為例,其CSR地址為0x341 B.7讀/寫存儲器 B.7.1描述 B.7.2存儲器讀 B.7.3存儲器寫 B.8單步執(zhí)行 B.9設(shè)置軟件斷點 參考文獻(xiàn) T/BDT004—2024本文件按照GB/T1.1—2020《標(biāo)準(zhǔn)化工作導(dǎo)則第1部分:標(biāo)準(zhǔn)化文件的結(jié)構(gòu)和起草規(guī)則》的規(guī)定起草。請注意本文件的某些內(nèi)容可能涉及專利。本文件的發(fā)布機構(gòu)不承擔(dān)識別專利的責(zé)任。本文件由中國半導(dǎo)體行業(yè)協(xié)會提出并歸口。本文件起草單位:南京沁恒微電子股份有限公司、東南大學(xué)、南京大學(xué)、中國科學(xué)院軟件研究所、宏晶微電子科技股份有限公司、深圳前沿標(biāo)準(zhǔn)技術(shù)服務(wù)有限公司。本文件主要起草人:楊勇、李天培、闕慶河、凌明、杜力、邢明杰、張宏達(dá)、何睿、劉偉、宇偉。1T/BDT004—2024RISC-V單線調(diào)試接口技術(shù)要求本文件規(guī)定了RISC-V單線調(diào)試接口的調(diào)試傳輸協(xié)議,調(diào)試模塊及其操作方法。本文件適用于RISC-V單線調(diào)試的規(guī)范和對微處理器的在線調(diào)試。2規(guī)范性引用文件本文件沒有規(guī)范性引用文件。3術(shù)語和定義下列術(shù)語和定義適用于本文件。3.1調(diào)試模塊debugmodule可實現(xiàn)抽象的調(diào)試操作和特定實現(xiàn)轉(zhuǎn)換的模塊,能夠?qū)崿F(xiàn)微處理器的暫停和運行,可通過抽象命令、programbuffer部署指令等方式訪問微處理器的GPRs、CSRs、儲存器、外部設(shè)備等。3.2調(diào)試模塊控制寄存器dmcontrol用于控制調(diào)試模塊及當(dāng)前選定內(nèi)核的一種寄存器。3.3調(diào)試模塊狀態(tài)寄存器dmstatus用于指示調(diào)試模塊及當(dāng)前選定內(nèi)核狀態(tài)的一種寄存器3.4微處理器狀態(tài)寄存器hartinfo用于向調(diào)試主機提供微處理器的信息的一種只讀寄存器。3.5抽象命令控制與狀態(tài)寄存器abstractcs用于指示抽象命令執(zhí)行的情況的一種寄存器,調(diào)試主機可通過讀取該寄存器,了解上一個抽象命令是否執(zhí)行完畢,并且可檢查抽象命令執(zhí)行過程中是否產(chǎn)生錯誤以及錯誤的類型。3.6抽象命令寄存器command調(diào)試主機可通過抽象命令寄存器中寫入不同的配置值,生成對應(yīng)的抽象命令,實現(xiàn)對寄存器及存儲器的訪問。3.7抽象命令自動執(zhí)行寄存器abstractauto用于配置抽象命令自動執(zhí)行的一種寄存器,當(dāng)對調(diào)試模塊的progbufx和datax進行讀寫時,抽象命令可再次被執(zhí)行。3.8指令緩存寄存器progbufx用于存放任意指令,部署相應(yīng)操作的一種寄存器,最后一條執(zhí)行需要是“ebreak”或者“c.ebreak”。3.9暫停狀態(tài)寄存器haltsum0用于指示微處理器是否暫停,每一位指示一個微處理器的暫停狀態(tài)的一種寄存器,當(dāng)只有一個核時,僅用該寄存器最低位表示。2T/BDT004—20243.10調(diào)試控制和狀態(tài)寄存器dcsr用于控制和指示調(diào)試模式下的動作和狀態(tài)的一種寄存器。3.11調(diào)試模式程序指針dpc用于保存微處理器進入調(diào)試模式之后將要執(zhí)行的下一條指令的地址的一種寄存器。3.12讀/寫通用寄存器GPR抽象命令支持對微處理器進行讀寫的一種通用寄存器。3.13讀/寫控制和狀態(tài)寄存器CSR抽象命令支持對微處理器進行讀寫的控制和狀態(tài)寄存器。4縮略語下列縮略語適用于本文件。abstractauto:抽象命令自動執(zhí)行(abstractcommandautoexec)abstractcs:抽象命令狀態(tài)寄存器(abstractcontrolandstatusregister)CFGR:配置寄存器(configurationregister)CPBR:能力寄存器(capabilityregister)command:抽象命令寄存器(abstractcommandregister)DM:調(diào)試模塊(DebugModule)DMI:調(diào)試模塊接口(DebugModuleInterface)DTM:調(diào)試傳輸模塊(DebugTransportModule)data0:數(shù)據(jù)寄存器0(dataregister0)data1:數(shù)據(jù)寄存器1(dataregister1)dcsr:調(diào)試控制和狀態(tài)寄存器(debugcontrolandstatusregister)dmcontrol:調(diào)試模塊控制寄存器(debugmodulecontrolregister)dmstatus:調(diào)試模塊狀態(tài)寄存器(debugmodulestatusregister)dpc:調(diào)試模式程序指針(debugPC)haltsum0:暫停狀態(tài)寄存器(haltsummary0)hartinfo:微處理器狀態(tài)寄存器(hartinforegister)progbufx:指令緩存寄存器(programbufferx)RISC:精簡指令集(ReducedInstructionSetComputer)RISC-V:第五代精簡指令集(FifthgenerationReducedInstructionSetComputing)SHDWCFGR:影子配置寄存器(shadowconfigurationregister)5基本結(jié)構(gòu)5.1調(diào)試模塊(DM)5.1.1調(diào)試模塊應(yīng)用于實現(xiàn)抽象的調(diào)試操作和特定實現(xiàn)之間的轉(zhuǎn)換。調(diào)試模塊是稱為調(diào)試模塊接口(DMI)的總線的從設(shè)備,總線主設(shè)備是調(diào)試傳輸模塊(DTM)。5.1.2調(diào)試模塊可實現(xiàn)微處理器的暫停、復(fù)位、恢復(fù)等功能。5.1.3調(diào)試模塊應(yīng)通過單線調(diào)試接口和調(diào)試傳輸設(shè)備通訊。5.1.4應(yīng)通過DMI訪問DM寄存器,通過寄存器的訪問完成整個調(diào)試過程。5.2調(diào)試模塊接口(DMI)3T/BDT004—2024調(diào)試模塊接口可以是包含一個主總線和一個從總線的普通總線,也可以使用功能更齊全的總線,DMI應(yīng)使用7到32個地址位,它支持讀寫操作。5.3調(diào)試傳輸模塊(DTM)5.3.1調(diào)試傳輸模塊通過一種或多種傳輸方式(例如:JTAG或者USB)對調(diào)試模塊提供訪問。5.3.2調(diào)試傳輸設(shè)備和調(diào)試主機應(yīng)使用接口通訊,并通過單線接口和調(diào)試模塊通訊,以控制和查詢微處理器狀態(tài),實現(xiàn)調(diào)試功能。示例框圖見5.4。5.3.3可通過抽象命令或者ProgramBuffer的方式訪問處理器內(nèi)部,處理器內(nèi)部包括:a)通用寄存器(GPRs);b)控制狀態(tài)寄存器(CSRs);c)存儲器或映射為特定功能的外設(shè)等。5.4調(diào)試系統(tǒng)簡易框圖以支持RISC-V單線調(diào)試的微處理器為例。見圖1所示。圖1調(diào)試系統(tǒng)框圖6調(diào)試傳輸協(xié)議規(guī)范6.1概述6.1.1調(diào)試傳輸設(shè)備和調(diào)試模塊之間應(yīng)采用單線傳輸?shù)姆绞竭M行通訊。6.1.2傳輸協(xié)議定義了訪問調(diào)試模塊相關(guān)寄存器的數(shù)據(jù)包格式,其結(jié)構(gòu)應(yīng)符合6.2的格式要求。6.2數(shù)據(jù)包格式6.2.1NewPacketNewPacket結(jié)構(gòu)組成應(yīng)符合以下要求:d)1bit起始位,固定為數(shù)據(jù)1;e)7bit地址位,設(shè)置訪問寄存器地址,MSB優(yōu)先;f)1bit讀寫控制位,1主機寫,0主機讀;g)32bit數(shù)據(jù),MSB優(yōu)先;h)1bit偶校驗位,該位為可選數(shù)據(jù)位,若數(shù)據(jù)位最后一位后直接發(fā)送停止符,則不進行校驗位傳輸。6.2.2BypPacket4T/BDT004—2024BypPacket結(jié)構(gòu)組成應(yīng)符合以下要求:a)1bit起始位,固定為數(shù)據(jù)0;b)32bit數(shù)據(jù)位,MSB優(yōu)先,讀寫位和寄存器地址與最近一次的NewPacket傳輸相同;c)1bit偶校驗位,該位為可選數(shù)據(jù)位,若數(shù)據(jù)位最后一位后直接發(fā)送停止符,則不進行校驗位傳輸。6.2.3數(shù)據(jù)包訪問格式對調(diào)試模塊寄存器操作應(yīng)按照圖2所示格式進行訪問。NewPacket和BypPacket組合實現(xiàn)對某個寄存器的讀寫,連續(xù)讀或?qū)懙炔僮鳌D2數(shù)據(jù)包格式6.3位定義6.3.1位定義的判斷依據(jù)單線接口應(yīng)使用電平的高低和持續(xù)時間來表示數(shù)據(jù)位、停止位。總線空閑時為高電平,當(dāng)總線低電平持續(xù)一定時間,應(yīng)表示復(fù)位信號。6.3.2速度模式6.3.2.1快速模式1X設(shè)從機調(diào)試接口時鐘周期為T,時序應(yīng)如圖3所示:a)停止位:持續(xù)高電平10T,將產(chǎn)生停止位;b)數(shù)據(jù)1:低電平時間(T,2T),高電平時間(T,8T);c)數(shù)據(jù)0:低電平時間(4T,32T),高電平時間(T,8T)。圖3快速模式信號時序6.3.2.2普通模式2X設(shè)從機調(diào)試接口時鐘周期為T,時序應(yīng)如圖4所示,該模式為復(fù)位后默認(rèn)模式:a)停止位:持續(xù)高電平18T,將產(chǎn)生停止位;b)數(shù)據(jù)1:低電平時間(T,4T),高電平時間(T,16T);c)數(shù)據(jù)0:低電平時間(6T,64T),高電平時間(T,16T)。5T/BDT004—2024圖4中速模式信號時序6.4調(diào)試接口寄存器6.4.1調(diào)試接口寄存器類型6.3.2中規(guī)定的調(diào)試接口速度模式及使能應(yīng)由相關(guān)寄存器進行配置。寄存器應(yīng)使用7位地址進行編碼,分類見表1。表1調(diào)試接口寄存器6.4.2能力寄存器(CPBR)能力寄存器定義應(yīng)符合表2規(guī)定。位0009080:調(diào)試從機不具有CRC8校驗功能,僅偶校0006T/BDT004—2024表2能力寄存器(CPBR)6.4.3配置寄存器(CFGR)配置寄存器定義應(yīng)符合表3規(guī)定。表3配置寄存器(CFGR)位00009080:調(diào)試從機不具有CRC8校驗功能,僅偶校00006.4.4影子配置寄存器(SHDWCFGR)影子配置寄存器定義應(yīng)符合表4規(guī)定。表4影子配置寄存器(SHDWCFGR)位00007T/BDT004—2024位9080:調(diào)試從機不具有CRC8校驗功能,僅偶校00006.5配置實例6.5.1主機可通過6.4.3中規(guī)定的配置寄存器CFGR和6.4.4中規(guī)定的影子配置寄存器SHDWCFGR,配合設(shè)置調(diào)試接口的能力,并通過6.4.2中定義的能力寄存器CPBR查詢是否生效。6.5.2設(shè)置時應(yīng)先設(shè)置SHDWCFGR對應(yīng)位,再將CFGR對應(yīng)位域置位,即可設(shè)置影子配置寄存器的對應(yīng)配置位生效,其他配置位不變。6.5.3相關(guān)實例詳見附錄A。7調(diào)試模塊7.1調(diào)試操作流程調(diào)試模塊能執(zhí)行調(diào)試主機下發(fā)的調(diào)試操作,包括:a)通過調(diào)試接口訪問寄存器;b)通過調(diào)試接口可使微處理器復(fù)位、暫停、恢復(fù);c)通過調(diào)試接口讀寫存儲器、指令寄存器以及外部設(shè)備;d)通過調(diào)試接口可部署多條任意指令;7.2調(diào)試模塊寄存器類型7.2.1概述7.2.1.1調(diào)試模塊內(nèi)部寄存器應(yīng)使用7位地址編碼。7.2.1.2微處理器內(nèi)部實現(xiàn)了以下寄存器,調(diào)試模塊寄存器種類應(yīng)符合表5的規(guī)定。表5調(diào)試模塊寄存器列表8T/BDT004—20247.2.1.3調(diào)試主機可通過配置dmcontrol寄存器控制微處理器的暫停、恢復(fù)、復(fù)位等,也可通過command寄存器觸發(fā)調(diào)試模塊生成抽象命令。7.2.1.4RISC-V標(biāo)準(zhǔn)定義三種抽象命令類型:訪問寄存器、快速訪問、訪問存儲器。7.2.1.5調(diào)試模塊內(nèi)部實現(xiàn)了八個指令緩存寄存器progbuf0-7,調(diào)試主機可向緩沖區(qū)緩存多條指令(可以是壓縮指令可選擇執(zhí)行完抽象命令后繼續(xù)執(zhí)行指令緩存寄存器中的指令,也可直接執(zhí)行緩存的指令。7.2.1.6progbufs中指令小于32字節(jié),則需要最后一條指令是一條“ebreak”或“c.ebreak”指令,若指令填滿32字節(jié),調(diào)試模塊自動添加一條“ebreak”指令。調(diào)試主機也可通過抽象命令和progbufs中緩存的指令,實現(xiàn)儲存器、外設(shè)等的訪問。7.2.2數(shù)據(jù)寄存器0(data0)數(shù)據(jù)寄存器0的定義應(yīng)符合表6規(guī)定。表6data0寄存器定義位07.2.3數(shù)據(jù)寄存器1(data1)數(shù)據(jù)寄存器1的定義應(yīng)符合表7規(guī)定。表7data1寄存器定義位07.2.4調(diào)試模塊控制寄存器(dmcontrol)調(diào)試主機向?qū)?yīng)的字段寫數(shù)據(jù),即可實現(xiàn)5.2.4中調(diào)試模塊對寄存器的暫停(haltreq)、復(fù)位(ndmreset)、恢復(fù)(resumereq)的功能。各位描述應(yīng)符合表8規(guī)定。表8dmcontrol寄存器定義位0000010009T/BDT004—2024位7.2.5調(diào)試模塊狀態(tài)寄存器(dmstatus)描述應(yīng)符合表9規(guī)定。表9dmstatus寄存器定義位00000000009080707.2.6微處理器狀態(tài)寄存器(hartinfo)各個位描述應(yīng)符合表10規(guī)定。表10hartinfo寄存器定義位00數(shù)據(jù)寄存器data0偏移地址,其基地址為7.2.7抽象命令控制與狀態(tài)寄存器(abstractcs)詳細(xì)描述應(yīng)符合表11的規(guī)定。表11abstractcs寄存器定義T/BDT004—2024位0表示programbuffer程000abstractcs、abstractauto寄存器進行寫或者100:微處理器未暫停或不可用,而不能執(zhí)行抽007.2.8抽象命令寄存器(command)調(diào)試操作應(yīng)符合7.1中的b)說明。當(dāng)對寄存器訪問時command寄存器各位定義應(yīng)符合表12規(guī)定。表12訪問寄存器時command寄存器定義位000000write007.2.9抽象命令自動執(zhí)行寄存器(abstractauto)該寄存器的描述應(yīng)符合表13規(guī)定。表13abstractauto寄存器定義T/BDT004—2024位若某位置1,相應(yīng)對progbufx的讀寫將導(dǎo)致command寄存器中抽象命令再次被執(zhí)行00將導(dǎo)致command寄存器中的抽象命令再次07.2.10指令緩存寄存器(progbufx)當(dāng)progbufx共8個,能夠存儲共32B字節(jié)指令,當(dāng)不滿32B時,需要最后一條指令是“break”指令,當(dāng)存滿32B時,模塊自動在最后添加“ebreak”指令。寄存器定義應(yīng)符合表14規(guī)定。表14progbuf寄存器定義位07.2.11暫停狀態(tài)寄存器(haltsum0)寄存器定義應(yīng)符合表15規(guī)定。表15haltsum0寄存器定義位0007.2.12調(diào)試控制和狀態(tài)寄存器(dcsr)詳細(xì)描述應(yīng)符合表16規(guī)定。表16dcsr寄存器定義位0:機器模式下的ebreak指令的行為如特權(quán)1:機器模式下的ebreak指令能夠進入調(diào)試000:用戶模式下的ebreak指令的行為如特權(quán)1:用戶模式下的ebreak指令能夠進入調(diào)試00090進入調(diào)試的原因001:以ebreak指令方式進010:以triggermodule形式進入調(diào)試(優(yōu)0T/BDT004—2024位011:以暫停請求形式進入調(diào)試(優(yōu)先級為100:以單步調(diào)試形式進入調(diào)試(優(yōu)先級為101:微處理器復(fù)位之后直接停止進入調(diào)試模02007.2.13調(diào)試模式程序指針(dpc)7.2.13.1dpc寄存器定義dpc寄存器定義描述應(yīng)符合表17規(guī)定。表17dpc寄存器定義位07.2.13.2dpc更新規(guī)則更新規(guī)則應(yīng)符合表18規(guī)定。表18dpc更新規(guī)則7.3操作實例調(diào)試主機發(fā)起暫停、恢復(fù)、復(fù)位等讀寫寄存器,推薦的操作流程,相關(guān)實例見附錄B。T/BDT004—2024配置實例A.1配置實例描述A.1.1使能從機輸出a)設(shè)置SHDWCFGR為0x5AA50400,將影子配置寄存器輸出使能位置1;b)設(shè)置CFGR為0x5AA50400,將影子配置寄存器輸出使能位更新至配置寄存器,配置寄存器其他位不變。A.1.2配置時基分頻系數(shù)為1分頻a)設(shè)置SHDWCFGR為0x5AA50000,設(shè)置影子配置寄存器TDIVCFG為0b00;b)設(shè)置CFGR為0x5AA50003,將影子配置寄存器TDIVCFG位域更新至配置寄存器,配置寄存器中其他位不變。A.1.3復(fù)位調(diào)試接口IO_FREE模式下,復(fù)位時序為總線拉低超過32倍的時基,且不管何種模式下,總線拉低超過256倍時基時,固定可將調(diào)試接口復(fù)位。復(fù)位后速度改為兩分頻模式,即普通模式2x。不同的硬件平臺調(diào)試接口時鐘可能不同,例如CH32V003默認(rèn)為內(nèi)部高速時鐘24MHz的3分頻為其時鐘,即8MHz。T/BDT004—2024(資料性)操作實例B.1暫停微處理器該流程應(yīng)用于將微處理器暫停,步驟如表B.1所示。表B.1微處理器暫停流程值獲取調(diào)試模塊狀態(tài)信息,檢查rdata[9:8],如值為0b11,則表示處理器正常進入暫停狀態(tài),否則表示未進入暫停狀B.2恢復(fù)微處理器該流程應(yīng)用于將處于暫停的微處理器恢復(fù),步驟如表B.2所示。表B.2微處理器恢復(fù)流程值獲取調(diào)試模塊狀態(tài)信息,檢查rdata[17:16],如值為B.3復(fù)位微處理器B.3.1復(fù)位后微處理器重新運行如表B.3所示。表B.3微處理器復(fù)位并運行流程值獲取調(diào)試模塊狀態(tài)信息,檢查rdata[19:18],如值為獲取調(diào)試模塊狀態(tài)信息,檢查rdata[19:18],如值為B.3.2復(fù)位后微處理器立即暫停如表B.4所示。表B.4微處理器復(fù)位后繼續(xù)暫停流程值T/BDT004—2024值獲取調(diào)試模塊狀態(tài)信息,檢查rdata[19:18],如值為獲取調(diào)試模塊狀態(tài)信息,檢查rdata[19:18],如值為B.4復(fù)位調(diào)試模塊該流程應(yīng)用于復(fù)位調(diào)試模塊,詳細(xì)如表B.5所示。表B.5調(diào)試模塊復(fù)位流程值檢查rdata[1]是否為0b0,如果是則復(fù)位成功,否則復(fù)B.5讀/寫通用寄存器(GPR)B.5.1讀GPR,以x16為例如表B.6所示。表B.6讀GPR流程值檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令執(zhí)行;檢查rdata[10:8],即cmderr值是否為0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令執(zhí)行錯誤,根B.5.2寫GPR,以x16為例如表B.7所示。表B.7寫GPR流程值T/BDT004—2024值wdata檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令執(zhí)行;檢查rdata[10:8],即cmderr值是否為0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令執(zhí)行錯誤,根據(jù)B.6讀/寫控制和狀態(tài)寄存器(CSR)B.6.1讀CSR,以mepc為例,其CSR地址為0x341如表B.8所示。表B.8讀CSR流程值檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令執(zhí)行;檢查rdata[10:8],即cmderr值是否為0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令執(zhí)行錯誤,根據(jù)錯誤B.6.2寫CSR,以mepc為例,其CSR地址為0x341如表B.9所示。表B.9寫CSR流程值wdata設(shè)置抽象命令,將Data0數(shù)據(jù)拷貝至CSR0x341寄存檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令執(zhí)行;檢查rdata[10:8],即cmderr值是否為0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令執(zhí)行錯B.7讀/寫存儲器B.7.1描述微處理器的調(diào)試模塊可通過抽象命令訪問寄存器和存儲器,可利用抽象命令和預(yù)置progbufx指令的方式,對某存儲器地址進行讀寫。B.7.2存儲器讀T/BDT004—2024針對FLASH、RAM、MCU外設(shè)寄存器等,均可采用存儲器讀方式讀取數(shù)據(jù)。以地址0x20000000為例。如表B.10所示。表B.10讀存儲器流程值wcode將待執(zhí)行的指令機器碼wcode寫入progbuf0,例如設(shè)置抽象命令,將Data0數(shù)據(jù)拷貝至x5寄存器,并檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令讀出Data0數(shù)據(jù)rdata,即為0x20000000地址值。需要注意該方法操作了寄存器值,操作前應(yīng)保存相應(yīng)寄B.7.3存儲器寫B(tài).7.3.1針對RAM、MCU外設(shè)寄存器等可直接按照如下流程進行寫。B.7.3.2針對FLASH寫,需要按照不同芯片的FLASH控制器要求對其寄存器按步驟進行操作編程。如表B.11所示。表B.11寫存儲器流程值wcode將待執(zhí)行的指令機器碼wcode寫入progbuf0,例如wdata檢查rdata[12],即查詢busy位是否為0b1,如果是,則表示抽象命令正在執(zhí)行,否則表示無抽象命令執(zhí)行;檢查rdata[10:8],即cmderr值是否為0b000,如果是,則抽象命令執(zhí)行正常,否則抽象命令執(zhí)行錯wdata將待寫入數(shù)據(jù)wdata,寫入Data設(shè)置抽象命令,將Data0數(shù)據(jù)寫入x7寄存器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論