Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】+lihanchao+通过ESP8266接入网络并下载文件
发布于 2018-08-09 22:00:22 浏览:1643
订阅该版
[tocm] * 本帖最后由 lihanchao90 于 2018-8-9 22:09 编辑 * #【网络编程学习】+lihanchao+通过ESP8266接入网络并下载文件 # 1.开发环境 ##1.1软件环境 MDK5、env_0.7.0、RT-Thread_3.1.0 ##1.2硬件环境 开发板:硬石YS-F4Pro开发板 wifi模块 :esp8266 #2.硬件连接 ```sequence main board->esp8266:uart6 main board->shell:uart1 main board->flash:spi2 ```  #3. 实验过程 ##3.1 esp8266联网 ### 3.1.1 board env配置 参考 [AT 组件应用笔记](https://www.rt-thread.org/document/site/rtthread-application-note/components/at/an0014-rtthread-system-at-client/)配置uart1为shell,uart6为esp8266,(图中the device name for console找了好久都没找到,直接在rtconfig.h中修改了,后来才发现藏在这里)  uart1和uart6的驱动修改为对应板子的引脚 ```c void HAL_UART_MspInit(UART_HandleTypeDef *uartHandle) { GPIO_InitTypeDef GPIO_InitStruct; if (uartHandle->Instance == USART1) { /* USART1 clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /**USART1 GPIO Configuration PA9/PB6 ------> USART1_TX PA10/PB7 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } ...... } ``` ### 3.1.2 AT Client env配置 - 开启AT Client功能 开始怎么也找不到这个AT commands,后来通过git pull命令更新了代码,才出现AT commands。  ###3.1.3 AT Client 下载验证 - at cli 功能 这个功能真的很赞,at cli调试程序更加优雅,不用多接一根串口线了,  - 还有raw data功能,就不多说了,自己体会 - esp8266 ping 通过  ##3.2 文件系统 ###3.2.1 webclient env配置 要访问web下载文件需要通过http协议的工具webclient下载,开启iot组件的 WebClient 软件包  只有webclient只能下载文件不能存文件,还需要文件系统来保存文件,有个疑问:片内的rom可以做文件系统么? ###3.2.2 文件系统 env配置 - 在env中配置Device virtual file system  进入到 elm-chan's FatFs, Generic FAT Filesystem Module 子菜单,配置情况如图所示  修改关于长文件名支持的选项,修改方式如下:  - DFS框架驱动 开发板上flash为spi接口的norflash:w25q256 ,需要实现驱动与DFS框架爱对接,RTT中已实现SPI接口的驱动,我们只需要把spi的clk,mosi,miso ,cs配置好,注册到设备驱动就可以。env中可以选择spix通道和cs脚。本文中spi使用spi2,cs使用PC2引脚  先按照上图配置好,才会出现下面的选项  引脚根据板上的分配来选择,cs使用的gpio所以要用gpio的驱动,gpio的引脚号可以在drv_gpio中查找。 ```c #if (STM32F4xx_PIN_NUMBERS == 176) __STM32_PIN_DEFAULT, __STM32_PIN(1, E, 2), __STM32_PIN(2, E, 3), ... __STM32_PIN(131, I, 0),//cs pin ... #endif ``` spi接口配置 ```c /* SPI2 clock enable */ __HAL_RCC_SPI2_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); /**SPI2 GPIO Configuration PB13/PI1 ------> SPI2_SCK PB14/PC2 ------> SPI2_MISO PB15/PI3 ------> SPI2_MOSI /PI0 ------> SPI2_CS */ GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); ``` - 文件系统创建与挂载 目前为止DFS框架和驱动都已经实现了,接下来需要创建文件系统和挂载文件系统,本文新建文件mkfs.c实现。 ```c #include
#include
#include
#include
#include "rtdef.h" int mount_fs_to_flash(void) { if(dfs_mount("flash0","/","elm",0,0)==0) { rt_kprintf("flash0 mount to /.
"); } else { if(dfs_mkfs("elm","flash0")==0) { rt_kprintf("make elm flash0.
"); if(dfs_mount("flash0","/","elm",0,0)==0) { rt_kprintf("flash0 mount to /.
"); } else { rt_kprintf("flash0 mount to / failed.
"); } } else { rt_kprintf("flash0 mount to / failed.
"); } } return 0; } INIT_ENV_EXPORT(mount_fs_to_flash); ``` ### 3.2.3 DFS功能下载验证 ```bash msh /> \ | / - RT - Thread Operating System / | \ 3.1.0 build Aug 9 2018 2006 - 2018 Copyright by rt-thread team lwIP-2.0.2 initialized! W25Q128BV detection [I/AT] RT-Thread AT client (V0.2.4) initialize success. [I/SAL_SOC] Socket Abstraction Layer initialize success. make elm flash0. flash0 mount to /. [I/AT] ESP8266 WIFI is disconnect. [D/AT] AT version:0.40.0.0(Aug 8 2015 14:45:58) [D/AT] SDK version:1.3.0 [D/AT] Ai-Thinker Technology Co.,Ltd. [D/AT] Build:1.3.0.2 Sep 11 2015 11:48:04 [I/AT] ESP8266 WIFI is connected. [I/AT] AT network initialize success! msh />list_de list_device msh />list_device device type ref count ------ -------------------- ---------- flash0 Block Device 1 norspi SPI Device 0 spi2 SPI Bus 0 uart6 Character Device 1 uart2 Character Device 0 uart1 Character Device 2 pin Miscellaneous Device 0 ``` flash0 Block Device 1 说明已经挂载好了 在根目录下创建个文件夹doc试试。 ```bash msh />pwd / msh />mkdir doc msh />ls Directory /: doc
``` ### 3.2.4 wget下载文件测试 试试wget下载文件,遇到open website failed,跟踪错误代码发现时webclient_connect-->connect(socket_handle, res->ai_addr, res->ai_addrlen) 在这里出现了,应该是socket的问题,看到armink提到lwip和at同时开启时会优先使用lwip,回头查看env,果然是这个问题。 ```bash msh />wget http://183.193.243.90:9012/www/rt-thread.txt rtt.txt open website failed. ``` 关闭lwip后再次尝试,果然成功。 ```bash msh />wget http://183.193.243.90:9012/www/rt-thread.txt rtt.txt Save 267 bytes msh />la la: command not found. msh />ls Directory /: doc
rtt.txt 267 msh />cat rtt msh />cat rtt.txt RT-Thread is an open source IoT operating system from China, which has strong scalability: from a tiny kernel running on a tiny core, for example ARM Cortex-M0, or Cortex-M3/4/7, to a rich feature system running on MIPS32, ARM Cortex-A8, ARM Cortex-A9 DualCore etc. msh /> ```  疑问1:片内的rom可以做文件系统么?
查看更多
3
个回答
默认排序
按发布时间排序
快没时间了
2018-08-10
这家伙很懒,什么也没写!
这版本哪里下载的。我GIT上怎么看到才3.0.4啊
yqiu
2018-08-10
这家伙很懒,什么也没写!
:victory:片内 rom 可以按照 romfs 的方式挂载到文件系统中的。
啊啊灼
2018-08-10
这家伙很懒,什么也没写!
可以上传一下例程源码吗?
撰写答案
登录
注册新账号
关注者
0
被浏览
1.6k
关于作者
lihanchao90
这家伙很懒,什么也没写!
提问
9
回答
5
被采纳
0
关注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
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
xiaorui
3
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部