1. 程式人生 > >J-Link固件燒錄以及使用J-Flash向arm硬件板下載固件程序

J-Link固件燒錄以及使用J-Flash向arm硬件板下載固件程序

位置 size win7 64 文件 blog 丟失 卸載 軟件 article

這篇文章的最初版本是在15年寫的https://blog.csdn.net/u010592722/article/details/45575663,後來又遇到了一些新問題,故更新在了這裏。

一、始於安裝新版的MDK5.11a後,J-Link不能使用,提示安裝新固件雲雲

用新版本的STM32集成開發環境MDK5.11a(之前用的4.13a)鏈接J-Link下載程序,如果J-Link固件版本過低則點擊J-Link設置按鈕時,會有提醒J-Link驅動有新版可安裝(不可忽視,強制安裝更新)。不過安裝之後,會有彈窗提示連接器是山寨雲雲,接著MDK就掛掉了,也就是其固件程序已丟失。針對這個問題,

(1)重新刷J-Link V8固件程序(以下操作的先後順序不要搞錯了)

  1.使用USB線連接J-Link與PC機,以提供J-Link工作電源;

  2. 短接ERASE(E) 的兩個過孔約5秒。斷開ERASE(A)位置的兩個過孔的短接。然後拔掉J-Link與PC間的USB線;

  3.短TST(T)的兩個過孔;

  4.使用USB線連接J-Link與PC機,至少超過10秒後,拔掉USB線,停止給J-Link供電(此過程中,TST(B)一直處於可靠的短接狀態);

  5.斷開圖中TST(B)處的短接

          技術分享圖片

重燒固件的關鍵是在完成上述5各步驟後,再次連接J-Link,要確保設備管理器中驅動的狀態是“未識別的設備”雲雲,如果已經自動安裝了一個似乎是“SAM...(名字記不全了)”之類的相關驅動,統統卸掉(卸載完畢最好重啟一下)。凡是不能使用SAM-PROG這個軟件自動燒錄固件的電腦(比如筆者的win7 64位筆記本),推薦使用sam-ba_2.14(親測多次可用)手動燒錄。由於這款軟件是Atmel公司的,正如前面所述,打開這款軟件連接J-Link,應確保J-Link的驅動在設備管理器中顯示的是“Atmel...”(名字記不太清了,這個驅動安裝前提示J-Link驅動未識別->右鍵更新驅動->手動瀏覽電腦本地更新->C:\Program Files (x86)\Atmel\sam-ba_2.14\drv(sam-ba_2.14安裝目錄下)->更新)。

只有正確安裝了Atmel公司的相關驅動方可與sam-ba_2.14連接(打開軟件,選擇正確的串口,目標板一般選at91sam7s64-ek,然後點擊連接)。進入軟件,添加固件程序所在文件目錄,點擊發送即可完成固件的燒錄(期間會有兩次提示加密解鎖之類的,總之,下載前解鎖加密,下載後加密即可)。

(2)解決與STM32的MDK連接時的J-Link更新問題

方法一:簡單粗暴,將J-Link驅動SEGGER安裝目錄中的JLinkARM.dll替換掉MDK安裝目錄ARM/Seggeer中的JLinkARM.dll即可(親測可用);

方法二:J-Link重新燒錄的固件需用UE或者WinHex這個軟件做些修改(主要是修改S/N號,可參考https://blog.csdn.net/a86458977/article/details/46747065)。固件不修改的後果是,進入MDK設置J-Link是同樣是要提醒更新J-Link驅動(沒試過

)。

二、使用J-Flash燒錄ARM9固件程序U-Boot

首先參考韋東山使用J-Link燒錄固件程序的pdf文檔,確保操作步驟及配置正確(s3c2440.jflash作為J-Flash項目)。

打開J-Flash,使用J-Link連接ARM9板子,點擊Target標簽中的connect,然後可能會出現固件需要更新的提示。此時,若不更新則總是會出現連接超時而失敗;若更新仍可能出現失敗。為何會更新失敗?

技術分享圖片

首先想到的可能是上文提到的需要修改固件S/N碼的問題,嘗試修改後,依然無果。後來想到,下載固件的過程中會彈出兩個提示框,詢問是否對J-Link固件加鎖?那麽下載的過程是需要解鎖的,否則無法下載;而下在完成後,通常就加上鎖避免其他程序以外修改從而破壞該固件。但是,這樣也就可能導致後來更新固件的時候,無法寫入新的固件的問題。想到這裏,再次重刷了一遍固件程序並以解鎖狀態結束。之後,再次點擊Target標簽中的connect,同意刷新固件,便更新成功了(我猜想還有一種方法是通過修改固件的日期?因為是否提示更新,主要是依據原固件是否為最新編譯日期。不過這種方法並未得到驗證)。

J-Link固件燒錄以及使用J-Flash向arm硬件板下載固件程序