Jlink使用技巧之燒寫SPI Flash儲存晶片
前言
大多數玩微控制器的人都知道Jlink可以燒寫Hex檔案,作為ARM模擬偵錯程式,但是知道能燒寫SPI Flash的人應該不多,本篇文章將介紹如何使用JLink來燒寫或者讀取SPI Flash儲存器,JLink軟體包含的工具中,有一個是JFlashSPI工具,這就是一個燒寫和讀取SPI儲存器的工具了。
準備
- 要燒寫程式或讀取程式的的Flash晶片:SPI協議的Flash都可以,如W25Q128。
- JFlashSPI軟體工具:在Jlink系列軟體的安裝目錄下
- JLink V9模擬器
- 要燒寫的檔案:如GBK字型檔檔案,UNIGBK.BIN
硬體連線
Jlink內部集成了SPI協議,部分介面是作為SPI複用功能的,具體硬體連線,如下圖所示:
對於20P的標準JTAG介面
引腳編號 | 名稱 | 輸入輸出 |
---|---|---|
5 | DI | 輸入 |
7 | nCS | 輸出 |
9 | CLK | 輸出 |
13 | DO | 輸出 |
對於10P的JTAG介面
引腳編號 | 名稱 | 輸入輸出 |
---|---|---|
2 | nCS | 輸出 |
4 | CLK | 輸出 |
6 | DO | 輸出 |
8 | DI | 輸入 |
這裡要注意的一點,正版的Jlink模擬器1腳是輸入引腳,是外部提供參考電平的,但由於現在大部分的JLink模擬器都是學習(dao)版的,1腳不是輸入,而是3.3v的輸出,所以可以直接用這個管教來給SPI Flash供電。
1.開啟
有兩個工具,一個是JFlashSPI.exe是圖形化工具,一個JFlashSPI_CL.exe是命令列操作,這裡重點介紹圖形化工具JFlashSPI,開啟Jlink軟體的安裝目錄,雙擊開啟JFlashSPI,介面和之前介紹的JFlash差不太多。
2.連線SPI Flash晶片
點選Target->Connect,如果連線成功的話,會在底部輸出連線資訊,會顯示Flash晶片的型號,生產廠家,Flash ID等等資訊。
就像我這個Flash晶片,絲印明明寫的華邦Winbond W25Q128,這裡讀取的卻是飛索Spansion S25FL128K,難道是盜版晶片?
3.開啟程式檔案
點選File->Open data file,開啟要燒寫的字型檔檔案,支援多種格式的檔案,由於是選擇的Bin檔案,沒有起始地址,所以手動輸入燒寫的起始地址,這裡填寫0就可以了。關於燒寫檔案的格式說明,可以檢視之前的一篇文章:BIN、HEX、AXF、ELF檔案格式有什麼區別
4.下載
點選Target->Auto下載程式到Flash晶片內。
下載完成後,會在底部視窗顯示下載成功的資訊,可以看出燒寫速度還是比較快的,170KB的字型檔檔案,用時不到1秒鐘。
5.程式檔案的讀取
和讀寫微控制器程式一樣,也是支援讀取SPI Flash晶片程式的,為了尊重他人的勞動成果,這裡的介紹僅供學習使用,不可用於商業破解目的。
可以看出,和下載相比,讀寫速度明顯要慢得多,因為是讀取的整個16M的儲存區,所以時間會相對長一些。
6.程式檔案的儲存
程式檔案讀取完成後,可選擇將檔案儲存到本地目錄,儲存格式可根據需要選擇。
7.命令列工具的使用
JFlashSPI_CL.exe是JFlashSPI的命令列工具,通過輸入命令實現讀寫Flash,這裡簡單介紹一下燒寫功能。
在終端執行:./JFlashSPI_CL.exe
可看到一些幫助資訊,主要是指令的說明:
可以看到-connect連線,-open開啟燒寫檔案,-auto燒寫,如果是燒寫,這3個命令就夠了,首先把要燒寫的檔案複製到JFlashSPI_CL.exe同級目錄,輸入指令:
./JFlashSPI_CL.exe -open UNIGBK.BIN 0 -connect -auto
可以看到,燒寫成功
為了方便快捷,我們可以將以上命令寫成一個批處理命令,直接雙擊執行即可,
新建download.bat檔案,並以記事本方式開啟,輸入以下內容
JFlashSPI_CL.exe -open UNIGBK.BIN 0 -connect -auto
echo 程式燒寫完成!
pause
然後將這個bat檔案和要燒寫的字型檔檔案放到一個資料夾下。雙擊直接執行就可以直接燒寫,是不是方便了許多呢?
支援的晶片列表
支援的Flash晶片多達百種,如Atmel的AT25系列,國產兆易的GD25Q系列等等,基本上常見的SPI協議Flash晶片都支援,具體的晶片列表可檢視SEGGER官方網址:List of supported SPI flashes
速度說明
對於不同型號的Flash晶片,Jlink燒寫器最大的寫入速度也不同,具體可參考:
Flash device | Programming speed1 | Flash device | Programming speed1 |
---|---|---|---|
ISSI IS25LP128 | 500 KB/s | Micron N25Q128A | 270 KB/s |
ISSI IS25LD040 | 100 KB/s | Micron M25P10 | 160 KB/s |
ISSI IS25LQ080 | 340 KB/s | Micron M25PX16 | 230 KB/s |
ISSI IS25CD010 | 100 KB/s | Micron M45PE10 | 230 KB/s |
ISSI IS25CQ032 | 190 KB/s | Micron M25PE4 | 215 KB/s |
Macronix MX25L3235E | 285 KB/s | Spansion S25FL128 | 410 KB/s |
Macronix MX66L1G45G | 430 KB/s | Spansion S25FL116K | 265 KB/s |
Macronix MX66L51235F | 315 KB/s | Winbond W25Q128FV | 340 KB/s |
參考資料:
JLink軟體的下載
JLink_Windows_V614b軟體下載連結:JLink_Windows_V614b.exe
Jlink使用技巧系列文章:
- Jlink使用技巧之燒寫SPI Flash儲存晶片
- Jlink使用技巧之虛擬串列埠功能
- Jlink使用技巧之讀取STM32內部的程式
- Jlink使用技巧之單獨下載HEX檔案到微控制器
- Jlink使用技巧之J-Scope虛擬示波器功能
歡迎大家關注我的個人部落格
或微信掃碼關注我的公眾號