這篇文章的最第一版本是在15年寫的https://blog.csdn.net/u010592722/article/details/45575663,後來又遇到了一些新問題,故更新在了這裏。加密
1、始於安裝新版的MDK5.11a後,J-Link不能使用,提示安裝新固件云云spa
用新版本的STM32集成開發環境MDK5.11a(以前用的4.13a)連接J-Link下載程序,若是J-Link固件版本太低則點擊J-Link設置按鈕時,會有提醒J-Link驅動有新版可安裝(不可忽視,強制安裝更新)。不過安裝以後,會有彈窗提示鏈接器是山寨云云,接着MDK就掛掉了,也就是其固件程序已丟失。針對這個問題,.net
(1)從新刷J-Link V8固件程序(如下操做的前後順序不要搞錯了)blog
1.使用USB線鏈接J-Link與PC機,以提供J-Link工做電源;開發
2. 短接ERASE(E) 的兩個過孔5秒左右。斷開ERASE(E)位置的兩個過孔的短接。而後拔掉J-Link與PC間的USB線;文檔
3.短TST(T)的兩個過孔;get
4.使用USB線鏈接J-Link與PC機,至少超過10秒後,拔掉USB線,中止給J-Link供電(此過程當中,TST(T)一直處於可靠的短接狀態);flash
5.斷開圖中TST(T)處的短接 編譯
重燒固件的關鍵是在完成上述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安裝目錄下)->更新)。pdf
只有正確安裝了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驅動(沒試過)。
2、使用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,贊成刷新固件,便更新成功了(我猜測還有一種方法是經過修改固件的日期?由於是否提示更新,主要是依據原固件是否爲最新編譯日期。不過這種方法並未獲得驗證)。