简介

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

在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插件,把开发变得更简单。

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

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,点击安装即可:

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

搭建ART-Pi Smart环境

硬件环境搭建

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

● 网络接口:通过路由器和网线(或者通过板载的 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)情况来选择不同版本的工具链,下载链接是:

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

提取码: ndxq

在下载工具链后,需要把它解压到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 用户应用程序为例

添加用户功能代码

用户应用,我们来点个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

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 左侧会自动跳转到 “运行和调试” 视图,可以查看变量、监视变量、查看调用堆栈、设置断点等常用调试功能。

在调试的过程中,我们也可以看到板卡上的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

立即扫码加好友

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

如何使用 VSCode 开发 RT-Thread Smart 应用程序相关推荐

  1. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  2. stm32f407单片机rt thread 片外spi flash OTA升级配置示例

    参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...

  3. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  4. 使用VScode开发ESP32,PlatformIO开发ESP32

    arduino IDE安装开发板库 安装arduino IDE 首先下载arduino IDE并安装.在官网下载即可.如果官网下载慢,可以找第三方资源下载. 下载开发板库 安装后进入"文件& ...

  5. 使用VScode开发ESP8266,PlatformIO开发ESP8266

    arduino IDE安装开发板库 安装arduino IDE 首先下载arduino IDE并安装.在官网下载即可.如果官网下载慢,可以找第三方资源下载. 下载开发板库 安装后进入"文件& ...

  6. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  7. xpt 2046的触摸屏 rt thread设备驱动框架

    1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...

  8. 正点原子delay函数移植到rt thread操作系统(HAL库)

    正点原子教程中涉及到的操作系统只涉及了UCOS的教程,其中例程的system文件夹中的delay.c函数只是适配了UCOS. 下面将delay.c函数移植到rt thread中,使用的bsp是rt t ...

  9. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ⑤ ( tasks.json 中的 args 数组配置分析 | 编译并执行 C++ 程序 )

    文章目录 一.tasks.json 中的 args 数组配置分析 二.编译并执行 C++ 程序 可以参考官方提供的文档 : https://code.visualstudio.com/docs/cpp ...

  10. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ④ ( 创建 tasks.json 编译器构建配置文件 | tasks.json 编译器构建配置文件分析 )

    文章目录 一.创建 tasks.json 编译器构建配置文件 二.tasks.json 编译器构建配置文件分析 可以参考官方提供的文档 : https://code.visualstudio.com/ ...

最新文章

  1. pandas中read_csv的缺失值处理方式
  2. tensorflow随笔-tf.group
  3. linux adb工具_这是一个可以显示Linux命令的工具
  4. php通知websocket,php实现websocket实时消息推送
  5. Apache—DBUtils框架简介
  6. Nginx负载均衡配置+keepalived高可用
  7. java与can总线开发_CANdbc编辑器的下载和入门介绍
  8. python 增量备份mysql_Python 生产环境MySQL数据库增量备份脚本
  9. 伟大的Redis:Redis学习资料荟萃
  10. 三极管工作原理_3分钟分析稳压三极管工作原理
  11. 自定义组件时 Binary XML file line Error inflating class 异常
  12. coco参考文档网址
  13. 视频会议室装修部署指南
  14. 探索 ES8 Object.entries()
  15. php获取蓝凑云文件列表,PHP获取蓝奏云直链下载地址
  16. 解决win2008 R2远程桌面授权过期的方法
  17. Android软键盘弹出和收起的监听
  18. hp服务器 linux,在Linux中监控HP和Dell的服务器(SNMP,Cacti)
  19. Xxl-Job 初次体验
  20. bing每日壁纸自动获取程序

热门文章

  1. 美通企业日报 | 网龙互动白板获德国红点设计奖;芬美意在华开设全球最大食用香精厂...
  2. 刷机前忘记退出Google账号解决方案
  3. 逐渐消失的行业-MP3
  4. Nginx代理规则总结
  5. 做京东运营2年的感悟(转自派代网 乔先生)
  6. 中国游客是否可以持中国驾照在美国自驾游?_游侠_新浪博客
  7. iSCSI网络SCSI接口
  8. 多智能体强化学习:合作关系设定下的多智能体强化学习
  9. 软件工程基础-个人项目-数独游戏
  10. awk linux 分隔_Linux:批量修改分隔符(awk、BEGIN、FS、OFS、print、tr命令)