1.背景
近期在做一個(gè)小產(chǎn)品,是基于S32K144為MCU的板子。在調(diào)試過程中發(fā)現(xiàn),雖然采用Jlink可以連接上,但是無法用S32DS的Debug模式進(jìn)行調(diào)試。也就是.elf文件無法下載進(jìn)入FLASH,而錯(cuò)誤提示總是如下:
(1)Failed to download RAMCode
(2)Failed to Read Memory xxx
而且讓人崩潰的是焊接了10套板子,有百分之八九十會有這種現(xiàn)象,現(xiàn)象還是一模一樣。
首先是懷疑焊接有問題,焊接了N次,也換過N次MCU,最終的結(jié)果都是一樣的。
xxxxx:真是讓人欲哭無淚
2.排除的N種方法
2.1 是否S32DS的Debug模式有問題
網(wǎng)上遍歷了各種帖子,也搜尋了各種官方的文檔,然而沒有任何作用。并不是各位大牛不牛,只能說沒有對癥下藥
?2.2 懷疑復(fù)位和晶振問題
? ? ? ? ? ? ?既然焊接確保了,電壓也測量了,阻抗也測量了,Debug設(shè)置也沒問題,那是否是復(fù)位和晶振的問題,一查復(fù)位,還真是有問題,出現(xiàn)了謎之一樣的波形:三角波形狀的復(fù)位信號。抱著試試看的心里,看各位廣大的網(wǎng)友是否也遇到類似的情況,還真找到了一遍很相關(guān)的S32K1xx系列MCU應(yīng)用指南之芯片鎖死(lockup)復(fù)位原因分析與恢復(fù)方法詳解 (qq.com)
? ? ? ?剛開始以為看了希望,按照上面的步驟一步步穩(wěn)扎穩(wěn)打,通過SWD讀取MDM-AP狀態(tài)寄存器的命令:
(1)SWDWriteDP 2 0x01000000 //SELECT[31:24] = 0x01選擇MDM-AP,且設(shè)置DPACC寄存器的SELECT[7:4] = 0x0
(2)SWDReadAP 0 ? //通過AP index(A[3:2]=0b00)讀取MDM-AP狀態(tài)寄存器
(3)SWDReadAP 0 ? //dump out真實(shí)的AP寄存器值
然后出現(xiàn)了如下界面:
? ? ? ? 根據(jù)讀取的指令確定FLASH已經(jīng)初始化成功,就開始給FLASH解鎖,解鎖指令就是unlock Kinetis,出現(xiàn)了比較友好的結(jié)果:unlock device ok
? ? ? ? ?以為看到了未來,開始又嘗試用S32DS的debug模式下載程序,然后問題依舊?。。。。。?!令人很抓狂的。
? ? ? ? 是不是復(fù)位的RC值不對,換了幾組RC后,問題依舊存在。
進(jìn)一步抓狂?。。。。。。。。。。。。。?!
?2.3 FLASH Lock?
? ?在嘗試了N次 unlock Kinetis后,也沒有成效,又研究了這個(gè)帖子S32K1xx系列MCU應(yīng)用指南之芯片鎖死(lockup)復(fù)位原因分析與恢復(fù)方法詳解 (qq.com)
? ? 是不是沒有mass? erase的原因,但是直接輸入mass erase沒有任何反應(yīng),Jlink Command根本不識別,后參考Jlink command的Help ,發(fā)現(xiàn)Erase指令,如下圖:
? ?直接輸入Erase,果真能Erase,然后S32DS Debug還是不行。憤慨了,再Erase下,結(jié)果再也連不上Jlink了,MCU變成磚了。憤慨沒用,繼續(xù)搬磚
?令人跟崩潰的,換了MCU,采用Jlink的UI界面手動(dòng)擦除,結(jié)果MCU又變成磚了。又一次躺倒在希望的道路上
?3.N中死法后的重生
既然已經(jīng)死了N次,再來一次,換了顆MCU后,嘗試了下Jliink UI界面的如下指令,如下圖所示
? ? ? ? 既然出現(xiàn)了奇跡,如下圖所示,擦寫、下載、驗(yàn)證都是OK的,重新上電,跑馬燈起來了,整個(gè)世界都亮了。
4.重生后的回味
? ? ? ? 重生后的喜悅是必然的,但是到底是什么原因了,原來官方的手冊寫的很明白,當(dāng)FLASH Memory的安全機(jī)制是激活的時(shí)候,仿真器是可以連上,但是沒法讀取Flash Memory的內(nèi)容的,就出現(xiàn)了Debug模式下的:Failed to Read Memory xxx。
? ? ? ? 那需要怎么解除安裝機(jī)制呢,官方手冊也說了,就是trigger a mass erase。?
? ? ? ?那上文嘗試的幾次Erase怎么還變磚了,那就是擦除的方式不對,導(dǎo)致mass erase disable,這樣無法連接上仿真器,這個(gè)時(shí)候的方法是采用后門鑰匙,但這是天方夜譚,除非你找到原廠支持。
? ? ? 因此,不要隨便擦除,還是按照J(rèn)link自帶的Production Programming就行擦除下載。
5.tips文章來源:http://www.zghlxwxcb.cn/news/detail-421474.html
當(dāng)使用Jlink? UI執(zhí)行Production Programming沒有證書,可以私信。文章來源地址http://www.zghlxwxcb.cn/news/detail-421474.html
到了這里,關(guān)于S32K鎖死之謎?Failed to download RAMCode? Failed to Read Memory?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!