By Toradex胡珊逢
Visual Studio Code在软件开发领域具有十分广泛的应用,其支持多种编程语言,丰富的插件极大得提高了开发效率,同时这也是一个非常开放的平台。本文接下来将介绍如何在Visual Studio Code中使用Yocto Project生成的Linux SDK,并针对Arm处理器进行C/C++应用交叉编译和调试。
首先使用Yocto Project生成SDK,我们这里以Apalis iMX8上的minimal console image为例,其对应的SDK为tdx-xwayland-glibc-x86_64-Reference-Minimal-Image-aarch64-apalis-imx8-toolchain-5.2.0.sh。直接运行该文件,将其安装到Linux电脑上,例如/home/ben/Toradex/LinuxDevelop/LinuxSDK/v5/arm64路径下。
然后参考这里的说明在Linux电脑上安装Visual Studio Code。在Extension中安装一些常用的插件,如C/C++,C++ Intellisense,Makefile Creator等。
Visual Studio Code并不像Visual Studio,后者集成了完整的代码编辑、编译和调试工具,Visual Studio Code则提供了相应的框架,根据具体使用的编程语言和用户习惯来实现对应的步骤或者任务。当然也有很多公司、组织或者个人提供现成的插件,这简化了配置任务。目前Visual Studio Code还没有现成的插件可以直接使用Yocto Project生成的Linux SDK,因此我们通过直接配置JSON文件,制定相应的编译和调试步骤。vscode-tdxlinux是配置好的例程,接下来我们将对其中配置进行说明,以及介绍使用方法。
下载上面的例程后,在文件夹中会有下面文件。
hello.c是一个演示代码,Makefile是编译规则文件,.vscode文件夹中四个json文件即用于配置Visual Studio Code。
c_cpp_properties.json
env中包含一些自定义的变量,例如SDK版本,开发板名字,以及SDK根目录。可以用$符号对其引用,例如${env.sdkroot}引用SDK根目录。
configurations中是Visual Studio Code规定的一些设置。includePath包含项目编译用的头文件所在目录,这里包括SDK中文件系统里和gcc本身的头文件。browse是浏览头文件时可以查找的目录,常用于VS Code编写代码时用Go To Definition打开对应文件。defines预定义一些宏,__linux__:指定目标系统为Linux,__aarch64__:目标处理器为64bit Arm。intelliSenseMode将IntelliSense Mode映射到对应的平台和处理器构架,Apalis iMX8是64位处理器,所以这里选择linux-gcc-arm64。这里的配置还可以通过ctl+shift+p组合键盘选择UI方式来配置。
settings.json
这里定了一些变量,其他文件可以通过${config:var}来引用,例如${config:tdxlinuxsdk.sdkroot}。
tasks.json
这里配置了编译相关的任务。
env配置GCC编译工具,编译参数等,这部分内容来自SDK的environment-setup-aarch64-tdx-linux文件。
tasks中是具体编译的任务,以及其实现方法。这里我们使用gcc直接编译文件,或者使用make执行makefile任务,或者单独执行makefile一个任务。配置完成后可以按组合键ctrl+shift+b或者点击Terminal -> Run Build Task调用相关任务。
launch.json
这里配置调试方法。
嵌入式Linux通过使用gdb调试C/C++应用。在configurations中MIMode为gdb,miDebuggerPath为gdb所在目录,这是SDK中包含的软件。
customLaunchSetupCommands是gdb具体执行步骤。首先使用gdb的target remote extend-remote连接IP为192.168.20.91的目标设备即Apalis iMX8,端口为1234。第二步remote put将本地编译好的hello二进制文件上传到Apalis iMX8。最后在main函数处设置一个断点。通过上面设置,点击VS Code中的debug即可进入调试。上面的每个步骤同样可以根据项目或者用户习惯调整。下面我们将演示从编译到调试的流程。
按组合键ctrl+shift+b选择TdxLinux SDK Make.
编译完成后可以通过file命令查看hello程序的格式属性,ARM aarch64格式。
查看Apalis iMX8的IP地址。192.168.20.97也是launch.json中设置的IP。
在Apalis iMX8上运行gbdserver程序,侦听端口为1234。
在hello.c程序的printf函数设置一个断点。
点击VS Code中的调试按键。
点击step over进行单步调试。
在Apalis iMX8调试串口中可以看到执行结果。
总结
上面是VS Code交叉编译和调试的简单介绍,提供了Eclipse之外的另一种开发环境。用户可以重新调整配置文件,并配合其他插件如Makefile Creator实现个性化的IDE。
到此这篇关于VisualStudioCode开发Arm嵌入式Linux应用的文章就介绍到这了,更多相关VisualStudioCode嵌入式Linux内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
贪婪是最真实的贫穷,满足是最真实的财富