在使用 S32K1xx MCU 的過程中,因為某些不當操作導致芯片被鎖、加密的情況偶有發生,在此總結一篇如何解鎖芯片的文檔,希望能夠幫到有需要的人。
?
1.? S32K 芯片被鎖的現象及原因分析
1)在S32K 系列 MCU 開發和生產過程中,可能會出現芯片被鎖的情況,具體表現為:
- 通過 J-Link Commander 我們可以讀到芯片的 ID,但是無法通過 JTAG/SWD 調試接口進行Debug
- 使用 J-Link 調試或下載程序時會提示“Failed to RAMCode”
- 使用 PEMicro debugger(OpenSDA/U-Multilink) 和 Flash Programmer(U-Cyclone) 時會提示如下錯誤,調試無法建立與目標MCU的連接:
?
- MCU 周期性復位,RESET(PTA5)引腳有周期性的復位脈沖信號輸出。復位信號周期大概為 117us,高電平時間為 600~800ns。通過示波器觀察 RESET 波形如下圖所示。
注:高電平時間為?600~800ns?的方波信號是去掉RESET引腳的外部濾波電容時的測量結果,若外部連接有濾波電容,將影響RESET引腳輸出的波形,變成緩慢下降和上升的鋸齒波信號。
?
2)芯片被鎖可能的原因:
- 時鐘配置異常,MCU沒有配置時鐘、時鐘被倍頻等。
- 燒寫程序時斷電。
- MCU 外部電路異常(比如 I/O 引腳電平超出工作電壓允許的范圍、I/O 外部電路先于 MCU VDD 上電等)導致 MCU 復位失敗,Flash 初始化異常。
- 修改了 0X400-0X40F地址內容,如果是這個原因,在 J-Link Commander 工具中輸入命令“connect”后,會提示“Protection bytes in flash at addr. 0x400 – 0x40F indicate that readout protection is set.”
2.? 使用 Multilink 解鎖
1)通過 mass erase 解密:
連接 PEMicro debugger,如下圖打開“Debug Configuration”-> 選中要燒錄的程序 -> “Debugger”-> 勾選“Emergency Kinetis Device Recovery by Full Chip Erase”,之后燒錄程序即可解密 MCU。
?
2)如果 PEMicro 版本較新,則無需勾選上述選項,如下圖所示,在 Debug 頁面會自動彈出芯片已被鎖提示窗口,選擇“Yes”即可解密芯片。?
3.? 使用 J-Link 解鎖
1)使用 J-Link Commander 的“unlock Kinetis” 命令解鎖:
斷電后將復位引腳拉低到地(或按下復位按鍵)再上電,連接 J-Link 到板子。打開 J-Link Commander(J-Link 自帶) 輸入“unlock Kinetis”,即可執行 mass erase 解密。
2)通過 J-Flash 擦除解鎖:
- 打開 J-Flash(J-Link 自帶)選擇創建新的工程,之后點擊 Start J-Flash:
- 在創建選項卡里選擇芯片,點開后在子選項卡的 Manufacturer 選擇芯片廠商,再選擇對應型號(例如 NXP S32K116),下載方式等,配置完成后點擊 “OK”。
注:在開發階段,使用 J-Link 作為S32K1xx編程和調試器時,使用不帶“ALLOW SECURITY”的Flash算法,從而防止芯片被意外加密。
?
- 確保 J-Link 與板子已連接后,點擊“Target”-> “Connect”,如果 J-Flash 頁面左下角顯示連接成功。點擊“Target”-> “Erase chip”進行擦除操作。完成上述操作后再次嘗試燒錄程序。
- 如果上面的方法無效,可以將復位引腳拉低,連接后再點擊“Target”->“Erase chip”。
4.? Tips
1)擴展塢、HUB 等轉接器也會影響燒錄,如果上述方法都無法解鎖,請更換轉接口,將下載器重新上電,多嘗試幾次。比如我就遇到過,Multilink 直連電腦和板子時無法解鎖,但是通過 USB 2.0 的 Hub 連接電腦就能夠成功解鎖的情況,原因暫時不明。
2)安裝 J-Link 軟件包時,除了會自動安裝最新的 Flash 算法外,還會安裝一些有用的上位機軟件,比如 J-Flash,J-Link Commander 等,并會將最新的驅動和 Flash 算法更新到 PC 上已經安裝的支持 J-Link 的 MCU 應用程序開發 IDE,比如 S32DS、Keil MDK 和 IAR 等。
?
以上就是 S32K 芯片的解鎖方法,如果還有其他解鎖方式的話歡迎大家指出。如果有任何問題或疑慮,都可以在文章下方留言哦!
?
5. 參考文獻
[1] S32K1xx Series Reference Manual.pdf,NXP
[2] Production Flash Programming Best Practices for S32K1xx MCUs.pdf,NXP
點擊閱讀原文,了解更多精彩內容~