2016-03-22 38 views
1

我最近購買了STM32F7發現板[1],因此我嘗試使用openocd對其進行閃存,因爲該板具有嵌入式st-link調試器。我有我的工具鏈工作(我正在使用makefiles和arm-none-eabi-gcc),但我想用eclipse刷機,所以我可以有一個圖形化的調試器。使用openocd進行閃存和調試STM32F7發現

爲了做到這一點,我從他們的git倉庫安裝OpenOCD的,我和下面的配置文件啓動它:

source [find board/stm32f7discovery.cfg] 

然後我在Eclipse中使用以下命令與ARM-NONE-eabi- GDB閃爍板:

target remote localhost:3333 
monitor flash protect 0 0 11 off 
monitor flash erase_address 0x08000000 0x100000 
monitor flash write_image erase "/absolute/path/hello-world.hex" 0 ihex 
monitor reset halt 

我嘗試命令的不同列表,包括第一個從I用來建立在Eclipse上我的調試鏈[2]或從其他SO帖教程[3] [4] 。有時候寫操作會失敗,並且當它不會導致錯誤的PC(例如0xfffffffe而不是0x080004ac,這是復位處理程序的地址)。因此,CPU將嘗試執行一些甚至不存在的內容(在我的內存之外)並且失敗。

你有什麼想法可能是錯的?一個小精度:我正在使用Linux。

乾杯,

安託萬。

[1]:www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/LN1848/PF261641?sc=stm32f7-discovery

[2]:vedder.se/2012/12/debugging-the-stm32f4-using-openocd-gdb-and-eclipse/

[3]:stackoverflow.com/questions/5535110/stm32-gdb-openocd-commands-and-initialization-for-flash -and-RAM調試

[4]:stackoverflow.com/questions/17003519/stm32f4discovery-openocd-telnet-uploading-demo-program

[5]: github.com/texane/stlink

[編輯]

我也試圖從GitHub [5]使用ST-鏈路程序和用gdb加載,我也得到類似的錯誤:

2016-03-23T09:22:22 INFO src/stlink-common.c: Attempting to write 32768 (0x8000) bytes to stm32 address: 134217728 (0x8000000) 
2016-03-23T09:22:22 WARN src/stlink-common.c: Failed to unlock flash! 
EraseFlash - Sector:0x0 Size:0x8000 
Flash page at addr: 0x08000000 erased 
2016-03-23T09:22:22 INFO src/stlink-common.c: Finished erasing 1 pages of 32768 (0x8000) bytes 
2016-03-23T09:22:22 INFO src/stlink-common.c: Starting Flash write for F2/F4/L4 
2016-03-23T09:22:22 INFO src/stlink-common.c: Successfully loaded flash loader in sram 
enabling 32-bit flash writes 
size: 32768 
2016-03-23T09:22:23 INFO src/stlink-common.c: Starting verification of write complete 
2016-03-23T09:22:23 ERROR src/stlink-common.c: Verification of flash failed at offset: 0 
+0

你可以嘗試texane的ST-Link程序從github而不是openocd。它對於ST零件來說非常適合。編程之後,您是否嘗試過進行明確的硬件重置或重新啓動循環? –

+0

我也嘗試了github的st-link,我也無法閃爍我的主板,我總是遇到錯誤(請參閱編輯過的帖子)。由於我無法編程,所以當我重新啓動電路板時,它不會執行任何操作。 – Antoine

+0

嘗試使用st-flash命令行工具,我不知道是否從gdb中閃爍。您也可以在github上查看該特定芯片/電路板的任何已知問題。 –

回答

0

我設法解決了這個問題。事實證明,我必須修改內部選項字節,當我試圖刷新電路板時,這阻止了我。

我用st-link實用程序將它們設置回它們的默認值,現在一切工作正常!可能使用openocd代替,但我還沒有嘗試過。如果有人知道如何去做,他會很高興分享。

有關選項字節的詳細信息,你可以看看參考手冊[1],第80頁至83

[1]:http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/DM00124865.pdf

+0

您能詳細說明您的選項字節是什麼意思嗎? STM32F7內部的那些你如何將它們集成到你的代碼文件中)或ELF或...? – Olaf

+0

@Olaf是的,我編輯我的帖子更多的細節。我正在談論內部選項字節。我沒有故意修改它們,但它一定是偶然發生的(我將操作系統移植到STM32F7,因此它是非常實驗性的)。 – Antoine