0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在rt-smart简化应用程序开发

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2022-01-04 15:59 次阅读

简介

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
 2
 3#include
 4
 5#include
 6
 7
 8#defineGET_PIN(PORTx,PIN)(32*(PORTx-1)+(PIN&31))
 9
10#defineLED_PINGET_PIN(5,3)
11
12
13
14structrt_device_pin_mode
15
16{
17
18rt_uint16_tpin;
19
20rt_uint16_tmode;
21
22};
23
24structrt_device_pin_status
25
26{
27
28rt_uint16_tpin;
29
30rt_uint16_tstatus;
31
32};
33
34
35intmain(intargc,char**argv)
36
37{
38
39rt_device_tpin_dev;
40
41structrt_device_pin_modepin_mode;
42
43structrt_device_pin_statuspin_status;
44
45
46rt_kprintf("helloworld!
");
47
48
49
50pin_dev=rt_device_find("pin");
51
52rt_device_open(pin_dev,RT_DEVICE_OFLAG_RDWR);
53
54pin_mode.pin=LED_PIN;
55
56pin_mode.mode=0;
57
58
59rt_device_control(pin_dev,0,(void*)&pin_mode);
60
61pin_status.pin=LED_PIN;
62
63
64pin_status.status=1;//closeled
65
66rt_device_write(pin_dev,0,(void*)&pin_status,sizeof(pin_status));
67
68rt_thread_mdelay(200);
69
70
71pin_status.status=0;//openled
72
73rt_device_write(pin_dev,0,(void*)&pin_status,sizeof(pin_status));
74
75
76rt_device_close(pin_dev);
77
78return0;
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

原文标题:如何使用 VSCode 开发 RT-Thread Smart 应用程序

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3541

    浏览量

    88617
  • 应用程序
    +关注

    关注

    37

    文章

    3265

    浏览量

    57677
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40077

原文标题:如何使用 VSCode 开发 RT-Thread Smart 应用程序

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通过Uboot TFTP启动rt-smart内核

    介绍Windows下通过 Uboot  TFTP 方式下载和启动rt-smart 内核
    的头像 发表于 06-30 12:34 3698次阅读
    通过Uboot TFTP启动<b class='flag-5'>rt-smart</b>内核

    RT-Smart的资料合集

    可知,RT-Smart 32 位内核运行在地址空间的高地址,而用户程序代码运行在低地址。2、RT-Smart物理页内存管理详解伙伴系统在现代操作系统中被广泛地用于分配连续的物理内存页。其基本思想是将物理
    发表于 03-22 15:06

    分析一下在rt-smart操作系统中将一个应用程序运行起来要经过哪些步骤

    1、RT-Smart ELF 应用程序加载运行在用户态应用程序处理的任务中,elf 加载运行是一个比较重要的步骤,下面就分析一下在 rt-smart 操作系统中,想要将一个
    发表于 04-13 17:17

    rt-smart操作系统中将ELF应用程序运行起来要经过哪些步骤

    1、RT-Smart ELF应用程序加载运行在用户态应用程序处理的任务中,elf 加载运行是一个比较重要的步骤,下面就分析一下在 rt-smart 操作系统中,想要将一个
    发表于 06-13 18:18

    D1哪吒开发rt-smart内核固件的烧写与运行步骤

    ,无法正确的引导,这个后面抽时间分析,因为这样,就可以直接u-boot bootm 启动了后面继续研究 rt-smart 的启动流程,用户应用程序的编译 与 烧写方法。原作者:张世争
    发表于 06-17 11:06

    rt-smart应用程序系统调用实现过程是怎么样的?

    rt-smart应用程序系统调用实现过程是怎么样的? 比如open时候怎么一步一步切换到内核态的?
    发表于 09-08 17:00

    树莓派上rt-smart的应用编程入门

    文章,一些介绍及树莓派上rt-smart的应用编程入门(更多的从应用程序角度入手)。后续还包括在rt-smart上的不同应用程序介绍: wget curl移植 busybox移植 sd
    的头像 发表于 05-13 14:10 3157次阅读
    树莓派上<b class='flag-5'>rt-smart</b>的应用编程入门

    rt-smart移植分析:从树莓派3b入手

    移植rt-smart到最新的板子上具体需要注意哪些细节,哪些才是移植rt-smart的关键点?本文从树莓派3b上移植rt-smart的角度,从头分析rt-sm...
    发表于 01-25 18:48 0次下载
    <b class='flag-5'>rt-smart</b>移植分析:从树莓派3b入手

    rt-thread驱动框架分析》-lcd驱动

    首发:Rice 嵌入式开发技术分享作者:RiceDIY简介rt-smart相关文章《rt-smart的第一个应用程序,imx6ull用户态点灯》《r
    发表于 01-25 19:24 2次下载
    《<b class='flag-5'>rt</b>-thread驱动框架分析》-lcd驱动

    RT-Smart ELF应用程序加载运行过程分析

    在用户态应用程序处理的任务中,elf 加载运行是一个比较重要的步骤,下面就分析一下在 rt-smart 操作系统中,想要将一个应用程序运行起来要经过哪些步骤。
    的头像 发表于 11-02 09:57 956次阅读

    优雅的在D1S上运行RT-Smart

    -Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备
    的头像 发表于 11-16 20:15 2866次阅读

    丝滑的在RT-Smart用户态运行LVGL

    开发流程 1、RT-Smart 环境搭建 下载 RT-Smart 用户态应用代码: 1 git clone https: //github.com/RT-Thread/userapps
    的头像 发表于 11-22 20:20 1260次阅读

    RT-Smart riscv64汇编注释

    rt-smart在全志D1上的代码为例,主要注释了rt-smart在riscv64上的系统初始化和异常处理的代码仓库地址https://gitee.com/rtthread/rt
    的头像 发表于 02-08 21:40 1149次阅读

    RT-Smart riscv64汇编注释

    rt-smart在全志D1上的代码为例,主要注释了rt-smart在riscv64上的系统初始化和异常处理的代码
    的头像 发表于 10-12 17:26 610次阅读
    <b class='flag-5'>RT-Smart</b> riscv64汇编注释

    RT-Smart应用开发笔记:fopen造成文件被清空问题的分析记录

    RT-Smart 应用(apps)开发环境,ubuntu 20.04 + win10 VS Code
    的头像 发表于 10-20 16:01 601次阅读
    <b class='flag-5'>RT-Smart</b>应用<b class='flag-5'>开发</b>笔记:fopen造成文件被清空问题的分析记录