完整且超简化的linux下stm32开发环境(编译,下载)---测试中

完整且超简化的linux下stm32开发环境(编译,下载)

最近要用stm32开发产品,考虑到以前作高端arm,or32开发以及低端的avr开发都用gcc,因此为了降低学习难度和省钱,决定继续使用gcc。 
经过搜索网络查阅资料,发现stm32的gcc支持虽然没有问题,但是对普通开发者而言,实在过于复杂,至少比avr-gcc复杂太多, 
开发者在编写makefile之外,不得不自己搞定启动初始化代码,甚至自己要写ld文件,这实在不是件舒服的事。 
    因此,在参考网络诸多国内外的大侠提供的资料,综合自己的开发经验,经过一段时间完善,有了这个开发环境(并非集成开发环境IDE), 
实现了普通开发人员无须关心启动初始化代码和ld文件,简化makefile编写,大大降低stm32 gcc入门难度的目的。 
详细功能包括: 
1>无须为自己的程序编写启动代码和ld描述文件,只需要写一个高度简化的makefile(提供了编写范例) 
2>支持最小改动源码情况下,生成可用IAP程序下载的带ROM OFFSET程序(通过makefile控制),方便用户升级 
3>命令行方式下载程序到stm32电路板 
4>GUI方式使用IAP下载 

注意:所有用到的程序均是开源且可免费获得,这里只是将它们综合起来使用 
另:因为本人主要使用Linux环境开发,因此未对win32下进行测试,但是理论上应该是完全和cygwin环境兼容,没有问题。 


首先用户自行下载stm32 gcc环境 
http://www.codesourcery.com/gnu_toolchains/arm/download.html 
注意下载EABI版本 

SDK环境压缩文件    SDK.rar (1.21 MB) 
完整的开发环境设置,包括启动文件,ld文件,makefile模板,st官方fwlib及模板,详细看里面的readme.txt 
由于目前手里只有stm32F103,ld文件模板只有这个的ROM(FLASH)方式,其他芯片模板可参考建立(已经进行了简化,很简单),或者等以后俺添加 

IAP示例    IAP_AN_gcc.rar (231.29 KB) 
针对万利EK-STM32(STM3210B-LK1)的ST官方IAP实例移植及LED测试程序,注意,使用的按键是KEY2,当IAP已装入板子后,启动系统时 
如果检测到KEY2为已经按下状态,则进入IAP模式,否则加载0x8002000起的应用程序 
其中IAP部分makefile包含了如何使用wine调用win32下的stm32boot下载工具来下载iap.bin到目标板 
由于IAP使用了ymodem协议,我使用了linux下可以和这个IAP协同工作的GUI程序cutecom,另还要安装lrzsz,cutecom会自动调用lrzsz, 
cutecom设置示意图如下: 

 
cutecom设置画面 

注意IAP要求输入命令1时,移到input区输入键盘按键"1"即可 

adc及lcd测试示例    adc1_lcd.rar (19.64 KB) 同上,为修改的adc测试程序,额外添加了TIM测试,休眠测试,按键测试及浮点数计算等,默认编译需要使用IAP来下载它。 

编程注意事项: 
1>makefile中,是通过添加OBJS += xxx.o来添加用户文件的,注意后缀不是.c 
2>makefile第一行指定SDK目录位置,自己按自己路径修改 
3>为了使同一个程序代码无须修改即可运行于rom offset模式(使用IAP加载) 
NVIC_Configuration中对应代码需要修改为如下 
#ifdef  VECT_TAB_RAM   
  /* Set the Vector Table base location at 0x20000000 */  
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);  
#else  /* VECT_TAB_FLASH  */ 
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, ROM_OFFSET_SIZE); 
#endif

再补贴个makefile,大家看是否简洁 

STM32_SDK_DIR = /src/work/stm32/SDK 

TARGET = iap 

PCB_BOARD = EK_STM32F 
#RUN_MODE = ROM_RUN 

APP_BASE      = .. 
APP_SRC_DIR   = $(APP_BASE)/source 

CFLAGS         += -I$(APP_BASE)/include 

OBJS += stm32f10x_it.o 
OBJS += stm32f10x_lib.o  
OBJS += stm32f10x_gpio.o 
OBJS += stm32f10x_rcc.o 
OBJS += stm32f10x_flash.o 
OBJS += stm32f10x_usart.o 
OBJS += stm32f10x_wwdg.o 

OBJS += common.o 
OBJS += download.o 
OBJS += ymodem.o 
OBJS += main.o   
########################################################################## 
include $(STM32_SDK_DIR)/pub/config.mk 
######################################################################### 
upload: $(TARGET).bin 
        wine ./stm32boot -e -c com3 $(TARGET).bin 


#########################################################################
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值