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