Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
2024-RSOC
【2024-RSOC】Day05-软件包和组件
发布于 2024-08-04 20:58:16 浏览:103
订阅该版
[tocm] ## 软件包 定义:具有特定的功能,用来完成特定任务的一个程序或一组程序。可以粗略地把他理解为帮助我们完成了底层驱动的编写,我们只需要使用里面提供的API就好了。 功能:能够帮助我们更快的进行应用开发。 ### 应用:阿里云上云 1. 开启板上外设AHT32 2. `pkgs –update`,更新软件包 3. 阿里云搭建 平台:[https://www.aliyun.com/product/iot/iot_instc_public_cn](https://www.aliyun.com/product/iot/iot_instc_public_cn) 进入后进行注册(如果你是新账户的话)并登录,然后选择管理控制台 ![image-20240725184110285.png](https://oss-club.rt-thread.org/uploads/20240804/79c9e84ced6bacba0b4f7fe474718109.png.webp) 在管理控制台下选择公共实例 ![image-20240725184217401.png](https://oss-club.rt-thread.org/uploads/20240804/2e05f757a85fce1496ca4df0fe1509e8.png.webp) 点击创建产品 ![image-20240725184400238.png](https://oss-club.rt-thread.org/uploads/20240804/fa23cbd08f5053e380db7a5ffeefe56a.png.webp) 按要求输出,产品名称可以随意填写 ![image-20240725184517799.png](https://oss-club.rt-thread.org/uploads/20240804/4bd5b8380886ea7afc9e3ed6c805bf4f.png.webp) 然后返回,点击设备,创建设备 ![image-20240725184835993.png](https://oss-club.rt-thread.org/uploads/20240804/c241d52f90ee79f3a26df3d9c7ade968.png.webp) 创建完成后可以新建一个物模型变量 ![image-20240725185216703.png](https://oss-club.rt-thread.org/uploads/20240804/6944de3f11ad4f11a00b3ee27d7d1a2f.png.webp) ![image-20240725185053198.png](https://oss-club.rt-thread.org/uploads/20240804/59c66f15b5520a715ee0f5b3c72391b5.png.webp) 然后点击发布上线,然后就可以在功能定义这里看到刚刚定义的功能了。记得在Topic类列表中修改自定义user/get的权限改为订阅和发布,这样子我们才能通过这个Topic进行测试。 ![image-20240725185630684.png](https://oss-club.rt-thread.org/uploads/20240804/66c1633712e9114f6afd4e9c76123f8d.png.webp) 4. menuconfig中开启RW007 打开RW007 ![MQTT配置1.png](https://oss-club.rt-thread.org/uploads/20240804/8e0e45afb4b990900ca27534c62de396.png) 在软件包中找到阿里云的软件包,使能后需要修改里面的一些参数 ![MQTT配置3.png](https://oss-club.rt-thread.org/uploads/20240804/341397a5b165166639d63f401786d262.png) 在阿里云中找到这些参数并修改进去 ![screenshot_QQ_1722776104427.png](https://oss-club.rt-thread.org/uploads/20240804/dc95e20e24e185f2b64a9132c0eca217.png.webp) ![screenshot_QQ_1722776130490.png](https://oss-club.rt-thread.org/uploads/20240804/0087761eec25d09b6cd17b1ef898b220.png.webp) 然后再打开ENV末尾的使能样例,告诉我们如何使用。 5. 添加示例 ```c /* * NOTE: About demo topic of /${productKey}/${deviceName}/user/get * * The demo device has been configured in IoT console (https://iot.console.aliyun.com) * so that its /${productKey}/${deviceName}/user/get can both be subscribed and published * * We design this to completely demonstrate publish & subscribe process, in this way * MQTT client can receive original packet sent by itself * * For new devices created by yourself, pub/sub privilege also requires being granted * to its /${productKey}/${deviceName}/user/get for successfully running whole example */ void mqtt_example_main(void *parameter) { void *pclient = NULL; int res = 0; int loop_cnt = 0; iotx_mqtt_param_t mqtt_params; HAL_GetProductKey(DEMO_PRODUCT_KEY); HAL_GetDeviceName(DEMO_DEVICE_NAME); HAL_GetDeviceSecret(DEMO_DEVICE_SECRET); EXAMPLE_TRACE("mqtt example"); /* Initialize MQTT parameter */ /* * Note: * * If you did NOT set value for members of mqtt_params, SDK will use their default values * If you wish to customize some parameter, just un-comment value assigning expressions below * **/ memset(&mqtt_params, 0x0, sizeof(mqtt_params)); /** * * MQTT connect hostname string * * MQTT server's hostname can be customized here * * default value is ${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com */ /* mqtt_params.host = "something.iot-as-mqtt.cn-shanghai.aliyuncs.com"; */ /** * * MQTT connect port number * * TCP/TLS port which can be 443 or 1883 or 80 or etc, you can customize it here * * default value is 1883 in TCP case, and 443 in TLS case */ /* mqtt_params.port = 1883; */ /** * * MQTT request timeout interval * * MQTT message request timeout for waiting ACK in MQTT Protocol * * default value is 2000ms. */ /* mqtt_params.request_timeout_ms = 2000; */ /** * * MQTT clean session flag * * If CleanSession is set to 0, the Server MUST resume communications with the Client based on state from * the current Session (as identified by the Client identifier). * * If CleanSession is set to 1, the Client and Server MUST discard any previous Session and Start a new one. * * default value is 0. */ /* mqtt_params.clean_session = 0; */ /** * * MQTT keepAlive interval * * KeepAlive is the maximum time interval that is permitted to elapse between the point at which * the Client finishes transmitting one Control Packet and the point it starts sending the next. * * default value is 60000. */ /* mqtt_params.keepalive_interval_ms = 60000; */ /** * * MQTT write buffer size * * Write buffer is allocated to place upstream MQTT messages, MQTT client will be limitted * to send packet no longer than this to Cloud * * default value is 1024. * */ /* mqtt_params.write_buf_size = 1024; */ /** * * MQTT read buffer size * * Write buffer is allocated to place downstream MQTT messages, MQTT client will be limitted * to recv packet no longer than this from Cloud * * default value is 1024. * */ /* mqtt_params.read_buf_size = 1024; */ /** * * MQTT event callback function * * Event callback function will be called by SDK when it want to notify user what is happening inside itself * * default value is NULL, which means PUB/SUB event won't be exposed. * */ mqtt_params.handle_event.h_fp = example_event_handle; pclient = IOT_MQTT_Construct(&mqtt_params); if (NULL == pclient) { EXAMPLE_TRACE("MQTT construct failed"); return; } res = example_subscribe(pclient); if (res < 0) { IOT_MQTT_Destroy(&pclient); return; } while (1) { if (0 == loop_cnt % 20) { example_publish(pclient); } IOT_MQTT_Yield(pclient, 200); loop_cnt += 1; } } #define THREAD_PRIORITY 25 #define THREAD_STACK_SIZE 4096 #define THREAD_TIMESLICE 5 rt_thread_t MQTT_Thread; void MQTT_Creat_Thread(void) { // 创建线程 MQTT_Thread = rt_thread_create("MQTT_Thread", mqtt_example_main, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); // 创建成功就启动 if (MQTT_Thread != RT_NULL) { rt_thread_startup(MQTT_Thread); } else { rt_kprintf("MQTT_Thread_Thread Create Fail"); } } // 导出Shell命令 MSH_CMD_EXPORT(MQTT_Creat_Thread, This Function will creat a MQTT thread.); ``` ## 组件 在 RT-Thread DFS 中,文件系统有统一的根目录,使用 `/` 来表示。 ![screenshot_QQ_1722776234953.png](https://oss-club.rt-thread.org/uploads/20240804/06939c41b43293ff1959749431bef3cf.png.webp) ![screenshot_QQ_1722776243549.png](https://oss-club.rt-thread.org/uploads/20240804/39cb1fcc278d249f0c7939a4662ceb85.png.webp) ### 文件系统种类 | 类型 | 特点 | | ----- | :----------------------------------------------------------: | | FatFS | FatFS 是专为小型嵌入式设备开发的一个兼容微软 FAT 格式的文件系统,采用ANSI C编写,具有良好的硬件无关性以及可移植性,是 RT-Thread 中最常用的文件系统类型。我们今天使用到的elm_fat就是这个类型。 | | RomFS | 传统型的 RomFS 文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以 XIP(execute In Place,片内运行) 方式运行,在系统运行时, 节省 RAM 空间。我们一般拿其作为挂载根目录的文件系统 | | DevFS | 即设备文件系统,在 RT-Thread 操作系统中开启该功能后,可以将系统中的设备在 `/dev` 文件夹下虚拟成文件,使得设备可以按照文件的操作方式使用 read、write 等接口进行操作。 | | UFFS | UFFS 是 Ultra-low-cost Flash File System(超低功耗的闪存文件系统)的简称。它是国人开发的、专为嵌入式设备等小内存环境中使用 Nand Flash 的开源文件系统。与嵌入式中常使用的 Yaffs 文件系统相比具有资源占用少、启动速度快、免费等优势。 | | NFS | NFS 网络文件系统(Network File System)是一项在不同机器、不同操作系统之间通过网络共享文件的技术。在操作系统的开发调试阶段,可以利用该技术在主机上建立基于 NFS 的根文件系统,挂载到嵌入式设备上,可以很方便地修改根文件系统的内容。 | ### POSIX接口层 POSIX 表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写 POSIX),POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 UNIX 操作系统上运行的软件而定义的一系列 API 标准的总称。 > 文件描述符:`file descriptor`(fd),每一个文件描述符会与一个打开文件相对应,同时,不同的文件描述符也可能指向同一个文件。可以简单理解为它可以帮助我们找到我们需要的文件。 > ![image-20240724224727730](C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\image-20240724224727730.png) 在文件系统中它提供了四个重要的接口: ![screenshot_QQ_1722776260524.png](https://oss-club.rt-thread.org/uploads/20240804/097b12482d15670758d630d98391a974.png.webp) 还有一些其他常用的API: | API | 描述 | | ----------------------------------------------- | ------------ | | int `rename`(const char *old, const char *new); | 文件重命名 | | int `stat`(const char *file, struct stat *buf); | 获取文件状态 | | int `unlink`(const char *pathname); | 删除文件 |
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
东湖西泽
这家伙很懒,什么也没写!
文章
6
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部