完整且超簡化的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 


#########################################################################
發佈了42 篇原創文章 · 獲贊 17 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章