简介
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#include2 3#include 4 5#include 6 7 8#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! "); 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 群或者登录william hill官网 的 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 william hill官网 板块(发帖反馈):
https://club.rt-thread.org/ask/tag/1339.html
原文标题:如何使用 VSCode 开发 RT-Thread Smart 应用程序
文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !