嵌入式開發的編程用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++ Developers

2)Java Runtime Environment

3)GNU ARM Eclipse Plug-in

4)Sourcery CodeBench Lite For ARM EABI

5)Zylin Embedded CDT

6)Segger JLink ARM_V474a

7)STM32F10x Standard Peripheral Library

1.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++ Lite

1)下載Windows平台安裝版本軟體,安裝到系統C盤下面

2)將Sourcery G++ Lite的安裝路徑添加到系統環境變數,這樣工具鏈就可被Eclipse找到

3)注意添加路徑要深入到Bin文件下

1.2.4 安裝Zylin CDT

1)打開Eclipse開發環境選擇Help→Install New Software彈出如下對話框

2)在Work with欄中填入插件下載地址http://opensource.zylin.com/zylincdt

3)選中 Zylin Embedded CDT點擊Next後彈出對話框

4)點擊Next後選擇I accept the terms of the license agreements 接下來點擊Finish彈出如下對話框

5)點擊OK後完成安裝,此後根據提示重啟Eclipse完成插件安裝。

1.2.5 安裝JLink ARM

1)安裝Segger JLink ARM後將安裝目錄添加到系統環境變數

2)安裝之後軟體如下,注意Jlink、JLinkGDBServer、JFlashARM區別,請參考安裝目錄下面Doc中文檔。

1.2.6 STD_PERIPH_DRIVER

1)下載官方最新外設驅動庫STM32F10x_StdPeriph_Lib_V3.5.0

2)驅動庫結構如下

3)啟動文件路徑

STM32F10x_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其他默認。

4)選擇ARM Windows GCC Compiler(Sourcery Lite Bare)下面的Preprocessor添加兩個預定義STM32F10X_HD和USE_STDPERIPH_DRIVER

5)選擇ARM Windows GCC Compiler(Sourcery Lite Bare)下面的Directories依次添加頭文件路徑

6)選擇ARM Windows GCC Linker(Sourcery Lite Bare)下面的General添加連接腳本文件

7)選擇ARM Windows GNU Create Flash Image(Sourcery Lite Bare)下面的Output選擇為binary

8)在工程上右鍵選擇Build Project等待編譯完成

2.3.2 下載配置

需要配置一個Eclipse下載腳本

1)新建一個文本jlink_flash.txt(在工程根目錄下面)添加如下腳本

h
speed 4800
exec device = STM32F103ZE
loadbin STM32_Sourcery-G++_2013-11-03.bin 0x8000000
r
g
qc

2)需要把編譯後的bin文件拷貝到工程根目錄下面,需要與jlink_flash.txt在同一個目錄。

3)添加Eclipse外部工具,添加一個菜單項實現燒錄。選擇Run→ External Tools →External Tool Configurations。依次在Location中填入Jlink的安裝路徑,Working Directory選擇為當前工程路徑,Argument中填入jlink_flash.txt。

4)點擊Apply保存後點擊Close關閉,這樣在Eclipse菜單Run→External Tools下就可以看到新添加的jlink_flash選項了。

2.3.3 調試配置

注意在這裡我們添加對CPU寄存器觀察等插件的安裝(Eclipse Embedded System Register View Plugin)

1)選擇Run→ Debug Configurations彈出如下對話框

2)在Zylin Embedded debug(Native)上面右鍵選擇New彈出如下對話框,選擇Main選項卡填入當前工程的axf/elf文件,然後勾選Application Console

3)選擇Debugger選項卡,在GDB debugger欄填入arm-none-eabi-gdb,GDB command file欄不填

4)選擇Commands選項卡,依次在上下兩個編輯框填入如下內容

在上面的編輯框中填入(以STM32F103ZE晶元為例)

# 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

6)點擊Apply保存之後Close完成設置。

上面的腳本可以在這裡找到參考腳本http://www.yagarto.de/,根據您的晶元型號下載合適的壓縮包,解壓之後,其中prj目錄中會有若干gdb文件。

例如晶元型號為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安裝包中的JLinkGDBServer

2)設置好目標晶元和速度之後點擊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#上位機,未來該朝哪個方向發展,如何轉型嵌入式上層應用開發?
學習程序語言也會像學外語一樣會受到母語(第一語言)的影響嗎?
為什麼代碼注釋中有@符號?

TAG:編程 | 嵌入式開發 |