999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SWD協(xié)議的ISP技術(shù)研究與應(yīng)用*

2021-08-06 09:19:10劉浪華
通信技術(shù) 2021年7期
關(guān)鍵詞:調(diào)試

王 宇,劉浪華

(中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)

0 引 言

目前嵌入式領(lǐng)域的主流產(chǎn)品在研發(fā)階段主要通過(guò)仿真器對(duì)微處理器進(jìn)行程序的仿真驗(yàn)證,生產(chǎn)階段通過(guò)專(zhuān)用聯(lián)合測(cè)試工作組(Joint Test Action Group,JTAG)燒錄器完成芯片固件燒錄,基本不涉及后期固件的升級(jí)維護(hù)。一旦固件程序在應(yīng)用上存在漏洞,只能將設(shè)備返廠(chǎng)維修,導(dǎo)致產(chǎn)品后期維護(hù)費(fèi)用居高不下。通過(guò)結(jié)合串行調(diào)試(Serial Wire Debug,SWD)串行調(diào)試技術(shù)和在線(xiàn)系統(tǒng)編程(In-System Programming,ISP)技術(shù),能夠解決設(shè)備后期維護(hù)不便的問(wèn)題。

SWD技術(shù)支持所有可通過(guò)JTAG接口進(jìn)行調(diào)試的ARM Cortex A/R/M系列處理器和具有CoreSight調(diào)試架構(gòu)的ARM芯片[1],包括德州儀器(Texas Instrument,TI)、 恩 智 浦(NXP Semiconductors)、Atmel、Samsung等廠(chǎng)家的芯片,以及意法半導(dǎo)體(STMicroelectronics,STM)公司STM32系列微處理器等。

1 SWD協(xié)議原理研究

SWD串行調(diào)試由一個(gè)雙向數(shù)據(jù)線(xiàn)和單向時(shí)鐘線(xiàn)組成實(shí)現(xiàn)數(shù)據(jù)的同步傳輸,可替代JTAG調(diào)試。時(shí)鐘頻率為50 MHz時(shí)數(shù)據(jù)傳輸速率可達(dá)4 MB/s,較少的印制電路板(Printed Circuit Board,PCB)布局布線(xiàn)資源便可實(shí)現(xiàn)低功耗低成本應(yīng)用[2]。SWD協(xié)議實(shí)現(xiàn)芯片資源的交互流程如圖1所示。

1.1 SWD接口協(xié)議

SWD操作流程主要分為3個(gè)階段:數(shù)據(jù)請(qǐng)求包REQ、應(yīng)答數(shù)據(jù)包ACK與數(shù)據(jù)讀寫(xiě)傳輸包[3]。表1列舉了SWD接口交互流程的主要關(guān)鍵字信息。

表1 SWD協(xié)議關(guān)鍵詞

SWD的寫(xiě)操作由1 byte請(qǐng)求包、3 bit應(yīng)答包與33 bit的寫(xiě)數(shù)據(jù)組成,一次完整的寫(xiě)操作如圖2所示。

SWD的讀操作由1 byte的請(qǐng)求包、3 bit的應(yīng)答包與33 bit的讀數(shù)據(jù)組成,應(yīng)答包與讀數(shù)據(jù)包間無(wú)Turn周期,一次完整的讀操作如圖3所示。

SWD中DP寄存器組成見(jiàn)表2,其中ID標(biāo)識(shí)寄存器用于驗(yàn)證SWD操作時(shí)序,獲取ARM調(diào)試接口信息等,低12位固定為0×477,主要構(gòu)成如圖4所示。

表2 SW-DP寄存器

SELECT寄存器控制AP選擇特定的地址,其最低位為CTRLSEL,其組成見(jiàn)圖5。[31:24]位APSEL值確定當(dāng)前AP地址的高8 bit;每個(gè)AP具有 16個(gè) Bank,[7:4]位 APBANKSEL值(0-F) 用來(lái)選擇當(dāng)前AP的Bank號(hào);每個(gè)Bank有4個(gè)32 bit寄存器,由數(shù)據(jù)請(qǐng)求包REQ中的A[3:2]位來(lái)確定。

圖6列舉了每組MEM-AP寄存器的信息,其中Bank 0x0中的CSW寄存器、TAR寄存器與DRW寄存器對(duì)設(shè)備ARM核的數(shù)據(jù)傳遞起著關(guān)鍵作用[4]。

1.2 SWD實(shí)現(xiàn)處理器資源傳遞

