stm32-eclipse-gnu-jlink开发环境的搭建.ppt
开发板前言(一),开发环境的搭建,eclipseGNU工具链j-Link or wiggler,eclipse安装,JAVA JDK下载直接安装,使用eclipse前必须安装eclipse压缩包下载直接解压后使用,eclipse插件,启动eclipse,选择workbench;在菜单栏中选择Help-Install New Software安装CDT GNU Cross Development Tools(在work with上输入如下地址:http:/Embedded CDT(在work with上输入如下地址:http:/安装General Purpose Tools(在 Work with 下拉菜单中选择All Available Sites)下的:Dynamic Languages Toolkit Remote Development SupportRemote System Explorer End-User Runtime Remote System Explorer User Actions,GNU工具链,arm-2010q1-188-arm-none-eabi.exe请注意版本号下载后直接安装,请记住安装的路径确认是否安装成功,请查看CodeSourcerySourcery G+Litebin这个路径是否存在,并是否至少有以下文件:arm-none-eabi-gcc.exearm-none-eabi-gdb.exe,jLinkARM工具安装,j-Link转换板Setup_JLinkARM_V414b.exe直接安装确认安装完成,查看开始-所有程序中是否有SEGGER这个文件夹,eclipse外使用jLink,在开始,所有程序中找到SEGGER文件夹,选择J-Link GDB Server,J-Link 已连接,开发板已连接,GDB未连接,启动GDBCodeSourcerySourcery G+Litebin运行arm-none-eabi-gdb.exe连接GDB Server,连接GDB Server输入 target remote localhost:2331查看“配置文件”下的.gdb的脚本文件输入GDB命令进行操作,GDB连接成功,openocd安装及配置,wiggler转接板安装下载openocd.rar压缩包解压缩,里面有两个文件夹binopenocd的程序和配置脚本openocd.exestm32.cfggiveio接口驱动使用openocd前需要安装这个驱动备注:需要注意解压后存放的路径,配置启动eclipse菜单栏Run-External tools-External tools Configurations双击左侧Program后,选择新创建的New_configuration,然后再右侧main选项卡中依次修改Name、Location、Working Directory、Arguments,GIVEIO的使用,拷贝GIVEIO.SYS到C:WINDOWSsystem32drivers目录下运行LOADDRV.EXE在输入框中输入c:windowssystem32driversGIVEIO.SYSInstallStart,eclipse外使用openocd,启动windows命令行找到openocd.exe所在的目录例如,我的地址D:TrailBreakersoftwareopenocdbin在命令行中输入该地址,接着输入以下内容:openocd.exe-f stm32.cfg连接到TrailBreaker开发板上,使用telnet连接openocd查看配置文件stm32.cfg连接成功就能看到以下结果:接着就可以输入命令来对开发板进行操作更多操作命令请查看资料openocd.pdf或输入命令help,资料,编写程序的源代码配置文件.rar(启动文件+gdb脚本+ld链接文件)ram配置flash配置,固件库,固件库的相关资料UM0427 STM32F103xx firmware libraryAN2953 如何升级固件库固件库内带有的说明文档,配置文件压缩包,ram配置ram启动文件:startup.cram链接脚本:stm3210e_ram.ldgdb脚本(jLink):stm3210e_ram_jlink.gdbgdb脚本(wiggler):stm3210e_ram_jtag.gdb中断向量(ram):vetors.cvetors.h,flash配置flash启动文件:startup_stm32f10 x_hd.Sflash链接脚本:stm3210e_flash.ldgdb脚本(jLink):stm3210e_flash_jlink.gdbgdb脚本(wiggler):stm3210e_flash_jtag.gdb中断向量(flash):vetors.cvetors.h,新建工程,工程目录结构(推荐)core内核、系统、启动相关peripherals外设库文件scriptsld链接脚本、gdb脚本source应用程序,core目录,固定文件core_cm3.ccore_cm3.hstm32f10 x.hsystem_stm32f10 x.csystem_stm32f10 x.h,根据启动方式选择启动文件(配置文件.rar)选择startup.c(ram)或者startup_stm32f10 x_hd.S(flash)core目录下共8个文件,peripherals目录,外设配置文件stm32f10 x_conf.h外设库文件stm32f10 x_xxx.cstm32f10 x_xxx.h,scripts目录,根据ram启动或者flash启动选择相应的ld链接文件stm3210e_ram.ldstm3210e_flash.ld根据启动方式和调试工具选择.gdb脚本,source目录,存放自己编写的应用程序代码main.c*.c.编译时需要包含该目录,一个新建好的工程,工程编译,设置工程编译环境选中要编译的工程,右击,选择properties,对c/c+build下的settings进行设置选中ARM Sourcery Windows GCC C Linker下的general在右侧Script file中输入工程中scripts目录下的.ld文件的绝对地址完成后,Apply,对C/C+General 下的 paths and Symbols进行设置includes-GNU Cadd.将工程中包含.c,.h,.S的目录全部添加进来完成后,Apply,工程编译选中要进行编译的工程右击选择Build project或者Clean project在console对话框中会给出编译信息如果有错误,可以在其中找到相关提示,若编译没有问题,则在工程目录中会生成两个目录BinariesDebug编译后的结果,编译生成的可执行文件,程序下载,工具+启动模式的组合wiggler+ramwiggler+flashjLink+ramjLink+flash,wiggler+ram,Debug配置Run-Debug Configuration双击Zylin Embedded debug(Native)右侧Debugger在GDB debugger和GDB command file中分别选择arm-none-eabi-gdb.exe和stm3210e_ram_jtag.gdb点击Apply和Close,启动openocdRun-External Tools-openocd(此时在console中会显示连接信息)DebugeRun-Debug History点击要Debug的工程Resume,wiggler+flash,Debug配置Run-Debug Configuration双击Zylin Embedded debug(Native)右侧Debugger在GDB debugger和GDB command file中分别选择arm-none-eabi-gdb.exe和stm3210e_flash_jtag.gdb点击Apply和Close,修改stm3210e_flash_jtag.gdb脚本在monitor flash write_image后输入要下载的.elf文件的绝对路径例如右图启动openocd启动Debug,jLink+ram,Debug配置Run-Debug configurations双击zylin Embedded debug(Native)选中生成的Debug右侧Debugger在gdb debugger和gdb commands中分别找到arm-none-eabi-gdb.exe和stm3210e_ram_jlink.gdb点击Apple,启动j-Link GDB ServerDebugRun-Debug history选中*DebugResume(F8),jLink+flash,启动j-Link GDB Server启动j-Link flash设置目标cpu:options-Project settings-cpu-device中,选择ST STM32F103ZE确定,指定文件File-Open选择.hex可执行文件烧写Target-Auto等待烧写完成运行Target-Start application或者按一下开发板上复位键,TrailBreaker,主芯片:STM32F103ZE512K flash/64K SRAM112 I/OsSDIOUSBAD/DAI2C/I2S/SPI/UART/CAN以太网芯片:DM9000音频芯片:WM8978,固件库简介,该固件库是一个函数包它由程序、数据结构和宏组成,包括了微控制器的所有外设的性能特征包括每一个外设的驱动描述和应用实例外设驱动APIANSI-C标准实时错误检查固件库的通用性,固件库命名规则,系统、源程序文件和头文件命名都以“stm32f10 x_”作为开头,例如:stm32f10 x_gpio.h外设函数的命名以该外设的缩写加下划线开头,每个单词第一个字母大写。例如:GPIO_Init,驱动函数的命名,变量定义,IO类型限定词_I只读访问_O只写访问_IO读写访问数据类型举例int32_t有符号32位数据uint32_t无符号32位数据int16_t有符号16位数据int8_t有符号8位数据,24个变量类型在“stm32f10 x.h”中定义新旧版数据结构对比新版旧版uint32_ts32uint16_ts16uint8_ts8在AN2953中有详细说明,专用数据类型,外设控制寄存器结构,举例:GPIO,在文件“stm32f10 x.h”中,包含了所有外设控制寄存器的结构声明用户可以通过指向各外设的指针来访问外设的控制寄存器。这些指针所指向的数据与各个外设的控制寄存器一一对应,举例GPIO,外设类型定义,外设声明,定义外设类型,外设地址定义,何处定义的?,试计算GPIOA_BASE实际地址对照内存地址分配进行分析,外设声明,如果程序员需要使用外设GPIO,则必须在文件stm32f10 x_conf.h中,选择要用的外设(去掉包含相应头文件那行代码的注释符号),固件库目录结构,core_cm3.hcore_cm3.cstm32f10 x.hsystem_stm32f10 x.hsystem_stm32f10 x.c,stm32f10 x_ppp.hstm32f10 x_ppp.c,ADCCANGPIORCCRTC.,固件库架构,CMSIS架构,固件库的使用,在应用程序中包含“stm32f10 x.h”根据开发板所属系列,在“stm32f10 x.h”中去掉注释相应的define去掉stm32f10 x.h中#define USE_STDPERIPHE_DRIVER的注释符号在stm32f10 x_conf.h中选择要用的外设使用外设API来开发应用程序,配置文件压缩包,启动文件ld链接脚本gdb脚本,启动文件,一般芯片厂商会提供对应芯片的启动文件主要是从减低产品设计周期和成本的角度考虑startup_stm32f10 x_hd.S(flash启动)startup.c(ram启动),启动文件的作用,作用一般为:分配中断向量表;初始化存储器系统初始化堆栈初始化有特殊要求的硬件模块选择处理器工作模式调用主应用程序,链接文件,链接文件一般也会提供stm3210e_ram.ld(ram启动)stm3210e_flash.ld(flash启动)链接文件的作用堆栈分配(大小,位置)存储空间分配数据存放分配,GDB脚本,作用连接gdb serverj-Link gdb serveropenocd gdb server,一个脚本模板,GDB调试模型,使用J-Link,