当前位置: 代码迷 >> 综合 >> 如何使用 VSCode 开发 RT-Thread Smart 应用程序
  详细解决方案

如何使用 VSCode 开发 RT-Thread Smart 应用程序

热度:48   发布时间:2023-12-21 14:38:15.0

简介

RT-Thread Smart做为一个“新”的系统,在开发上相比原来的RT-Thread模式还是存在着挺大的不同。原来的RT-Thread开发,是把相关的应用都写入到内核中,最终编译在一个映像中进行运行,基本的过程就是编写代码,编译,烧写,运行或调试。而内核和应用独立的开发方式则是,内核相对稳定、固定,改动的基本上都是应用程序。所以一般是编写应用程序,编译,然后通过一定的方式放入到目标板上进行运行。这个也是Linux的一贯思路、方式,会有一个把应用程序放入到目标板的过程,Linux下可以是NFS网络文件系统的方式,然后调试也并不是都具备,或者有的时候使用命令行的gdb调试模式等<唔,有些些复杂>。

 59f1311b1d7eeed772b646533cb90021.png

在rt-smart上也一直在思考如何简化应用程序开发,最初的有RT-Thread Studio集成开发环境,基本上可以做到创建应用程序,编译,调试的完整过程。但随着rt-smart的往后延申、发展,因为它同时也提供了完整POSIX环境,可以把Linux的一些应用程序无缝地移植到rt-smart上,在编译的时候更好的方式是在Linux下进行。这个时候只支持Windows的RT-Thread Studio就有些没那么很好的满足要求了。而同时VS Code还有运行在Windows主机,远程ssh穿越到Linux的模式,这样使用VS Code无疑会是一种便利并小巧的模式。在这样的考虑下,那么是否可以有一份简单的VS Code插件,把开发变得更简单。

2acff82f9c8f070aea1650d0b23d0e8f.png

不服就干,一键,编译/下载/调试,三连击!

VS Code的RT-Thread Smart插件介绍

在这样的想法下,VS Code下的RT-Thread Smart插件扩展就出炉了,简单就是它的方式,支持的功能包括:

l 创建 RT-Thread Smart 工程

l 支持 CMake、Make、scons 等构建方式

l 支持清理工程

l 支持一键下载、调试

l 支持在不同的平台,例如 Linux、Windows下进行开发

安装VS Code RT-Thread Smart插件

在使用RT-Thread Smart插件时,首先是需要在VS Code中安装它。目前VS Code RT-Thread Smart插件已经上传到VS Code市场,所以安装非常方便,可以直接在VS Code 的扩展市场中搜索 RT-Thread Smart,点击安装即可:

b63f4489c18051503486bc96b21c8c9d.png

下面我们配合着运行RT-Thread Smart的ARM Cortex-A7开发板,ART-pi smart来使用、体验一番吧。

搭建ART-Pi Smart环境


硬件环境搭建

● 串口连接:下方的 USB Type-C 接口,既是用作电源供电,同时也是 USB 转 UART 接口,主要用于系统的控制台命令行交互,包括控制台输入和输出

81fa6295ee62967cc3a1d9465bf66a6a.png

● 网络接口:通过路由器和网线(或者通过板载的 RW007 WiFi 模块),将开发板和测试电脑连接在同一个局域网内

(ART-Pi Smart开发板具备串口USB Type-C供电的功能,但如果你需要跑更复杂的液晶屏应用时,可能会出现供电不足的问题,这个时候可以外接USB Type-C到USB接口的方式来解决供电的问题)

准备软件环境

(以下链接请复制至外部浏览器打开)

要在ART-Pi Smart上运行RT-Thread Smart系统,需要下载ART-Pi Smart开发板SDK及工具链并进行安装。开发板的SDK放在gitee仓库中,它主要包括 RT-Thread Smart 操作系统的源码,BSP 驱动,应用程序 demo 等。可以通过 Git 方式下载 ART-Pi Smart SDK 包(Windows、Linux都可以):

git clone https://gitee.com/rtthread/ART-Pi-smart.git

RT-Thread Smart的工具链是基于musl libc的GNU GCC工具链,其中还包括了针对内核的libc以及用户态针对应用程序的libc。用户可以根据自己的开发平台(Linux,Windows)情况来选择不同版本的工具链,下载链接是:

0ae5a8ae87d263bc9929f2b52ef08fb0.png

https://pan.baidu.com/s/1p7PRhV3dTGIb7hxv34YWYw 

提取码: ndxq

e6ccbce8f862444c2df50003ab267ecf.png

在下载工具链后,需要把它解压到ART-Pi smart SDK的/tools/gnu_gcc路径下。

另外在ART-Pi smart开发板的eMMC内已经固化了一个 rt-smart 内核固件,可以上电直接开机使用(如果希望下载自己编译的内核,可以通过 u-boot + tftp 或 usb 方式加载运行)

小试牛刀写个应用程序试试

这里将以 Windows 环境下使用 VS Code 开发 rt-smart 用户应用程序为例来体验VS Code的RT-Thread Smart插件扩展。

创建工程

在 VS Code 上使用Ctrlt+Shift+P快捷键,输入 RT-Thread 关键字,选择“创建 RT-Thread Smart 工程”, 然后按提示执行以下操作:

● 输入 ART-Pi Smart的 SDK 根目录

● 输入工程名称