SWD的數(shù)據(jù)傳遞通過(guò)分級(jí)傳遞的方式:第一級(jí)通過(guò)DP接口選擇進(jìn)入AP寄存器,然后通過(guò)AP接口選擇目的寄存器進(jìn)行訪(fǎng)問(wèn);第二級(jí)配置CSW寄存器進(jìn)行軟件控制與地址模式的選擇,最后通過(guò)TAR寄存器與DRW寄存器對(duì)處理器目標(biāo)地址進(jìn)行讀寫(xiě)。整個(gè)交互流程如圖7所示。

以下是實(shí)現(xiàn)的主要函數(shù)。

(1)Func0:?jiǎn)?2 bit數(shù)據(jù)寫(xiě)入,經(jīng)歷①②③④⑥這5個(gè)階段,參數(shù)為其③階段的目的地址與④階段的數(shù)據(jù),⑥階段僅需執(zhí)行讀操作。

(2)Func1:連續(xù)32 bit數(shù)據(jù)寫(xiě)入,SWD協(xié)議中支持連續(xù)寫(xiě)入,目的地址會(huì)在寫(xiě)入完成后自加1,大致流程與Func0一致,經(jīng)歷①②③④…④(n個(gè)④)⑥階段,其中④階段的個(gè)數(shù)n由寫(xiě)入數(shù)據(jù)數(shù)量來(lái)確定。

(3)Func2:?jiǎn)?2 bit數(shù)據(jù)讀取,經(jīng)歷①②③⑤⑥這5個(gè)階段,參數(shù)為其③階段的目的地址與接收⑥階段的數(shù)據(jù)緩存。

(4)Func3:連續(xù)32 bit數(shù)據(jù)讀取,SWD協(xié)議中目的地址會(huì)在讀取完成后自加1,大致流程Func2一致,經(jīng)歷①②③⑤⑥…⑥(n個(gè)⑥)階段,其中⑥階段的個(gè)數(shù)n由讀取數(shù)據(jù)數(shù)量來(lái)確定。

2 STM32F103核心資源

為了利用SWD接口完成對(duì)ARM-Cortex M3/M4等芯片固件的擦除與燒寫(xiě),實(shí)現(xiàn)固件的更新。本節(jié)以ST公司的STM32F103x系列芯片作為說(shuō)明,對(duì)芯片內(nèi)部資源架構(gòu)進(jìn)行基本介紹[5]。

如圖8所示,STM32F103x采用ARM Cortex-M3核,采用32位RISC精簡(jiǎn)指令集,時(shí)鐘頻率最高72 MHz。Flash容量最大512 kB、SRAM最大64 kB,STM32F103x芯片內(nèi)部存儲(chǔ)資源如圖8所示,其中Flash區(qū)存儲(chǔ)了芯片的BootLoader與主程序。DAP燒錄器、J-link編程器進(jìn)行芯片固件燒錄也是在該區(qū)域完成。

通過(guò)SWD接口可實(shí)現(xiàn)STM32F103x芯片SRAM區(qū)域存取訪(fǎng)問(wèn),控制Cortex-M3內(nèi)部資源中調(diào)試寄存器,讀取Flash區(qū)的數(shù)據(jù)。Flash區(qū)不能直接進(jìn)行數(shù)據(jù)擦寫(xiě),必須通過(guò)特定方法,本文研究的主要目的就是通過(guò)SWD與芯片F(xiàn)lash算法文件FLM相結(jié)合的方式實(shí)現(xiàn)芯片固件更新。

Cortex-M3/M4的ARM核調(diào)試寄存器地址完全相同,寄存器相關(guān)描述如表3所示。DFSR寄存器用來(lái)獲取ARM核運(yùn)行錯(cuò)誤狀態(tài),DHCSR與DEMCR可以控制ARM核的運(yùn)轉(zhuǎn)狀態(tài),操作SRAM區(qū)域或者Flash資源時(shí)都應(yīng)將ARM核掛起,以免影響數(shù)據(jù)正確性。DCRSR寄存器用來(lái)選擇ARM核心寄存器,DCRDR寄存器用來(lái)管理ARM核心寄存器值[6]。

表3 Cortex-M3/M4調(diào)試寄存器說(shuō)明

