VELT-0.2.8對STM32開發的支持(4):鏈接與調試
來源:程序員人生 發布時間:2016-09-03 15:49:32 閱讀次數:2656次
VELT的全稱是Visual EmbedLinuxTools,它是1個與visual gdb類似的visual studio插件,用以輔助完成Linux開發。利用這個插件,將可以在visual studio的IDE中進行Linux利用程序的開發(包括編譯和調試),也能夠進行uboot和linux內核的編譯,并根據編譯時的毛病信息正肯定位到源碼。目前的版本是0.2.7,支持vs2012/vs2013/vs2015。
下載地址:http://download.csdn.net/user/lights_joy
Velt討論QQ群:375515651
在上1節里我們對很多細節沒有太在乎,在這1節里我們重新整理1下全部工程。不看不知道,1看嚇1跳,上1節犯了好幾個毛病。
我們所用的CPU為STM32F101 RCT6,256K Flash,32K SRAM。
根據ST手冊,它應當使用HD的初始化代碼,而不是上1節使用的LD,因此將startup_stm32f10x_ld.s文件改成startup_stm32f10x_hd.s。
相應地將STM32F10X_LD這個宏改成STM32F10X_HD。
在system_stm32f10x.c這個文件中有1個CPU頻率的定義:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
#define SYSCLK_FREQ_24MHz 24000000
#else
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
#define SYSCLK_FREQ_36MHz 36000000
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
/* #define SYSCLK_FREQ_72MHz 72000000 */
#endif
這里默許選擇的是72M,但CPU實際工作頻率只能在36M,因此需要做修改。
接下來,我們還需要整理1下鏈接腳本。
在STM32庫的Projects目錄下,提供了很多的示例工程,直接取其中的某個鏈接腳本為模板,根據實際情況修改FLASH和RAM的定義:
/* Highest address of the user mode stack */
_estack = 0x20007FF8;
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0; /* required amount of heap */
_Min_Stack_Size = 0x800; /* required amount of stack */
/* Specify the memory areas */
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K
}
主要就是_estack,FLASH LENGTH和RAM LENGTH這3個參數。
終究的工程就是這個模樣的:

F7生成:

接下來試試在VS里調試:
首先配置好目標機的參數:

這里主要有3項:
目標連接類型必須選擇GdbServer,目標機IP選擇本機127.0.0.1,目標機端口選擇3333,這個端口必須和OpenOcd的gdbserver端口相1致。
在main函數里設置斷點,F5調試運行程序:

哈哈,弄定!
bye, JLINK~~~
bye, IAR~~~

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