1. 程式人生 > >KL25進入低功耗模式無法退出後的晶片救活

KL25進入低功耗模式無法退出後的晶片救活

KL25是一款主打低功耗的晶片。支援9種低功耗模式。而在一些非常低功耗的模式下,偵錯程式是無法工作的。這樣,如果不做除錯,你自己也不知道寫得程式碼是否正確;如果要除錯,就只能把程式碼下載到片上執行,然後利用LED或者串列埠來做些指示,使用最原始的除錯辦法,因為J-link不能工作。

這個時候問題就出來了:如果片子進入低功耗模式,而喚醒的程式碼又不能正確執行,那麼這塊晶片基本上就廢了。因為J-link根本連線不上晶片,我們就沒法操控晶片,以後也沒有辦法下載新的程式碼。該怎麼辦呢?

我最近兩天就遇到了這種情況。本來到手的比賽專案各個模組已經基本完工,為了提高效能,打算寫低功耗模組。結果片子進入了低功耗模式之後,J-link不能工作,而我的中斷喚醒又寫得不正確,結果以後就失去了對片子的控制,這種情況,花了我整整一天才破解,而破解成功也僅僅只是僥倖而已。

破解的辦法就是用J-link擦除flash,重新程式設計。我們先將晶片連上J-link下載器,如果直接用IAR下載程式碼,會提示無法連線,或者提醒得不到時鐘週期。這是因為晶片進入了低功耗模式,J-link的引腳得不到供電。我們可以使用J-flash工具來進行擦除。我當時使用的是SWD模式,因為KL25只支援SWD模式控制。在J-flash配置中找到這款晶片,設定晶片工作為安全模式(不一定需要這麼設定,不過我當時這麼設定了一下,也不知道是不是必須的),然後選擇整片擦除,如果仍然不能擦除,那麼嘗試在點選擦除同時,馬上按下開發板上的復位鍵,這點很重要!因為當你按下復位鍵,系統就會重新啟動,在未進入低功耗之前,J-link將可以得到供電,從而可以工作,對晶片進行控制。

後來我又多次碰到了這樣的情況,每次直接在IAR介面中,點選擦除flash的時趕緊按下復位鍵,就可以擦掉flash重新程式設計。其他的操作是不是必須的我不知道,不過如果碰到了這種情況,那麼一定要試一下擦除的同時按下復位。