ARM核心寄存器組成如表4所示,其中R0~R12為32位通用目的寄存器,R13可對(duì)堆棧空間進(jìn)行存取操作,R14鏈接寄存器用于存儲(chǔ)子程序或者函數(shù)調(diào)用的返回地址,R15程序計(jì)數(shù)器讀操作返回當(dāng)前正在執(zhí)行的指令加上4,寫(xiě)入R15會(huì)導(dǎo)致程序跳轉(zhuǎn)執(zhí)行。XPSR程序狀態(tài)寄存器作為特殊功能寄存器用來(lái)判斷ARM核心寄存器執(zhí)行狀態(tài)是否正常。

表4 ARM核心寄存器

匯編可執(zhí)行程序就是在ARM核心寄存器上進(jìn)行變量的計(jì)算與處理。通過(guò)調(diào)用Func0、Func2流程可以控制Cortex-M3/M4的所有調(diào)試寄存器,經(jīng)由DCRSR與DCRDR寄存器實(shí)現(xiàn)ARM核心寄存器讀取,獲取到ARM核的執(zhí)行控制權(quán)限。

3 SWD實(shí)現(xiàn)芯片固件ISP在線(xiàn)編程

通用Flash芯片編程流程包括:初始化、擦除與燒寫(xiě)。SWD協(xié)議調(diào)用FLM文件中可執(zhí)行二進(jìn)制文件的方式實(shí)現(xiàn)Flash的ISP編程。FLM文件從芯片廠(chǎng)家獲取,由Flash擦寫(xiě)相關(guān)函數(shù)及變量等組成的通用標(biāo)準(zhǔn)文件格式可執(zhí)行文件編碼。本文以STM32F103芯片的STM32F10x_128.FLM文件為樣本進(jìn)行研究與應(yīng)用,可推廣至所有支持SWD協(xié)議芯片進(jìn)行應(yīng)用。

3.1 STM32F10x_128算法文件解析

STM32F10x_128.FLM文件可通過(guò)elfparser等軟件解析,也可在Linux Ubuntu操作系統(tǒng)下輸入以下命令查看解析文件信息readelf -a STM32F10x_128.FLM。

截取的部分重要信息如圖9所示,其中Prgcode程序代碼段包括Flash的若干函數(shù)執(zhí)行碼,PrgData程序數(shù)據(jù)段為全局變量/靜態(tài)變量區(qū)間。SWD所需的核心內(nèi)容(Prgcode+PrgData)數(shù)據(jù)段可由地址Addr、偏移Offset與大小Size從FLM件中獲得。

3.2 STM32F10x_128讀取IDCODE

圖10由示波器獲得,下方波形為SWD時(shí)鐘,上方波形為SWD數(shù)據(jù)。以數(shù)據(jù)線(xiàn)的第一個(gè)高電平為Start起始位,對(duì)比SWD讀操作原理圖,最終獲取的內(nèi)容為0x2ba01477。參照1.1節(jié)DP寄存器中有關(guān)IDCODE的描述,能夠驗(yàn)證獲取到內(nèi)容確實(shí)為IDCODE的值,進(jìn)而確認(rèn)已成功實(shí)現(xiàn)對(duì)SWD接口控制。

3.3 芯片F(xiàn)lash固件燒寫(xiě)

通過(guò)SWD接口實(shí)現(xiàn)ARM核Flash資源燒寫(xiě)共分為3個(gè)步驟:

(1)通過(guò)調(diào)試寄存器掛起ARM核,停止ARM核的運(yùn)行,將FLM算法文件提出的可執(zhí)行數(shù)據(jù)寫(xiě)入SRAM的起始地址;

(2)將芯片固件STM32F10x_128.Bin寫(xiě)入SRAM未用空間,待Flash編程時(shí)使用;

(3)將執(zhí)行函數(shù)包括程序入口參數(shù)等信息通過(guò)調(diào)試寄存器寫(xiě)入ARM核心寄存器,依次調(diào)用Flash初始化、片擦除、編程函數(shù),完成ARM核內(nèi)部Flash的燒錄。整個(gè)流程執(zhí)行如圖11所示。

Flash固件燒寫(xiě)測(cè)試程序由C語(yǔ)言實(shí)現(xiàn),涵蓋了Flash初始化、片擦除、程序燒寫(xiě)、數(shù)據(jù)回讀校驗(yàn)及退出操作,頂層實(shí)現(xiàn)代碼如下文所述:

在主設(shè)備上執(zhí)行Flash固件燒寫(xiě)測(cè)試程序swdprogram,穩(wěn)定地實(shí)現(xiàn)了芯片固件ISP更新,程序運(yùn)行結(jié)果如圖12所示。

