国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

英飛凌XC2000 系列單片機(jī)的反匯編步驟

2015-11-28 03:07:18胡瑞忠
山西電子技術(shù) 2015年6期
關(guān)鍵詞:英飛凌代碼調(diào)試

胡瑞忠

(山西省電子工業(yè)科學(xué)研究所,山西 太原 030006)

為了適應(yīng)汽車(chē)級(jí)應(yīng)用環(huán)境,英飛凌單片機(jī)經(jīng)過(guò)了嚴(yán)格的、高于一般工業(yè)應(yīng)用的測(cè)試,確保了其在汽車(chē)電子設(shè)備中的可靠耐久的操作。特別是英飛凌功能強(qiáng)大和高度集成的XC2000 家族是英飛凌新一代16/32 位微控制器,特別為汽車(chē)嵌入式系統(tǒng)應(yīng)用精心設(shè)計(jì)[2]?;谏鲜鲈蛴w凌XC2000 系列單片機(jī)在汽車(chē)行業(yè)的應(yīng)用越來(lái)越廣泛。如何更好的學(xué)習(xí)和掌握英飛凌XC2000 單片機(jī)的編程技巧和方法,成為了許多項(xiàng)目工程師的首要任務(wù)。

從一個(gè)現(xiàn)有的英飛凌單片機(jī)應(yīng)用系統(tǒng)中讀出目標(biāo)代碼進(jìn)行反匯編,可以分析原程序的設(shè)計(jì)思想。同時(shí),反匯編后,我們可以更快的學(xué)習(xí)和了解英飛凌單片機(jī)的編程原則和一些常規(guī)用法,也可更快捷的進(jìn)行逆向工程的設(shè)計(jì)和開(kāi)發(fā)。本文將重點(diǎn)介紹一種針對(duì)XC2000 單片機(jī)的簡(jiǎn)便快捷的反匯編方法。

1 怎樣獲取程序的目標(biāo)代碼

XC2000 單片機(jī)的內(nèi)存空間是馮·諾以曼結(jié)構(gòu)[1],即數(shù)據(jù)和程序在同一個(gè)線性地址空間。該單片機(jī)的地址空間為16 MB。最大的外掛存儲(chǔ)空間為12 MB。該系列單片機(jī)多為Flash 結(jié)構(gòu)的內(nèi)部程序代碼存儲(chǔ)形式,F(xiàn)lash 存儲(chǔ)范圍從64 K~832 K。在一般的汽車(chē)電子產(chǎn)品的應(yīng)用中,片內(nèi)的Flash 已經(jīng)能夠滿足需求,不需要再外掛片外存儲(chǔ)器。

因此本文僅介紹片內(nèi)目標(biāo)代碼的獲取方式。XC2000 單片機(jī)的片上Flash 的起始地址為C00000H。

利用英飛凌XC2000 家族微控制器的免費(fèi)程序燒錄工具M(jìn)emtool 就可以完成目標(biāo)代碼的讀取。首先要把目標(biāo)單片機(jī)從產(chǎn)品的PCB 板焊下來(lái),再將它重新焊接到英飛凌提供的XC2000 仿真調(diào)試板上(型號(hào)為Easy Kit XC2XXX)。隨后將調(diào)試板與計(jì)算機(jī)進(jìn)行正確連接。打開(kāi)Memtool,按照XC2000 單片機(jī)的具體型號(hào),按照正常燒錄程序的步驟設(shè)定該軟件。當(dāng)計(jì)算機(jī)與單片機(jī)建立通訊后,會(huì)出現(xiàn)界面如圖1所示。

圖1 Memtool 的界面

如果在“index”列有藍(lán)色的小鎖頭出現(xiàn),那該單片機(jī)已加密,無(wú)法讀取目標(biāo)代碼。如果沒(méi)有小鎖頭出現(xiàn),就點(diǎn)擊“Read”按鈕。然后根據(jù)單片機(jī)Flash 的容量和起始地址,設(shè)定讀取的地址范圍,開(kāi)始讀取目標(biāo)代碼。讀取完后,點(diǎn)擊“Edit”,然后保存.H86 文件,目標(biāo)代碼讀取完成。

2 怎樣進(jìn)行反匯編

在獲得正確的目標(biāo)代碼后,進(jìn)行反匯編有2 種方式可供選擇。

1)如果代碼容量比較小,可以采用人工反匯編。XC2000 系列單片機(jī)的匯編指令在<<Instruction Set Manual—for the C166 Family of Infineon 16-Bit Single-Chip Microcontrollers >>一書(shū)中有詳細(xì)介紹。但在一般情況下,該方式僅用來(lái)訂正某一條有爭(zhēng)議的匯編指令,作為自動(dòng)反匯編的一個(gè)補(bǔ)充。