● 选择构建方式

  • Linux 平台支持 CMake、Make、scons 等构建工具

  • Windows 平台支持 scons 构建工具 

以 Windows 环境下使用 VS Code 开发 rt-smart 用户应用程序为例

e217536dc68923f07fd3b1a4cac980c2.png

添加用户功能代码

用户应用,我们来点个LED灯:

1#include <stdio.h>23#include <rtthread.h>45#include <rtdevice.h>678#define GET_PIN(PORTx, PIN)  (32 * (PORTx - 1) + (PIN & 31))9
10#define LED_PIN  GET_PIN(5,3)
11
12
13
14struct rt_device_pin_mode
15
16{
17
18    rt_uint16_t pin;
19
20    rt_uint16_t mode;
21
22};
23
24struct rt_device_pin_status
25
26{
27
28    rt_uint16_t pin;
29
30    rt_uint16_t status;
31
32};
33
34
35int main(int argc, char **argv)
36
37{
38
39    rt_device_t pin_dev;
40
41    struct rt_device_pin_mode pin_mode;
42
43    struct rt_device_pin_status pin_status;
44
45
46rt_kprintf("hello world!\n");
47
48
49
50    pin_dev = rt_device_find("pin");
51
52    rt_device_open(pin_dev, RT_DEVICE_OFLAG_RDWR);
53
54    pin_mode.pin = LED_PIN;
55
56    pin_mode.mode = 0;
57
58
59    rt_device_control(pin_dev, 0 ,(void*)&pin_mode);
60
61    pin_status.pin = LED_PIN;
62
63
64    pin_status.status = 1; // close led
65
66    rt_device_write(pin_dev, 0 ,(void*)&pin_status, sizeof(pin_status));
67
68    rt_thread_mdelay(200);
69
70
71    pin_status.status = 0; // open led
72
73    rt_device_write(pin_dev, 0 ,(void*)&pin_status, sizeof(pin_status));
74
75
76    rt_device_close(pin_dev);
77
78    return 0;
79
80}

编译应用程序

1. 点击 VS Code 左下角的 “编译”、“清理”、“下载” 状态栏,会自动执行编译工程、清理工程、下载用户 APP 固件文件到开发板,这里我们选择编译功能。

2. 编译通过后,会自动生成用户 APP 固件,默认的名称是 hello.elf

9dcc5ca0e510189910743cfb6e2c97b4.png

GDB 在线调试

为了更好的支持应用程序调试,在RT-Thread Smart内核中运行了一个GDB调试桩,可以通过它来调试用户态应用程序,源码级调试。这种方式也是一种软调试,免仿真器,而和PC主机连接则可以使用TCP网络连接或者串口连接,未来在RT-Thread Smart上还会支持USB连接。

在使用VS Code插件创建rt-smart应用程序时,它会默认把相关的配置都预先设置好,对于调试来说,主要会有个板卡的IP地址设置,这点需要多注意到。在ART-Pi smart开发板上,可以通过命令行命令ifconfig来获得板卡的IP地址。

在 VS Code 上直接按 F5  快捷键, 即可启动 GDB 在线调试 rt-smart 用户应用程序。如下图所示,进入调试模式之后,VS Code 左侧会自动跳转到 “运行和调试” 视图,可以查看变量、监视变量、查看调用堆栈、设置断点等常用调试功能。 

c8b70c7ca2d2a35724b556eda8a6cda0.png

在调试的过程中,我们也可以看到板卡上的LED灯在闪烁。

最后我们用一个连贯的短视频来结束整个过程

视频内容(操作顺序):启动 rt-smart 内核、安装 C/C++ 插件、RT-Thread Smart 插件、Windows 下创建 rt-smart 用户应用程序(scons)、修改用户代码(增加 GPIO LED 控制)、编译、下载、GDB 在线调试等操作。

通过这样的方式,我们是不是发现这个开发方式很简单,有些类似MCU上的Keil MDK/IAR的开发模式?编写程序,编译/烧写/调试。非常简洁,可以避免一些Linux初学者对于如何编译程序,并把它下载运行的迷茫。

在后续中,RT-Thread Smart及VS Code插件还会不断升级,包括对USB的支持,对Linux下一般应用程序,编译/调试的支持,后续见!

RT-Thread Smart 交流平台

如果遇到什么问题需要协助,或有什么建议和意见需要反馈的,可以加入 ART-Pi Smart 官方交流 QQ 群或者登录论坛的 rt-smart 板块发帖反馈。

  • ART-Pi Smart :

    https://art-pi.gitee.io/smart-website/

  • ART-Pi Smart SDK :

    https://gitee.com/rtthread/ART-Pi-smart

  • ART-Pi Smart 官方交流 QQ 群 :622828244

  • rt-smart 论坛板块(发帖反馈):

    https://club.rt-thread.org/ask/tag/1339.html 

(以上链接请复制至外部浏览器打开)

申请加入rt-smart微信交流群,请加小师弟好友,微信号:rtthread2020

47a6404b910ae8d6902deb0a702fa00e.png

立即扫码加好友

最后,感谢大家地持续使用和关注,期待大家将rt-smart分享给更多的人,同时也期待收到大家更多宝贵的反馈和建议。

7d7232c4e6b9cad6af26415fc757fca9.png

1cab42bd9d0f45de4294ae735ee3a009.gif

??? 点击阅读原文即可下载 ART-Pi Smart SDK

  相关解决方案