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

边栏推荐
- Four logs of MySQL server layer
- ERA5再分析资料下载攻略
- The next industry outlet: NFT digital collection, is it an opportunity or a foam?
- 蓝色样式商城网站页脚代码
- Advanced learning of MySQL -- Fundamentals -- isolation level of transactions
- SWC introduction
- 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
- How to do function test well
- 银行核心业务系统性能测试方法
- Game theory matlab
猜你喜欢

Redo file corruption repair

下一个行业风口:NFT 数字藏品,是机遇还是泡沫?

Pytorch基础——(1)张量(tensor)的初始化

ASU & OSU | model based regularized off-line meta reinforcement learning

Résumé des méthodes de reconnaissance des caractères ocr

【概念】Web 基础概念认知
![BUUCTF刷题笔记——[极客大挑战 2019]EasySQL 1](/img/37/c38a933ce7fa5d2b8fa597965ffcb2.png)
BUUCTF刷题笔记——[极客大挑战 2019]EasySQL 1
![[concept] Web basic concept cognition](/img/27/14bcd73ca70d136436a4382a1b4bd1.jpg)
[concept] Web basic concept cognition

canvas切积木小游戏代码

Analyze 菜单分析
随机推荐
2.1 rtthread pin设备详解
深度解析指针与数组笔试题
Polymorphic day02
ASU & OSU | model based regularized off-line meta reinforcement learning
【SLAM】ORB-SLAM3解析——跟踪Track()(3)
Daily question brushing plan-2-13 fingertip life
Crazy, thousands of netizens are exploding the company's salary
Research on cooperative control of industrial robots
[Li Kou] the second set of the 280 Li Kou weekly match
八道超经典指针面试题(三千字详解)
Audio-AudioRecord Binder通信机制
February 14, 2022 Daily: Google long article summarizes the experience of building four generations of TPU
Web security SQL injection vulnerability (1)
【RISC-V】外部中断
Record the process of reverse task manager
2.2 STM32 GPIO操作
3857 Mercator coordinate system converted to 4326 (WGS84) longitude and latitude coordinates
Idea push rejected solution
Restful style
Leetcode problem solving -- 173 Binary search tree iterator