2)一般的反匯編的步驟如下:

a)將英飛凌提供的XC2000 仿真調(diào)試板(型號(hào)為Easy Kit XC2XXX)與計(jì)算機(jī)進(jìn)行正確連接。仿真板上的單片機(jī)必須是與讀取目標(biāo)代碼時(shí)相同型號(hào)的單片機(jī),用Memtool 燒錄工具,將目標(biāo)代碼寫(xiě)入。當(dāng)然如果不怕?lián)p壞,也可以直接用剛剛讀取代碼的單片機(jī)。

b)按照英飛凌XC2000 系列單片機(jī)的C 程序開(kāi)發(fā)流程。先由數(shù)字應(yīng)用虛擬工程師DAvE 建立一個(gè)這種型號(hào)單片機(jī)的工程文件* .Dav[2]。再將DAvE 目標(biāo)工程文件* .dav 裝載到Keil 中,自動(dòng)生成一個(gè)包含main{}函數(shù)和頭文件的C 工程文件* .prj。該工程可以是一個(gè)最簡(jiǎn)工程,不必設(shè)置太多模塊。

c)如圖2 所示,設(shè)置好Keil 的Debug 調(diào)試器。并在“Flash Download Options”中正確添加該型號(hào)單片機(jī)的Flash地址范圍。將該工程正確編譯,但千萬(wàn)不要“Load”編譯后的代碼。然后點(diǎn)擊“d”進(jìn)入Debug 調(diào)試界面。

圖2 debug 調(diào)試器的設(shè)置

d)在該debug 調(diào)試界面的“反匯編(Disassembly)”欄中,就顯示出了目標(biāo)代碼的匯編語(yǔ)言及Flash 單元地址和對(duì)應(yīng)的機(jī)器碼。匯編程序的起始地址為00C00000H,該存儲(chǔ)器為線性地址空間,結(jié)束地址可根據(jù)該單片機(jī)的Flash 容量計(jì)算得到。由于沒(méi)有給單片機(jī)“Load”本工程的文件,所以下方C 語(yǔ)言文件那一欄和反匯編欄的數(shù)據(jù)沒(méi)有關(guān)系。

圖3 debug 界面

e)將所有反匯編指令拷貝到EXCEL 文件中,仔細(xì)研讀。再將這些指令歸納為C 語(yǔ)言指令,重新寫(xiě)回目標(biāo)工程中。這就實(shí)現(xiàn)了平常所說(shuō)的逆向工程,同時(shí)還可以根據(jù)自己的控制思路,改善原有的程序,增加和改良一些系統(tǒng)功能。

綜上所訴,本文簡(jiǎn)單介紹了汽車(chē)電子產(chǎn)品中一款主流單片機(jī)的反匯編過(guò)程。希望對(duì)研究和使用該款單片機(jī)的初級(jí)使用者,有一些幫助和提高。

[1]程軍.億恒(西門(mén)子)C166 系列——16 位單片機(jī)原理與開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2001.

[2]汽車(chē)嵌入式微控制器的工作原理與應(yīng)用——英飛凌XC2000 家族MCU[OL].www.infineon.com,2013-09.

猜你喜歡
英飛凌代碼調(diào)試
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
基于航拍無(wú)人機(jī)的設(shè)計(jì)與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
FOCAS功能在機(jī)床調(diào)試中的開(kāi)發(fā)與應(yīng)用
無(wú)線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運(yùn)行探討
英飛凌推出新款大功率光觸發(fā)晶閘管 首次集成保護(hù)功能
英飛凌新一代CoolMOSTM可減少50%的開(kāi)關(guān)損耗;專(zhuān)用EiceDRIVERTM IC可進(jìn)一步節(jié)省空間和設(shè)計(jì)成本
成安县| 万载县| 鄂尔多斯市| 北碚区| 正宁县| 余庆县| 海城市| 上饶县| 开平市| 孙吴县| 洪雅县| 玛沁县| 大名县| 馆陶县| 富锦市| 中阳县| 元氏县| 门头沟区| 临汾市| 乌拉特后旗| 宝坻区| 乳源| 玉林市| 阿鲁科尔沁旗| 建德市| 乌什县| 那曲县| 上高县| 达日县| 焦作市| 三河市| 宾阳县| 前郭尔| 辽阳县| 佛山市| 来凤县| 双柏县| 云林县| 嘉义县| 象州县| 高州市|