嵌入式開發的編程用vim好還是用eclipse cdt好?
兩個都是一類ide的代表,不想在晶元廠商提供的ide上編,想編好後copy過去
我見過的大多數嵌入式開發工程(見過不下500人吧),都是用source insight為主(作為IDE),少數人用slack edit,極少數用ultraedit,更少的人用vim,沒有見過任何人用eclipse
還有,沒人去copy代碼,直接工程就建在目標文件夾,然後編譯器那邊直接編譯就可以了。
----------------------------------
可能跟我的行業有關,我知道的還是有些方向的開發用eclipse的也不少,我用的是純C,所以source insight用的最多,另外,一個項目上萬個源文件,百萬行代碼,語法解析差不多就行了,這麼多代碼別的編輯器全解析是很困難的。國內的大公司尤其通信業基本上都是SourceInsight的天下,偶爾用一下eclipse。 因為一來大公司買得起si正版不用太擔心突如其來的律師函,二來項目一大了以後cdt界面響應慢的缺點就比較明顯了。而堅守用eclipse系的人主要是因為其對於c/cpp的解析還算不錯,而且各操作系統也主動往這個方向靠攏。風河vxworks6以後的編譯器和一些ucos的基本都是集成在eclipse里的國外的話只在小公司待過,si版權太貴所以基本上大家都用的自帶的eclipse。或者現在的sublime text3也不錯,算是個不掏錢用一陣,是我用過最接近si的編輯器了
作者:shoko camel鏈接:知乎專欄來源:知乎著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。緣起,某年周末無聊,嘗試搭建環境的一篇筆記,看了筆記的時間是2013年11月份。
考慮時不時收到詢問Eclipse環境搭建的私信,故首發於知乎,轉載需註明出處,文中描述皆為實際搭建過程記錄,全部配圖來至實際操作截圖。
備註,系統是Windows7,Linux系統過程類似。
1 準備工作
1.1 安裝包
1)Eclipse IDE For C/C++ Developers2)Java Runtime Environment
3)GNU ARM Eclipse Plug-in4)Sourcery CodeBench Lite For ARM EABI5)Zylin Embedded CDT6)Segger JLink ARM_V474a7)STM32F10x Standard Peripheral Library1.2 安裝過程
1.2.1 安裝Eclipse
1)安裝JRE之後將JRE的安裝路徑添加到系統環境變數2)安裝Eclipse安裝之後第一次打開按要求設置workspace即可1.2.2 安裝GNU ARM Eclipse插件1)打開Eclipse軟體選擇Help→Install New Software彈出如下對話框
2)點擊Add彈出如下對話框,點擊Location欄的Archive按鈕選擇已經下載的插件路徑(注意此處使用已經下載完成的插件包來安裝,後面安裝Zylin Embedded CDT採用在線安裝的方式,在Location中填入待安裝插件的地址即可)3)點擊OK後選擇 CDT GNU Cross Development Tools 下面需要安裝的插件4)點擊Next後彈出如下對話框5)繼續點擊Next後選擇I accept the terms of the license agreements 接下來點擊Finish彈出如下對話框6)點擊OK後完成安裝,此後根據提示重啟Eclipse完成插件安裝。
1.2.3 安裝Sourcery G++ Lite1)下載Windows平台安裝版本軟體,安裝到系統C盤下面2)將Sourcery G++ Lite的安裝路徑添加到系統環境變數,這樣工具鏈就可被Eclipse找到3)注意添加路徑要深入到Bin文件下1.2.4 安裝Zylin CDT1)打開Eclipse開發環境選擇Help→Install New Software彈出如下對話框2)在Work with欄中填入插件下載地址http://opensource.zylin.com/zylincdtSTM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupTrueSTUDIOstartup_stm32f10x_hd.S
4)連接文件路徑
STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIOSTM3210E-EVALstm32_flash.ld
2 工程配置
2.1 新建工程
1)打開Eclipse開發環境,新建一個工程File→New→Project彈出如下對話框
2)選擇C/C++下面的C Project在點擊Next彈出如下對話框3)在Project name欄中填入你的項目名稱,Project type中選擇ARM Cross Target Application下面的Empty Project,Toolchains中選擇ARM Windows GCC(Sourcery Lite Bare),然後點擊Finish完成創建4)此時把下載的外設庫中的相關文件拷貝到創建的工程STM32_Sourcery-G++_2013-11-03目錄下,在工程上右鍵選擇Refresh刷新
2.2 啟動與連接文件在固件庫中ST提供了一些編譯器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夾下存在幾個文件夾。TrueSTUDIO是ST官方的編譯器,也是GCC的,因此使用它模板中的配置文件。1)打開STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xStartupTrueSTUDIO
可以看到在在目錄下有好幾個S文件,因為使用的是STM32F103ZET6因此這裡選擇startup_stm32f10x_hd.s,注意需要把後綴改為大寫S,能夠被Sourcery G++識別為彙編文件。
2)打開
STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIO
可以看到在在目錄下有幾個文件夾,因為使用的是STM32F103ZET6因此這裡選擇STM3210E-EVAL文件下的stm32_flash.ld。
2.3 配置工程2.3.1 配置編譯器1)在工程上右鍵選擇Properties彈出如下對話框2)選擇C/C++ Build選項卡Builder type→External builder注意默認的編譯命令是否為cs-make,如果不是請修改。3)選擇Setting選項卡彈出如下對話框,選擇Process為cortex-m3其他默認。
h
speed 4800
exec device = STM32F103ZE
loadbin STM32_Sourcery-G++_2013-11-03.bin 0x8000000
r
g
qc
# connect to the J-Link gdb server
target remote localhost:2331
# Enable flash download and flash breakpoints.
# Flash download and flash breakpoints are features of
# the J-Link software which require separate licenses
# from SEGGER.
# Select flash device
monitor flash device = STM32F103ZE
# Enable FlashDL and FlashBPs
monitor flash download = 1
monitor flash breakpoints = 1
# Clear all pendig breakpoints
monitor clrbp
# Set gdb server to little endian
monitor endian little
# Set JTAG speed to 5 kHz
monitor speed 5
# Reset the target
monitor reset
monitor sleep 100
# Set JTAG speed in khz
monitor speed auto
# Vector table placed in Flash
monitor writeu32 0xE000ED08 = 0x00000000
在下面的編輯框中填入
monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)
break ResetHandler
break main
continue
例如晶元型號為stm32103ze,則下載STM3210ETest,解壓之後,裡面有4個後綴為gdb的文件,分別是
stm32_flash_jlink_1.gdb
stm32_flash_jlink_2.gdb
stm32_ram_jlink_1.gdb
stm32_ram_jlink_2.gdb
其中stm32_flash_jlink_1.gdb與stm32_flash_jlink_2.gdb用於調試flash中的程序。
打開stm32_flash_jlink_1.gdb文件,將其中的內容複製到上面的編輯框中.
打開stm32_flash_jlink_2.gdb文件,將其中的內容複製到下面的編輯框中。
這上下兩個編輯框填入的內容實際就是通過gdb控制jlink的gdb server的腳本,關於他們的含義以及用法請參考jlink軟體包Manuals目錄下的《J-link gdb server user guide》文檔。如果沒有完全適合您的晶元的腳本,那麼您需要適當修改上述腳本,對於stm32系列MCU,您只需要修改STM32F103ZE為您的MCU類型,對於其他型號的MCU配置,您需要查看《J-link gdb server user guide》文檔。
2.3.4 啟動調試1)啟動Jlink安裝包中的JLinkGDBServer2)設置好目標晶元和速度之後點擊OK完成配置3)選擇Debug按鈕下面的STM32_Sourcery-G++_2013-11-03 Debug進入調試模式4)此時的J-Link GDB Server狀態如下5)可以盡情的調試了,設置你的斷點吧,Enjoy it!偶爾寫很短的代碼的時候可以用vim,速度非常快。但是寫大點的程序,我用eclipse + CDT + vim插件。一直好奇說eclipse慢的人用的電腦是啥配置,因為我很普通的電腦(08年配置筆記本)跑eclipse是慢點,但是可以接受。
針對有網路的linux開發用戶級應用的話eclipse非常方便。
cdt + openssh + gdbserver一鍵上傳一鍵調試,比命令行好多了。搭建環境的難點在於目標機如何啟用網路和安裝openssh,配好的話一勞永逸。
總之看需求和現有條件吧,只要能簡化操作,啥都行,不應迷信一種工具。樓主說的是linux下吧?vim就是個編輯器,寫寫小程序還行,可能是我能力原因,大工程駕馭不了。
我有用過Eclipse cdt 開發嵌入式代碼,用戶體驗比一些公司提供的自有的集成開發環境體驗好多了,而且現在大有嵌入式集成開發環境都是在Eclipse上做二次開發的趨勢了。還有如果單獨的編碼的話,emacs vim sublime都是很不錯的,配上ctags以及自動補全等插件
我一直在用eclipse CDT開發嵌入式軟體,非常好用,強烈推薦。1. 效率高,工程管理、代碼編輯都非常高效。2. 集成度高,Git、SVN什麼的都是現成的,甚至還能用Keil插件管理Keil工程,ARM_Linux更不在話下。
首先VIM怎麼就成IDE了?題主是想說Editor么其次我也討厭廠商提供的IDE,目前的解決辦法是用QtCreator的非Qt工程外部導入功能。異常好用。。eclipse和QtCreator差不多,插件更多,但是在我的電腦上不穩定,所以我用QtCreator。(樓上時大大一定沒見過任何人用QtCreator 逃~
推薦閱讀:
※精通某種編程語言學習其他編程語言真的很容易嗎?
※Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什麼關係?
※目前工作是單片機開發和C#上位機,未來該朝哪個方向發展,如何轉型嵌入式上層應用開發?
※學習程序語言也會像學外語一樣會受到母語(第一語言)的影響嗎?
※為什麼代碼注釋中有@符號?