Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[Filesystem] stm32f103-fire-arbitrary BSP on_chip_flash littlefs 文件系统...
发布于 2019-04-11 23:25:38 浏览:2497
订阅该版
* 本帖最后由 tcsun 于 2019-5-8 00:15 编辑 * ** stm32f103-fire-arbitrary BSP on_chip_flash littlefs 挂载失败!!!** BSP: stm32f103-fire-arbitrary 问题:先采用spi W25Q64 Flash 挂载littlefs 文件系统成功!想用stmF103的(512K byte)片内flash。使用littlefs 文件系统。但挂载失败! 先用fal 命令测试片上flash读写是成功的 -------------------------------------------------------------------------------------------------------------------------- msh />fal probe No flash device or partition was probed. Usage: fal probe [dev_name|part_name] - probe flash device or partition by given name. [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | app | onchip_flash | 0x00000000 | 0x0007c000 | [I/FAL] | param | onchip_flash | 0x0007c000 | 0x00004000 | [I/FAL] | filesystem | W25Q64 | 0x00000000 | 0x00800000 | [I/FAL] ============================================================= msh />fal probe param Probed a flash partition | param | flash_dev: onchip_flash | offset: 507904 | len: 16384 |. msh />fal read 0 8 Read data success. Start from 0x00000000, size is 8. The data is: Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F [00000000] FF FF FF FF FF FF FF FF ........ msh />fal write 0 1 2 3 4 5 6 7 8 Too many args ! We only Use: fal write 0 1 2 3 4 5 6 7 Write data success. Start from 0x00000000, size is 7. Write data: 1 2 3 4 5 6 7 . msh />fal read 0 8 Read data success. Start from 0x00000000, size is 8. The data is: Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F [00000000] 01 02 03 04 05 06 07 FF ........ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- fal_cfg.h 如下: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #ifndef _FAL_CFG_H_ #define _FAL_CFG_H_ #include
#include
extern const struct fal_flash_dev stm32_onchip_flash; extern struct fal_flash_dev nor_flash0; /* flash device table */ #define FAL_FLASH_DEV_TABLE \ { \ &stm32_onchip_flash, \ &nor_flash0, \ } /* ====================== Partition Configuration ========================== */ #ifdef FAL_PART_HAS_TABLE_CFG /* partition table */ #define FAL_PART_TABLE \ { \ {FAL_PART_MAGIC_WROD, "app", "onchip_flash", 0, 496 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "param", "onchip_flash", 496* 1024 , 16 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "filesystem", "W25Q64", 0 , 8*1024 * 1024, 0}, \ } #endif /* FAL_PART_HAS_TABLE_CFG */ #endif /* _FAL_CFG_H_ */ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 挂载部分代码如下: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /* 定义要使用的分区名字 */ //#define FS_PARTITION_NAME "filesystem" #define FS_PARTITION_NAME "param" int main(void) { struct rt_device *mtd_dev = RT_NULL; struct rt_device *block_dev = RT_NULL; /* 初始化 fal */ fal_init(); /* 生成 mtd 设备 */ mtd_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); if (!mtd_dev) { LOG_E("Can't create a mtd device on '%s' partition.", FS_PARTITION_NAME); } // block_dev = fal_char_device_create(FS_PARTITION_NAME); // if(!block_dev) // { // rt_kprintf("Can't creat a block device on '%s' partition./n",FS_PARTITION_NAME); // } else { // rt_kprintf("fal_mtd_nor_device_create %s OK!
",FS_PARTITION_NAME); rt_kprintf("creat a block device on %s OK!
",FS_PARTITION_NAME); /* 挂载 littlefs */ if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == 0) { LOG_I("Filesystem initialized!"); } else { /* 格式化文件系统 */ dfs_mkfs("lfs", FS_PARTITION_NAME); /* 挂载 littlefs */ if (dfs_mount("filesystem", "/", "lfs", 0, 0) == 0) { LOG_I("Filesystem initialized!"); } else { LOG_E("Failed to initialize filesystem!"); } } } return RT_EOK; } ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 先用block_dev = fal_blk_device_create(FS_PARTITION_NAME); 创建 一个块设备。 设备创建成功。但dfs_mount()提示“ The flash device type must be MTD!” --------------------------------------------------------------------------------------------------------------------------------------------------------- \ | / - RT - Thread Operating System / | \ 4.0.1 build Apr 8 2019 2006 - 2019 Copyright by rt-thread team [SFUD] Find a Winbond flash chip. Size is 8388608 bytes. [SFUD] W25Q64 flash device is initialize success. dfs_lfs_init done! [D/FAL] (fal_flash_init:61) Flash device | onchip_flash | addr: 0x08000000 | len: 0x00080000 | blk_size: 0x00000800 |initialized finish. ===sfud_dev=W25Q64 === [D/FAL] (fal_flash_init:61) Flash device | W25Q64 | addr: 0x00000000 | len: 0x00800000 | blk_size: 0x00001000 |initialized finish. fal_flash_init done! [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | app | onchip_flash | 0x00000000 | 0x0007c000 | [I/FAL] | param | onchip_flash | 0x0007c000 | 0x00004000 | [I/FAL] | filesystem | W25Q64 | 0x00000000 | 0x00800000 | [I/FAL] ============================================================= [I/FAL] RT-Thread Flash Abstraction Layer (V0.4.0) initialize success. [I/FAL] The FAL block device (param) created successfully creat a block device on param OK! **The flash device type must be MTD!** **The flash device type must be MTD!** [E/main] Failed to initialize filesystem! msh /> --------------------------------------------------------------------------------------------------------------------------------------------------------- 如果改为:mtd_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); 再dfs_mount() 。 先是会程序挂掉,后来找到问题是在 struct rt_device *fal_mtd_nor_device_create(const char *parition_name) 函数 里。 因为 &stm32_onchip_flash, 是没有init函数的,所以按下面修改。 //sunny try debug--190411 if (fal_flash->ops.init) { fal_flash->ops.init(); } // fal_flash->ops.init(); 但又提示下面出错: ----------------------------------------------------------------------------------------------------------------------------------- \ | / - RT - Thread Operating System / | \ 4.0.1 build Apr 8 2019 2006 - 2019 Copyright by rt-thread team [SFUD] Find a Winbond flash chip. Size is 8388608 bytes. [SFUD] W25Q64 flash device is initialize success. dfs_lfs_init done! [D/FAL] (fal_flash_init:61) Flash device | onchip_flash | addr: 0x08000000 | len: 0x00080000 | blk_size: 0x00000800 |initialized finish. ===sfud_dev=W25Q64 === [D/FAL] (fal_flash_init:61) Flash device | W25Q64 | addr: 0x00000000 | len: 0x00800000 | blk_size: 0x00001000 |initialized finish. fal_flash_init done! [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | app | onchip_flash | 0x00000000 | 0x0007c000 | [I/FAL] | param | onchip_flash | 0x0007c000 | 0x00004000 | [I/FAL] | filesystem | W25Q64 | 0x00000000 | 0x00800000 | [I/FAL] ============================================================= [I/FAL] RT-Thread Flash Abstraction Layer (V0.4.0) initialize success. fal_flash name onchip_flash [I/FAL] The FAL MTD NOR device (param) created successfully creat a block device on param OK! **lfs error:493: Corrupted dir pair at 0 1** **lfs error:2222: Invalid superblock at 0 1** [E/main] Failed to initialize filesystem! msh /> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **请哪位对littlefs 系统熟悉的大神 指点一下。不胜感激!!!!!!!!! 我最终的目的就是想在片上flash 实现littlefs 文件系统。**
查看更多
5
个回答
默认排序
按发布时间排序
flyboy
2019-04-12
Do my self();
文档中心有一篇littlefs的应用笔记,不知道楼主看过没有
tcsun
2019-04-12
这家伙很懒,什么也没写!
>文档中心有一篇littlefs的应用笔记,不知道楼主看过没有 --- 我就是按这个操作的,spi nor flash 是可以的,但改为片内flash 就不行!
flyboy
2019-04-15
Do my self();
片内的我也不没用过,帮顶
sober
2019-05-14
这家伙很懒,什么也没写!
STM32片上FLASH移植FAL+LittleFs成功,官方flash库存在问题,我等级不够,无法给你会消息,在你的问题帖子里告诉你,[https://www.rt-thread.org/qa/thread-11252-1-1.html](https://www.rt-thread.org/qa/thread-11252-1-1.html)
tcsun
2019-05-14
这家伙很懒,什么也没写!
非常感 谢! 我也是刚看到部分,然后一直在外出差,没时间继续,回去后我也试一下!
撰写答案
登录
注册新账号
关注者
0
被浏览
2.5k
关于作者
tcsun
这家伙很懒,什么也没写!
提问
19
回答
62
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部