EFM32芯片被锁解决方法
調(diào)試EFM32程序的時候,剛突然出現(xiàn)調(diào)試軟件(JLINK或者energy AwareCommander)無法識別芯片有如下顯示:
?
?
那么出現(xiàn)這種情況你如果排除掉硬件連接上沒有問題的話,就應(yīng)該考慮是不是芯片被鎖了,另外對于板外的EFM芯片話還需要硬件的連接,接口如下:
例如:EFM32TG110F32芯片的部分接口如圖:
具體方法參考如下:
1. 概述
EFM32可以通過SWD調(diào)試口上鎖達(dá)到禁止外部訪問片內(nèi)Flash的目的,使得芯片內(nèi)的執(zhí)行代碼得到保護(hù),不被非法訪問者竊取。同時,也可以通過清除調(diào)試上鎖字(Debug Lock Word,DLW),解鎖調(diào)試口訪問Cortex-M3內(nèi)核的功能且片內(nèi)Flash的代碼將被擦除。當(dāng)調(diào)試訪問被上鎖,調(diào)試接口仍然保持可訪問,但是連接到Cortex-M3內(nèi)核的訪問將被
阻止。該訪問機(jī)制將由Authentication Access Port(AAP)控制,如圖1.1所示。圖1.1? 認(rèn)證訪問接口設(shè)備解鎖是通過寫入AAP_CMDKEY寄存器,然后通過調(diào)試口將AAP_CMD寄存器標(biāo)
志位DEVICEERASE位置1實(shí)現(xiàn)。該擦除操作擦除Flash(main block),所有鎖住位被復(fù)位且通過AHB-AP的調(diào)試口被使能。該操作在40ms內(nèi)完成。需要注意在設(shè)備擦除操作中SRAM內(nèi)容也將被刪除。
調(diào)試器可以讀取AAP_STATUS寄存器的狀態(tài)。當(dāng)在AAP_CMD寄存器的DEVICEERASE被置1之后,ERASEBUSY被置1,調(diào)試器可以置1 AAP_CMD寄存器的SYSRESETREQ位。在復(fù)位之后,調(diào)試器恢復(fù)通過AHB-AP的正常調(diào)試會話。
注意:如果調(diào)試引腳被重新配置為I/O功能而不是調(diào)試功能時,設(shè)備擦除將不再被執(zhí)行。引腳在復(fù)位狀態(tài)下被配置為調(diào)試功能。
2. EFM32加密/解鎖工具
??????????? EFM32的加密/解鎖可以通過帶SWD接口且支持EFM32 Flash編程操作的仿真器或編程器執(zhí)行。常見的使用工具有EFM32 TinyGecko/Gecko STK開發(fā)板和通用Jlink仿真器。下面將分別以STK板載Jlink仿真器和通用Jlink仿真器進(jìn)行說明EFM32的加密和解鎖步驟。
2.1? 硬件工具
圖2.1所示為帶有板載Jlink仿真器的EFM32 Tiny Gecko STK開發(fā)板。圖2.2所示為帶板載仿真器的EFM32 Gecko STK開發(fā)板。圖2.3所示為通用的Jlink仿真器。
2.2? 軟件工具
使用STK開發(fā)板上的板載仿真器進(jìn)行加密/解鎖的用戶可以使用Simplicity Studio軟件上自帶的energyAware Commander軟件進(jìn)行芯片的加密/解鎖,如圖2.4所示。使用通用Jlink
3
EFM32加密/解鎖流程仿真器的用戶可以使用Seeger JLink-ARM驅(qū)動軟件包中自帶的Jlink Commander軟件。為了支持EFM32以下操作,請安裝JLink-ARM 4.36e版本或以上版本。
3. 使用STK加密/解鎖
下面將以EFM32 Gecko STK開發(fā)板為例闡述STK加密、解鎖的詳細(xì)步驟。
3.1? 硬件連接
???? 根據(jù)硬件連接方式的不同可以分為兩種情況:STK板載仿真器仿真板載MCU;STK板載仿真器仿真STK外部MCU。
3.1.1 STK板載MCU芯片
EFM32 Gecko STK開發(fā)板板載仿真器與板載MCU連接已內(nèi)部連接,因此用戶只需將開發(fā)板與電腦通過miniUSB口的進(jìn)行連接,并將供電選擇開關(guān)(電池座旁邊)撥向MCU方向即可。當(dāng)連接正確且開發(fā)板供電正常時,在電腦的設(shè)備管理器端可以看到JLink仿真器被正確識別出來。
4
EFM32加密/解鎖流程
在energyAware Commder軟件的【Debug Mode】配置時,將選項配置為【MCU】模式,以便用戶可以使用板載Jlink仿真器對STK開發(fā)板上的MCU進(jìn)行所需的仿真調(diào)試操作。
3.1.2 外部MCU芯片
用戶需要使用STK仿真開發(fā)板外部的EFM32芯片,需要進(jìn)行硬件連接和軟件配置。操
作步驟如下:
(1)使用導(dǎo)線將STK開發(fā)板上方或下方的VMCU引腳連接到20pin引腳的Debug In/Out插座的第1腳,使得STK開發(fā)板為外部系統(tǒng)提供3.3V電源;圖3.1所示為STK開發(fā)板上20pin Debug In/Out插座與外部EFM32芯片的連接示意圖。用戶可使用杜邦線將其中的6個引腳相連,也可以通過20Pin的排線將STK開發(fā)板與外部MCU系統(tǒng)進(jìn)行連接。
圖3.1 JTAG/SWD接口連接示意圖
(2)打開energyAware Commder軟件時,在配置仿真器【Debug mode】時,在下拉列表中選擇【Out】模式,如圖3.2所示。STK開發(fā)板上Debug接口旁邊的DEBUG OUT LED指示燈將點(diǎn)亮。配置板載Jlink仿真器為Debug Out模式注意:對于STK開發(fā)板板載仿真器的【Debug Mode】配置為軟件配置,STK開發(fā)板掉電后會丟失,因此再次使用時需要重復(fù)執(zhí)行相同的軟件配置步驟。
5
EFM32加密/解鎖流程
3.2? 操作步驟
下面以EFM32 Gecko開發(fā)板的加密/解鎖流程為例,進(jìn)行詳細(xì)闡述。
(1)按照前文描述的硬件連接步驟,將仿真器與MCU的調(diào)試接口進(jìn)行正確連接。
(2)將STK開發(fā)板的USB接口連接到PC端,運(yùn)行energyAware Commander軟件,并點(diǎn)擊【Connect】按鈕,如圖3.3所示。圖3.3? 連接板載仿真器
(3)當(dāng)STK開發(fā)板與被仿真調(diào)試的MCU進(jìn)行正確連接時,可以在【Board Information】和【MCU Information】欄看到仿真器和MCU的信息,如圖3.4所示。圖3.4? 仿真器與MCU信息
(4)根據(jù)硬件連接所描述,按需求選擇仿真器的【Debug Mode】,仿真STK開發(fā)板上
6
EFM32加密/解鎖流程的MCU選擇【MCU】選項;仿真STK開發(fā)板外部的MCU可選擇【Out】選項,如圖3.5所示。圖3.5? 配置仿真器Debug Mode
(4)點(diǎn)擊窗口左邊的【Flash】選項頁,切換的Flash操作界面。在【Debug Lock Tools】欄中,可以點(diǎn)擊【Lock debug access】按鈕,將目標(biāo)MCU的SWD接口上鎖,禁止外部訪問片內(nèi)的Flash,如圖3.6所示。需要注意的時當(dāng)芯片的調(diào)試口被上鎖后,芯片不能夠再進(jìn)行仿真和調(diào)試操作,必須執(zhí)行解鎖擦除操作。
(5)點(diǎn)擊【Debug Lock Tools】欄中的【Unlock debug access】按鈕即可將芯片的SWD接口解鎖,同時,芯片片內(nèi)的Flash代碼將被擦除且RAM上數(shù)據(jù)也會丟失。圖3.6 Debug Lock/unlok操作
7
EFM32加密/解鎖流程
按照以上步驟操作即可將目標(biāo)MCU的SWD調(diào)試接口進(jìn)行上鎖或解鎖,從而達(dá)到保護(hù)芯片片內(nèi)Flash不被非法用戶竊取。
4. 使用Jlink加密/解鎖
下面將以通用仿真器JLink加密和解鎖EFM32 TG840F32芯片為例,闡述詳細(xì)的操作步
驟。
4.1? 硬件連接
用戶使用導(dǎo)線或連接座將JLink仿真器的20pin調(diào)試仿真接口與EFM32的系統(tǒng)進(jìn)行連接,如圖4.1所示。圖4.1 JLink仿真器JTAG/SWD接口與MCU連接技巧提示:如果EFM32 STK開發(fā)板上的板載仿真器出現(xiàn)故障,無法正常對MCU進(jìn)行加密/解鎖操作,也可以按照本小節(jié)描述的步驟執(zhí)行加密/解鎖操作。其中,必須將STK開發(fā)板的板載仿真器與STK板載MCU連接斷開,又或?qū)遢d仿真器通過energyAware Commder軟件,將其【Debug Mode】軟件設(shè)置為【In】模式。
4.2? 操作步驟
通用JLink仿真器與energyAware Commder軟件配套使用時,只能對芯片SWD調(diào)試接口進(jìn)行上鎖加密,不能進(jìn)行解鎖操作。下面將分兩部分分別描述:
4.2.1 加密
(1)按照前文硬件連接要求將JLink仿真器的調(diào)試接口與MCU系統(tǒng)調(diào)試接口進(jìn)行連接。然后將仿真器連接到電腦的USB端口上,并將EFM32TG840系統(tǒng)上電。
(2)運(yùn)行Simplicity Studio軟件中的energyAware Commder軟件,點(diǎn)擊界面左上方的【Connect】按鈕,將仿真器與開發(fā)板連接上。在【Board Information】欄將沒有JLink仿真器的信息,在【MCU Information】欄可以看到芯片的型號和序列號等信息。
(3)點(diǎn)擊界面中左邊的【Flash】選項頁,在【Debug Lock Tools】欄中【unlock Debug Access】按鈕將是灰色無效狀態(tài),【Lock Debug Access】為有效狀態(tài)。點(diǎn)擊【Lock Debug Access】按鈕即可將目標(biāo)MCU的SWD接口進(jìn)行上鎖,如圖4.3所示。
(4)若芯片Debug接口上鎖成功,那么界面中將彈出如圖4.4所示對話框。
8
EFM32加密/解鎖流程
圖4.2? 連接仿真器與energyAware Commder軟件
圖4.3 Lock Debug Access操作
圖4.4 Debug Lock成功芯片SWD接口上鎖后,使得片內(nèi)的Flash被保護(hù),外部仿真器或編程器無法訪問到片內(nèi)Flash的內(nèi)容。
9
EFM32加密/解鎖流程
4.2.2 解鎖
(1)按照前文硬件連接要求將JLink仿真器的調(diào)試接口與MCU系統(tǒng)調(diào)試接口進(jìn)行連接。然后將仿真器連接到電腦USB端口上,并將EFM32TG840系統(tǒng)上電;
(2)運(yùn)行JLink ARM軟件中的JLink Commder軟件,如圖4.5所示。圖4.5 JLink Commder軟件
(3)在Dos命令行界面中輸入“?”(問號),界面中將顯示相關(guān)命令行操作幫助。其中,Unlock命令為對芯片執(zhí)行解鎖操作的命令,如圖4.6所示。圖4.6 JLink Commder命令
10
EFM32加密/解鎖流程
(4)在命令行中輸入:unlock,輸入回車鍵,界面將提示支持解鎖的器件類型,如圖4.7所示。
(5)按unlock命令提示輸入:unlock EFM32Gxxx,然后輸入回車鍵,命令行界面中將返回unlock OK的指示,如圖4.8所示。圖4.8? 解鎖成功
至此,目標(biāo)EFM32 MCU解鎖成功,芯片的SWD調(diào)試接口已被解鎖且片內(nèi)Flash、RAM代碼將被擦除。芯片恢復(fù)SWD接口調(diào)試仿真功能。
?
?
????????????????????????????????????????????????????????????????????? good luck!
總結(jié)
以上是生活随笔為你收集整理的EFM32芯片被锁解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: f2fs学习笔记 - 2. f2fs基础
- 下一篇: HDU-5514-Frogs