ARM DS-5是基於Eclipse的ARM開發環境,有完善的編譯流程,配合Keil插件開發STM32效果更佳。廢話不多,先介紹思路:
1.安裝MDK軟體,就有編譯STM32的工具鏈。我使用是MDK 4.72的。
本文引用地址:http://www.eepw.com.cn/article/201611/317296.htmhttp://pan.baidu.com/s/1o6iHPVG
2.安裝DS-5,並註冊社區版(免費閹割)。
http://pan.baidu.com/s/1mgHX2JY
補充:社區版激活代碼:
http://ds.arm.com/zh-cn/ds-5-community-edition/getting-started/
3.運行DS-5安裝Keil插件
安裝好Keil插件後只是使用了Keil的調試和下載功能,真正與DS-5合體需要在Eclipse設置。
4.設置編譯工具鏈,打開eclipse,Windows->Preferences,彈出Preferences窗口後選擇DS-5->Toolchains,點擊Add。選擇keil安裝目錄下的ARM\ARMCC\bin,然後確認點next、next通常會檢測出armcc的版本
確認後如下圖,黃色的就是添加後的工具鏈。
ds-5的環境設置到這裡完成,然後進行項目設置。
5.源碼複製到DS-5項目。由於Eclipse和mdk的項目文件顯示不一樣,Eclipse是項目文件夾有什麼在Eclipse就顯示什麼,Keil要在設置並加入文件才在項目顯示。所以Eclipse加入程序源碼只要在項目文件夾新建文件並複製源碼就行。
首先在Eclipse新建arm項目,New->C Project,選擇Empty Project和ARM Compiler 5.03,同時輸入項目名稱Finish,下圖因為之前有test1這個項目才出現錯誤。
然後添加原來的源碼到Eclipse的項目文件夾就是了,下圖可以對比一下Keil與Eclipse的項目表示方式,
6.構建設置。項目源碼添加後還要設置給編譯工具鏈的參數。點到項目右鍵選擇Properties,C/C++ Build->Tool Chain Editor,Current builder有CDT Internal Builder和Gnu Make Builder選擇,Gun的使用Makefile,CDT是命令形式。在win7下CDT編譯是明顯快一點。這兩個builder還有的區別是文件路徑的表示不一樣,不過影響不是很大。
然後是C/C++ Build->Settings,根據下面圖基本ok,其實Preprocessor和Includes的設置都與MDK設置對應的。Target CPU是Cortex-M3,
在ARM Linker設置裡面涉及一個比較關鍵一點,就是scat文件,在Keil其實也有但是幾乎看不到它的身影。
在Eclipse裡面就要通過這個給連結器,所以在項目下新建一個Templet.scat,DS-5支持scat後綴的文件有特別的查看方式,不過對於STM32應該不重要。0x08000xxx和0x2000...數字的意義懂stm32的存儲器地址都明白吧。寫好scat文件後記得在ARM Linker的Image Layout設置Scatter file。
最後設置列印出來的信息,-map就列印出每個函數和變量的地址。--list就列印到文件,空著列印到console。
基本的設置完成,利用Keil插件可以進行調試和下載。
補充:
1.不想編譯某文件,點擊文件右鍵->Resource Configurations->Exclude from Build..,並勾上就可以。
2.關於bin文件製作,在stm32使用IAP會發送2進位文件給晶片。除了要scat文件裡面設置地址外,還要使用keil的自帶軟體生成bin。設置同樣在C/C++ Build->Setting->Build,設置Post-build steps的Comand。
STM32開發基本上使用keil和iar,keil很強大,運行快速,設置簡單直觀,模擬和調試工具都做的不錯。IAR個人覺得比較醜陋,雖然keil也不是很漂亮。。而Eclipse,其實一開始我是拒絕的。。。因為它設置比較複雜而且一開始加載很慢,對比keil有沒什麼優勢。但是當你的工程越來越多,分支也開始多的時候,就發現Eclipse的優勢:
1.清晰的項目管理,不用再開多個keil軟體和文件夾
2.與svn方便使用,Eclipse安裝了svn插件就容易的進行版本管理
補充:附上配置好的工程文件
http://pan.baidu.com/s/1kTH5IEb