讀取微控制器內部程式的方法
- 使用Keil軟體:如果晶片是Flash型別的,可以使用Keil軟體配合硬體除錯工具進行讀取。首先,需要配置Keil工程,包括去掉硬體除錯中的Load Application at Startup選項,並配置flash為不進行擦寫。然後,進入晶片模擬模式,並以全速執行以確保memory中的資料準確。接著,使用命令視窗輸入儲存memory區命令,如
SAVE C:\\path\\to\\savefile.txt 0x00000000,0x00006750
,其中save
是命令碼,路徑是儲存檔案的地址,起始地址是晶片程式碼區的開始地址。最後,讀取儲存的檔案,如果檔案內容與Keil編譯生成的hex檔案一致,則可以判斷程式碼是否被正確讀取。1 - 使用專用工具:對於某些型別的晶片,如Flash Extractor晶片,可以透過拆卸晶片後放置在介面卡上,使用專用的讀取程式如NAND_Reader.exe進行讀取。這涉及到晶片的拆卸、清潔、放置在介面卡上,並透過軟體選擇儲存轉儲的工作資料夾、選擇晶片、配置等步驟完成讀取過程。
- 使用Jlink工具:對於STM32等型別的晶片,可以使用Jlink工具讀取內部的程式。透過選擇整個Flash區域或手動指定地址範圍進行讀取,讀取成功後可以選擇儲存為Hex格式的檔案,以便後續分析和驗證。
- 透過JTAG或SWD介面:可以透過JTAG或SWD介面將微控制器的程式燒錄到晶片中,也可以透過SC模式下的廠商預留介面進行讀寫操作。此外,還可以透過USB轉串列埠進行下載,其中JTAG模擬器價格較便宜,適合維修工使用,而USB轉串列埠適合初學者使用。2
每種方法的適用場景和優缺點
- 使用Keil軟體:適用於Flash型別的晶片,操作較為複雜,但可以精確控制讀取過程。
- 使用專用工具:適用於特定型別的晶片,需要拆卸晶片,操作複雜但可以處理加密晶片。
- 使用Jlink工具:適用於STM32等型別的晶片,操作簡便,適合批次處理。
- 透過JTAG或SWD介面:適用於需要頻繁更換程式的場合,操作簡便但需要專門的介面和工具。
透過以上方法,可以根據具體的晶片型別和應用場景選擇合適的方式讀取微控制器內部的程式。