VELT-0.2.8对STM32开发的支持(4):链接与调试
来源:互联网 发布:java 当前时间转整型 编辑:程序博客网 时间:2024/05/16 12:36
VELT的全称是Visual EmbedLinuxTools,它是一个与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
在上一节里我们对很多细节没有太在意,在这一节里我们重新整理一下整个工程。不看不知道,一看吓一跳,上一节犯了好几个错误。
我们所用的CPU为STM32F101 RCT6,256K Flash,32K SRAM。
根据ST手册,它应该使用HD的初始化代码,而不是上一节使用的LD,因此将startup_stm32f10x_ld.s文件改为startup_stm32f10x_hd.s。
相应地将STM32F10X_LD这个宏改为STM32F10X_HD。
在system_stm32f10x.c这个文件中有一个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,因此需要做修改。
接下来,我们还需要整理一下链接脚本。
在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里调试:
首先配置好目标机的参数:
这里主要有三项:
目标连接类型必须选择GdbServer,目标机IP选择本机127.0.0.1,目标机端口选择3333,这个端口必须和OpenOcd的gdbserver端口相一致。
在main函数里设置断点,F5调试运行程序:
哈哈,搞定!
bye, JLINK~~~
bye, IAR~~~
- VELT-0.2.8对STM32开发的支持(4):链接与调试
- VELT-0.2.8对STM32开发的支持(1):准备工作
- VELT-0.2.8对STM32开发的支持(2):代码编译
- VELT-0.2.8对STM32开发的支持(3):启动代码
- Velt-0.2.6对Python远程调试的支持
- velt-0.2.7对qemu内核调试的支持
- velt-0.2.7对gdbserver调试的支持
- 用vs2013+velt 进行 stm32 开发小结
- velt-0.2.4中的开发主机配置
- VELT-0.1.3开发: 链接器选项
- VELT-0.1.2开发:支持MinGW
- VELT-0.1.3开发:汇编支持
- VELT-0.1.3开发: 调试参数
- VELT-0.1.5开发:调试方案更改
- 用VS2013+VELT-0.1.4 进行Hi3516 应用程序 的开发
- STM32高级开发(8)-链接器与启动文件
- STM32高级开发(8)-链接器与启动文件
- VELT-0.1.5开发: gdb串口调试内核时信息丢失的问题
- 深拷贝和浅拷贝
- 安卓学习之-ActivityManager
- JavaScript案例学习8–定时器的使用
- strtoul函数的使用
- java爬虫-Jsoup01
- VELT-0.2.8对STM32开发的支持(4):链接与调试
- Acitivity和Service之间消息的传递
- ES-Hadoop学习笔记-初识
- GDI-图形设备接口
- Objective-C学习笔记-NSString
- Java NIO 系列:Java NIO Path
- 身为网络编辑,你知道这些SEO技巧吗?
- bzoj4562【HAOI2016】食物链
- ListView显示第一条数据