Visual Studio Code(簡稱Vscode)是微軟推出的一款開源的輕量級代碼編輯器,可以在Windows和Linux系統中使用,同時Vscode支持插件擴展,功能十分強大并且靈活,受到了許多軟件開發人員的喜愛,并被許多開發社區推薦,所以在軟件開發的領域中得到了越來越廣泛的應用。英創公司的ESMARC系列(ESM6800H/E,ESM6802,ESM7000,ESM8000)主板也可以在Linux系統下通過Vscode進行應用程序的開發。因為開發主機通常情況下都是X86平臺,所以Vscode默認會使用Linux系統自帶的gcc編譯成X86平臺的可執行文件,而ESMARC系列主板均為ARM平臺,所以就需要進行一些設置讓Vscode使用交叉編譯工具鏈來編譯生成ARM平臺的可執行文件,下面就來介紹具體的設置方法。
英創公司使用的環境為Ubuntu+Vscode,推薦客戶也是用相同的環境,以免出現其他問題。在https://code.visualstudio.com/download中可以下載Vscode最新的deb安裝包,下載完成后,進入到安裝包的目錄中然后使用命令$sudo apt install ./<file>.deb就可以完成安裝。如果遇到問題可以在https://code.visualstudio.com/docs/setup/linux查看詳細的安裝說明。
安裝完成后,在Ubuntu的命令行終端中進入到工程目錄下,然后輸入命令$code .就可以進入到Vscode的編輯界面。Vscode的配置文件默認會放在當前目錄的.vscode目錄中,我們需要使用到c_cpp_properties.json、settings.json和tasks.json這三個文件,關于他們具體的作用,可以參考下面的表格:
文件名 | 描述 |
c_cpp_properties.json | 配置include路徑和IntelliSense |
settings.json | 針對編譯工具的全局環境變量的設置 |
tasks.json | 配置編譯任務 |
英創公司針對ESMARC系列主板已經編輯好了這三個配置文件的模板,用戶只需要稍作修改就能夠使用,下面我們就以一個具體的例子helloworld來演示操作步驟。
首先我們先創建helloworld目錄,然后進入到該目錄中,運行vscode,具體命令如下:
$ mkdir helloworld $ cd helloworld/ $ code .
進入到Vscode界面后,如果是第一次使用Vscode的客戶,建議先安裝插件C/C++ for Visual Studio Code,這個插件能夠讓Vscode支持C和C++語言。在右側邊欄目上選中擴展(快捷鍵Ctrl+Shift+X),輸入ms-vscode.cpptools,然后點擊安裝搜索出來的插件,如下圖:
如果需要更多插件支持,可以參考Using extensions in Visual Studio Code,安裝完成后,我們就可以開始編寫程序和修改配置文件了,選中右側邊欄目上的資源管理器(快捷鍵Ctrl+Shift+E),新建helloword.c文件用于編輯代碼,如下圖:
在編寫代碼之前,我們先進行相關設置,設置完成后可以在Vscode中實現定義查看以及自動補全等功能。先添加一個新目錄.vscode,分別創建c_cpp_properties.json、settings.json和tasks.json這三個文件,然后將英創公司提供的配置文件內容復制到對應的文件中(也可以直接將英創公司提供的配置文件拷貝進去)。如下圖:
對于三個配置文件,其中settings.json和tasks.json需要根據實際的情況修改一下。settings.json文件主要是編譯工具的全局環境變量,所以需要根據實際編譯工具的安裝路徑稍作修改。英創公司提供的settings.json文件中關于ESMARC系列主板(ESM6800H/E,ESM6802,ESM7000,ESM8000)編譯工具的設置已經配置好了,用戶不用做修改,只需要修改GENRIC中的內容。其中PROGNAME用于指定編譯生成文件的名稱,本文例程的名稱為helloworld。SDKROOT為主板交叉編譯工具鏈的安裝路徑,本文中填寫的安裝路徑為/home/hzc/tools/esm8000,客戶需要根據實際的安裝路徑修改。而INCLUDEPATH、HOSTINCLUDEPATH和COMPILERPATH均為include路徑信息,根據實際主板型號修改即可。本文中INCLUDEPATH、HOSTINCLUDEPATH和COMPILERPATH是以ESM8000主板為例,配置文件可以支持ESM6800E/H,ESM6802,ESM7000和ESM8000四種型號的主板。比如使用的ESM7000主板,則INCLUDEPATH需要修改為${config:ESM7000.INCLUDEPATH}。可以參考下面的截圖:
最后還要修改tasks.json中的內容。tasks.json主要是配置編譯任務,這里需要修改CXX、CC、CFLAGS、CXXFLAGS、LIBS環境變量以及command和args中關于編譯器和源文件的配置。其中CXX、CC、CFLAGS和CXXFLAGS于settings.json文件中的INCLUDEPATH類似,根據實際主板型號修改配置項中主板型號就行了,比如使用的ESM7000主板,CXX修改為${config:ESM7000.CXX}。LIBS主要是用于有額外鏈接庫的時候,添加對應的庫文件。比如需要鏈接線程庫,就需要在LIBS中填寫-lpthread。可以參考下圖:
接下來是command和args,command主要是修改使用的編譯器,如果是C工程,command則填寫為CC,如果是C++工程,command則填寫為CXX。args主要是需要修改其中配置源文件的部分,如果源文件是C文件則填寫為${workspaceFolder}/**.c,如果源文件是CPP文件,則填寫為${workspaceFolder}/**.cpp。另外如果工程目錄(${workspaceFolder})下還有有子目錄包含源文件,還需要將子目錄也包含進去,比如創建了src目錄中存放源文件,就要添加一行${workspaceFolder}/src/**.cpp或者${workspaceFolder}/src/**.c,文章的例子中在工程目錄下只有一個helloword.c文件,所以只需要填寫一個${workspaceFolder}/**.c,可參考下圖:
修改完成后,就可以開始編寫應用程序了,因為include路徑已經設置過了,所以Vscode中可以查看編譯器中變量以及函數的定義,并且可以自動補全代碼,十分方便。編輯完成后,就可以進行編譯,選擇終端->運行生成任務(快捷鍵Shift+Ctrl+B),如下圖:
在右側的資源管理器中可以看到在helloword目錄下已經成功生成了名為helloworld的可執行文件,這時通過nfs掛載或者ftp等方式將可執行程序拷貝到主板中,就可以在主板上運行了。
感興趣的客戶可以和英創的工程師聯系,獲取相關的配置文件。
成都英創信息技術有限公司 028-8618 0660