Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【LwIP学习营】【第四周学习总结】
发布于 2018-06-17 15:40:55 浏览:2393
订阅该版
题目一:连接上阿里云/百度云(百度云参考[https://github.com/baidu/iot-edge-sdk-samples/tree/master/STM32/I-CUBE-BAIDU](https://github.com/baidu/iot-edge-sdk-samples/tree/master/STM32/I-CUBE-BAIDU)) 题目二:利用tftp server包和fatfs,做一个局域网存储服务器 题目三:其他自拟需要用到LWIP相关模块 目前仅完成题目一和题目二,题目三因为对rtt_lwip组件还不是很熟悉,利用以后时间来完成,还有要完成连接百度云。
查看更多
3
个回答
默认排序
按发布时间排序
whj467467222
认证专家
2018-06-17
开源,分享,交流,共同进步
题目一:连接到百度云 首先看到这个题目感觉很难,不像onenet一样有线程的软件包可以用(不知道RTT以后会不会加上阿里云的软件包),所以我先做了题目二,等我回过头的时候发现已经有两个人已经完成了,敬佩之心油然而生。看了别人分享的方法之后也尝试了一下,发现并不是那么难。 [https://www.rt-thread.org/qa/thread-7314-1-1.html](【LwIP学习营】【第四周】利用RT-Thread的MQTT连接阿里云) [https://www.rt-thread.org/qa/thread-7309-1-1.html]([lwIP学习营]连接阿里云) 拿到这个题目之后首先想我该如何连接到阿里云: 1,应该先注册一个账号,大家的淘宝支付宝账号可以直接扫码登录 [linkdevelop.aliyun.com](aliyun) [attach]4085[/attach] 2,注册号了之后要看看阿里云平台的连接要求 [https://linkdevelop.aliyun.com/developGuide#kgd6wp.html](阿里云开发指南) 3,按照上周学习onenet一样新建产品,新建设备 [attach]4086[/attach] 4,步骤3完成以后你会得到产品key 设备名字 设备秘钥 [attach]4087[/attach] 点击图中箭头所示就能看到这些信息。 5,这里使用alink协议格式,请认真阅读文档 6,云平台设置完毕了,接下来就是修改本地的文件 使用第三周连接onenet的工程的基础上修改,修改onenet_mqtt.c就可以连接上阿里云。 ``` int aliyun_mqtt_init(void) { int result = 0; if (init_ok) { return 0; } aliyun_get_info(); if(aliyun_mqtt_entry() < 0) { result = -1; } if(!result) { init_ok = RT_TRUE; rt_kprintf("aliyun MQTT initialize success."); } else { rt_kprintf("aliyun MQTT initialize failed(%d).", result); } return result; } ``` 这里和onenet_mqtt_init一样,只是修改了名字 ``` static void aliyun_get_info(void) { strncpy(aliyun_info.deviceName, aliyun_INFO_deviceName, strlen(aliyun_INFO_deviceName)); strncpy(aliyun_info.DEVICE_SECRET, aliyun_INFO_DEVICE_SECRET, strlen(aliyun_INFO_DEVICE_SECRET)); strncpy(aliyun_info.productKey, aliyun_INFO_productKey, strlen(aliyun_INFO_productKey)); } ``` 这里就是我在阿里云上注册的设备信息。 ``` static rt_err_t aliyun_mqtt_entry(void) { MQTTPacket_connectData condata = MQTTPacket_connectData_initializer; unsigned char output[20]={ 0 }; static char passstr[41]={0}; char url[100]= {0}; memcpy(url,aliyun_SERVER_URL,strlen(aliyun_SERVER_URL)); tiny_sha1_hmac((unsigned char *)aliyun_INFO_DEVICE_SECRET, strlen(aliyun_INFO_DEVICE_SECRET), (unsigned char *)aliyunpassword, strlen(aliyunpassword),output); for(int i=0;i<20;i++) { sprintf(&passstr[2*i],"%02x",output[i]); } passstr[40]='\0'; for(int i = 0;url[i] != '\0';i++) { if(url[i] >= 'A' && url[i] <= 'Z') { url[i] += 32; } } //阿里云协议规定只能小写 mq_client.uri = url; memcpy(&(mq_client.condata), &condata, sizeof(condata)); mq_client.condata.clientID.cstring = mqtt_clientid; mq_client.condata.keepAliveInterval = 100; //阿里云协议规定必须在60—300之间 mq_client.condata.cleansession = 1; mq_client.condata.username.cstring = aliyunusername; mq_client.condata.password.cstring = passstr; mq_client.buf_size = mq_client.readbuf_size = 1024 * 2; mq_client.buf = rt_calloc(1, mq_client.buf_size); mq_client.readbuf = rt_calloc(1, mq_client.readbuf_size); if (!(mq_client.buf && mq_client.readbuf)) { rt_kprintf("No memory for MQTT client buffer!"); return -RT_ENOMEM; } /* registered callback */ mq_client.connect_callback = mqtt_connect_callback; mq_client.online_callback = mqtt_online_callback; mq_client.offline_callback = mqtt_offline_callback; /* set subscribe table. */ mq_client.messageHandlers[0].topicFilter = aliyun_MQTT_SUBTOPIC; mq_client.messageHandlers[0].callback = mqtt_callback; mq_client.defaultMessageHandler = mqtt_callback; paho_mqtt_start(&mq_client); return RT_EOK; } ``` 做完以上这些应该就可以连上阿里云了,如果需要进一步的使用阿里云,就要继续看说明文档了,和onenet差不多,多看多理解就会了。 [attach]4088[/attach] [attach]4089[/attach] [attach]4088[/attach] [attach]4089[/attach]
whj467467222
认证专家
2018-06-17
开源,分享,交流,共同进步
题目二:利用tftp server包和fatfs,做一个局域网存储服务器 这个题目可以拆分为2个部分,开发板的文件系统和TFTP server 一,开发板的文件系统 [https://www.rt-thread.org/qa/thread-7297-1-1.html](我的文件系统总结) 看了这两个多做几遍应该就能跑了,切记一个地方第一次肯定会挂载失败,你要先使用一次mkfs -t elm W25Q128 然后重启一下开发板就好了。 二,TFTP server 做这个的时候很是纠结,F40X的BSP暂时没有SPI驱动,F4XX_HAL没有以太网的驱动,然后我就选择了使用F4XX_HAL 以太网驱动是复制的429_apllo的,修改了部分代码,但是感觉不是很完善,对比了一下40X里面的驱动,感觉这个我只是让他可以用了,不知道RTT下一个版本会不会增加这个驱动,如果还没人写,我就尝试写一个 [https://github.com/RT-Thread-packages/netutils/blob/master/tftp/README.md](TFTP:简单文件传输协议) 这个就很简单了,按照使用说明就可以跑了。但是我的出现了问题,还没解决 [attach]4090[/attach] [attach]4091[/attach] [attach]4092[/attach] [attach]4091[/attach] [attach]4092[/attach]
whj467467222
认证专家
2018-06-21
开源,分享,交流,共同进步
最后一个错误是tcpip栈溢出了,改大就好了。RT_LWIP_TCPTHREAD_STACKSIZE可以直接在rtconfig.h修改也可以在ENV配置,在ENV配置界面可以按帮助来获取这个宏的位置。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.4k
关于作者
whj467467222
开源,分享,交流,共同进步
提问
29
回答
1222
被采纳
148
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
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组件
最新文章
1
使用RC522软件包驱动FM1722
2
常量数据类型和表达式陷阱分享
3
进行i2c驱动移植的经验总结
4
在VSCode中使用clang-format
5
我该如何使用这个微雪的WIFI400 WIFI-LPB-100在rtt里或者我该怎样为它开发驱动
热门标签
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
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
809
个答案
175
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部