当前位置:网站首页>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查看信息如下:

边栏推荐
- Audio-AudioRecord Binder通信机制
- Performance test method of bank core business system
- Pelosi: Congress will soon have legislation against members' stock speculation
- 深度解析指针与数组笔试题
- Overview of OCR character recognition methods
- Analyze menu analysis
- canvas切积木小游戏代码
- MADDPG的pythorch实现——(1)OpenAI MADDPG环境配置
- Who is the winner of PTA
- NR modulation 1
猜你喜欢
随机推荐
Research on cooperative control of industrial robots
适合程序员学习的国外网站推荐
How to write compile scripts compatible with arm and x86 (Makefile, cmakelists.txt, shell script)
My C language learning record (blue bridge) -- under the pointer
2022工作中遇到的问题四
Advanced learning of MySQL -- Fundamentals -- isolation level of transactions
3857墨卡托坐标系转换为4326 (WGS84)经纬度坐标
mysqldump数据备份
Restful style
IPv6 comprehensive experiment
Teach you to build your own simple BP neural network with pytoch (take iris data set as an example)
Image super-resolution using deep convolutional networks(SRCNN)解读与实现
Performance analysis of user login TPS low and CPU full
NR modulation 1
SD卡報錯“error -110 whilst initialising SD card
[pointer training - eight questions]
3857 Mercator coordinate system converted to 4326 (WGS84) longitude and latitude coordinates
[risc-v] external interrupt
Erreur de la carte SD "erreur - 110 whilst initialisation de la carte SD
SD卡报错“error -110 whilst initialising SD card









