专栏中心

EEPW首页 > 专栏 > VisualStudioCode开发Arm嵌入式Linux应用

VisualStudioCode开发Arm嵌入式Linux应用

发布人:toradex 时间:2021-04-22 来源:工程师 发布文章

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++ IntellisenseMakefile Creator 等。

 

Visual Studio Code 并不像 Visual Studio,后者集成了完整的代码编辑、编译和调试工具,Visual Studio Code 则提供了相应的框架,根据具体使用的编程语言和用户习惯来实现对应的步骤或者任务。当然也有很多公司、组织或者个人提供现成的插件,这简化了配置任务。目前 Visual Studio Code 还没有现成的插件可以直接使用 Yocto Project 生成的 Linux SDK,因此我们通过直接配置 JSON 文件,制定相应的编译和调试步骤。vscode-tdxlinux 是配置好的例程,接下来我们将对其中配置进行说明,以及介绍使用方法。

 

下载上面的例程后,在文件夹中会有下面文件。

image001.png

 

hello.c 是一个演示代码,Makefile 是编译规则文件,.vscode 文件夹中四个 json 文件即用于配置 Visual Studio Code

 

c_cpp_properties.json

image002.png

 

env 中包含一些自定义的变量,例如 SDK 版本,开发板名字,以及 SDK 根目录。可以用 $ 符号对其引用,例如 ${env.sdkroot} 引用 SDK 根目录。

 

image004.png

configurations 中是 Visual Studio Code 规定的一些设置。includePath 包含项目编译用的头文件所在目录,这里包括 SDK 中文件系统里和 gcc 本身的头文件。browse 是浏览头文件时可以查找的目录,常用于 VS Code 编写代码时用 Go To Definition 打开对应文件。defines 预定义一些宏,__linux__:指定目标系统为 Linux__aarch64__:目标处理器为 64bit ArmintelliSenseMode IntelliSense Mode 映射到对应的平台和处理器构架,Apalis iMX8 64 位处理器,所以这里选择 linux-gcc-arm64。这里的配置还可以通过 ctl+shift+p 组合键盘选择 UI 方式来配置。

image006.png

 

settings.json

image008.png

这里定了一些变量,其他文件可以通过 ${config:var} 来引用,例如 ${config:tdxlinuxsdk.sdkroot}

 

tasks.json

这里配置了编译相关的任务。

image010.png

env 配置GCC 编译工具,编译参数等,这部分内容来自 SDK environment-setup-aarch64-tdx-linux 文件。

 

image012.png

tasks 中是具体编译的任务,以及其实现方法。这里我们使用 gcc 直接编译文件,或者使用 make 执行 makefile 任务,或者单独执行 makefile 一个任务。配置完成后可以按组合键 ctrl+shift+b 或者点击 Terminal -> Run Build Task 调用相关任务。

image014.png

 

 

launch.json

这里配置调试方法。

image016.png

嵌入式 Linux 通过使用 gdb 调试 C/C++ 应用。在 configurations MIMode gdbmiDebuggerPath gdb 所在目录,这是 SDK 中包含的软件。

 

image018.png

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.

image020.png

 

编译完成后可以通过 file 命令查看 hello 程序的格式属性,ARM aarch64 格式。

image022.png

 

查看 Apalis iMX8 IP 地址。192.168.20.97 也是 launch.json 中设置的 IP

image024.png

 

Apalis iMX8 上运行 gbdserver 程序,侦听端口为 1234

image025.png

 

 

hello.c 程序的 printf 函数设置一个断点。

image026.png

 

点击 VS Code 中的调试按键。

image028.png

 

 

点击 step over 进行单步调试。

image030.png

 

Apalis iMX8 调试串口中可以看到执行结果。

image032.png

 

 

总结

上面是 VS Code 交叉编译和调试的简单介绍,提供了 Eclipse 之外的另一种开发环境。用户可以重新调整配置文件,并配合其他插件如 Makefile Creator 实现个性化的 IDE


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: iMX8 VSCode Ycoto NXP Linux Toradex Apalis

相关推荐

大联大世平集团携手NXP举办线上研讨会,揭秘主动式悬架控制板及S32K3选型

U-BOOT 与 MontaVista Linux 的移植

基于ARM的嵌入式Linux系统开发 中

视频 2009-10-22

linux入门精华

Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责

汽车暖通空调(HVAC)控制参考设计

Ceva在恩智浦的软件定义车辆处理器上实现实时人工智能加速

OSM模块由NXP i.MX 95驱动,用于边缘 AI

NXP 发布eIQ代理AI框架,实现安全边缘自治

基于ARM的嵌入式Linux系统开发 上

视频 2009-10-22

基于ARM的嵌入式Linux系统开发 下

视频 2009-10-22

FFT公司9200的板子的资料

实时Linux技术:如何在嵌入式LINUX中应用实时特性

视频 2009-10-22

嵌入式Linux优化:加快系统起动和应用起动的过程

视频 2009-10-22

基于 Zephyr 实时操作系统与恩智浦平台搭建可扩展嵌入式系统

彻底告别486:Linux内核维护者正式移除英特尔486处理器支持

Kontron与Congatec合作开发安全的嵌入式Linux平台

走进智能工厂 为何智能诊断是持续运行的关键

ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux

更多 培训课堂
更多 焦点
更多 视频

技术专区