当前位置:网站首页>RT-Thread--Lwip之FTP(2)
RT-Thread--Lwip之FTP(2)
2022-07-06 03:20:00 【rou252051452】
RT-Thread--Lwip之FTP_rou252051452的博客-CSDN博客本说明基于在RTT下搭建完成网络通信功能基础上完成,具体网络实现参见另外一个教程。https://blog.csdn.net/rou252051452/article/details/123084492https://blog.csdn.net/rou252051452/article/details/1230844921、软件包使能 打开RT-ThreadSetting进行软件包安装,保存生效文件2、FTP功能的初始化 主函数通过包含...https://blog.csdn.net/rou252051452/article/details/123086671 上一个文档中完成了FTP的使能及连接,但是开发板中无文件系统,无目录供FTP进行访问,所以我们本章进行文件系统(spi flash)的实现。
1、硬件使能
根据正点原子的原理图配置进行SPIflash的配置如下:

2、RT-Thread Setting设置


3、board.h文件设置
增加#define BSP_USING_SPI5宏定义
4、挂载SPI flash
新建drivers\drv_spiflash.c文件,内容如下
#include "board.h"
#include <rtthread.h>
#include <rtdevice.h>
#include "drv_spi.h"
#include "drv_config.h"
#include <string.h>
#include "spi_flash_sfud.h"
static int rt_hw_spi_flash_init(void)
{
__HAL_RCC_GPIOF_CLK_ENABLE();
rt_hw_spi_device_attach("spi5", "spi50", GPIOF, GPIO_PIN_6);
if (RT_NULL == rt_sfud_flash_probe("W25Q256", "spi50"))
{
return -RT_ERROR;
};
return RT_EOK;
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
编译下载,串口输出如下

5、文件系统挂载
在main.c文件中实现如下函数进行flash下文件系统的挂载,主函数调用该函数。
static int dfs_mount_init(void)
{
if(dfs_mount("W25Q256", "/", "elm", 0, 0) == 0)
{
rt_kprintf("dfs mount success\r\n");
return RT_EOK;
}
else
{
rt_kprintf("spi file system initialized faile\r\n");
if(dfs_mkfs("elm", "W25Q256") == 0)
{
rt_kprintf("W25QXX file system initialized\r\n");
if(dfs_mount("W25Q256", "/", "elm", 0, 0) == 0)
{
rt_kprintf("dfs mount success\r\n");
return RT_EOK;
}
else
{
rt_kprintf("dfs mount success\r\n");
return -RT_ERROR;
}
}
else
{
rt_kprintf("dfs mount success\r\n");
return -RT_ERROR;
}
}
}下载验证,串口输出如下

6、挂载目录的修改
上述挂载过程将flash直接挂载到了根目录,若存在多个挂载设备我们无法进行区分。所以通过下操作来实现根目录下不同目录的挂载。
修改rt-thread\components\def\filesystems\romfs\romfs.c文件如下,我们在根目录下增加了sdcard和w25qxx两个目录。
#include <rtthread.h>
#include <dfs_romfs.h>
#include "dfs.h"
static const struct romfs_dirent _romfs_root[] =
{
{ROMFS_DIRENT_DIR, "sdcard", RT_NULL, 0},
{ROMFS_DIRENT_DIR, "w25qxx", RT_NULL, 0}
};
const struct romfs_dirent romfs_root =
{
ROMFS_DIRENT_DIR, "/", (rt_uint8_t *)_romfs_root, sizeof(_romfs_root)/sizeof(_romfs_root[0])
};
int mnt_init(void)
{
if(dfs_mount (RT_NULL,"/","rom",0,&(romfs_root)) == 0)
{
rt_kprintf("ROM file system initializated;\n");
}
else
{
rt_kprintf("ROM file system initializate failed;\n");
}
return 0;
}
INIT_ENV_EXPORT(mnt_init);
同步对main.c中的dfs_mount_init进行修改
static int dfs_mount_init(void)
{
if(dfs_mount("W25Q256", "/w25qxx", "elm", 0, 0) == 0)
{
rt_kprintf("dfs mount success\r\n");
return RT_EOK;
}
else
{
rt_kprintf("spi file system initialized faile\r\n");
if(dfs_mkfs("elm", "W25Q256") == 0)
{
rt_kprintf("W25QXX file system initialized\r\n");
if(dfs_mount("W25Q256", "/w25qxx", "elm", 0, 0) == 0)
{
rt_kprintf("dfs mount success\r\n");
return RT_EOK;
}
else
{
rt_kprintf("dfs mount success\r\n");
return -RT_ERROR;
}
}
else
{
rt_kprintf("dfs mount success\r\n");
return -RT_ERROR;
}
}
}下载验证,串口如下

FTP查看信息如下:

边栏推荐
- Shell pass parameters
- three.js网页背景动画液态js特效
- 施努卡:视觉定位系统 视觉定位系统的工作原理
- 3.1 rtthread 串口设备(V1)详解
- [pointer training - eight questions]
- 真机无法访问虚拟机的靶场,真机无法ping通虚拟机
- Princeton University, Peking University & UIUC | offline reinforcement learning with realizability and single strategy concentration
- 数据分析——seaborn可视化(笔记自用)
- Esbuild & SWC: a new generation of construction tools
- 2、GPIO相关操作
猜你喜欢

【RISC-V】外部中断

Four logs of MySQL server layer

Jenkins basic knowledge ----- detailed explanation of 03pipeline code
![[pointer training - eight questions]](/img/fd/1aa3937548a04078c4d7e08198c3a8.png)
[pointer training - eight questions]

深入刨析的指针(题解)

教你用Pytorch搭建一个自己的简单的BP神经网络( 以iris数据集为例 )

施努卡:3d视觉检测应用行业 机器视觉3d检测

The real machine cannot access the shooting range of the virtual machine, and the real machine cannot Ping the virtual machine

11. Container with the most water

3.1 rtthread 串口设备(V1)详解
随机推荐
【概念】Web 基础概念认知
SD卡報錯“error -110 whilst initialising SD card
Restful style
pytorch加载数据
Eight super classic pointer interview questions (3000 words in detail)
Modeling specifications: naming conventions
The real machine cannot access the shooting range of the virtual machine, and the real machine cannot Ping the virtual machine
resulttype和resultmap的区别和应用场景
手写数据库客户端
OCR文字識別方法綜述
Mysqldump data backup
Era5 reanalysis data download strategy
Computer graduation project asp Net fitness management system VS development SQLSERVER database web structure c programming computer web page source code project
SD卡报错“error -110 whilst initialising SD card
Exness foreign exchange: the governor of the Bank of Canada said that the interest rate hike would be more moderate, and the United States and Canada fell slightly to maintain range volatility
施努卡:什么是视觉定位系统 视觉系统如何定位
Precautions for single chip microcomputer anti reverse connection circuit
[slam] orb-slam3 parsing - track () (3)
OCR文字识别方法综述
Pytorch基础——(2)张量(tensor)的数学运算