4 結(jié) 語(yǔ)

通過(guò)SWD接口協(xié)議控制芯片ARM核的運(yùn)行,結(jié)合芯片F(xiàn)LM文件解析并在ARM核中實(shí)現(xiàn)Flash相關(guān)函數(shù)資源的恢復(fù)與調(diào)用,完成了芯片固件的ISP在線(xiàn)編程。針對(duì)其它支持SWD接口協(xié)議的ARM芯片,除內(nèi)部資源地址空間與FLM算法文件不同外,ARM核的調(diào)試與控制操作完全相同,很容易推廣并應(yīng)用于主從模式下的微處理器芯片。通過(guò)SWD接口實(shí)現(xiàn)的ISP在線(xiàn)編程,能夠極大地提高設(shè)備的維護(hù)性,對(duì)于實(shí)現(xiàn)設(shè)備程序升級(jí)與功能更新有較高的應(yīng)用價(jià)值。

猜你喜歡
調(diào)試
基于航拍無(wú)人機(jī)的設(shè)計(jì)與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
燃?xì)廨啓C(jī)發(fā)電機(jī)組運(yùn)行調(diào)試
FOCAS功能在機(jī)床調(diào)試中的開(kāi)發(fā)與應(yīng)用
核電廠(chǎng)主給水系統(tǒng)調(diào)試
無(wú)線(xiàn)通信中頻線(xiàn)路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運(yùn)行探討
工業(yè)電氣設(shè)備控制系統(tǒng)的安裝與調(diào)試
音頻處理器的調(diào)試
同期繼電保護(hù)調(diào)試中出現(xiàn)的問(wèn)題及處理
基于JTAG的SoC片上調(diào)試系統(tǒng)設(shè)計(jì)
主站蜘蛛池模板: 日韩性网站| 国产福利影院在线观看| 日韩精品欧美国产在线| 毛片免费试看| 久久人搡人人玩人妻精品| 高清欧美性猛交XXXX黑人猛交 | 国产九九精品视频| 国产91丝袜| 久青草国产高清在线视频| a毛片在线播放| www.狠狠| 午夜高清国产拍精品| 精品久久国产综合精麻豆| 国产亚洲现在一区二区中文| 免费播放毛片| 真实国产乱子伦高清| 亚洲综合久久成人AV| 日本少妇又色又爽又高潮| 成年人久久黄色网站| 日日噜噜夜夜狠狠视频| 亚洲色图欧美| 亚洲一区二区三区香蕉| 日韩国产黄色网站| 国产迷奸在线看| 亚洲色无码专线精品观看| 东京热av无码电影一区二区| 中文字幕永久在线看| 欧美va亚洲va香蕉在线| 成人欧美在线观看| 欧美日韩一区二区在线免费观看| 在线精品欧美日韩| 久久人妻xunleige无码| 国产欧美日韩在线一区| 香蕉久久国产精品免| 欧美成人一级| 伊人久久青草青青综合| 一级黄色片网| 这里只有精品国产| 高清无码一本到东京热| 亚洲国产第一区二区香蕉| 国产99免费视频| 欧美色视频网站| 亚洲精品男人天堂| 亚洲永久色| 四虎成人免费毛片| 亚洲精品天堂在线观看| 欧美日韩中文字幕在线| 91精品在线视频观看| 国产精品免费p区| 波多野结衣在线se| 人人澡人人爽欧美一区| 激情六月丁香婷婷| 亚洲天堂免费在线视频| 伊人色天堂| 黄色免费在线网址| 亚洲免费福利视频| 亚洲第一视频网| 嫩草国产在线| 久久激情影院| 亚洲AⅤ永久无码精品毛片| 77777亚洲午夜久久多人| 欧美影院久久| 亚洲精品视频网| 日本高清成本人视频一区| 无码福利日韩神码福利片| 亚洲欧美精品在线| 国产精品露脸视频| 亚欧美国产综合| 色天堂无毒不卡| 美女视频黄又黄又免费高清| 亚洲中文字幕23页在线| 久久国产精品麻豆系列| 男女性午夜福利网站| 成年人国产网站| 亚洲黄网在线| 91麻豆精品视频| 亚洲 成人国产| 精品无码一区二区三区电影 | 欧美在线导航| 亚洲第一区欧美国产综合| 亚洲国产日韩在线观看| 亚洲欧洲美色一区二区三区|