Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[求助]关于uffs文件系统的格式化
发布于 2013-04-10 13:45:18 浏览:3603
订阅该版
dfs_uffs.c这个文件中有如下函数: ```static int dfs_uffs_mkfs(const char* device_name) { rt_base_t index; rt_uint32_t block; struct rt_mtd_nand_device * mtd; /*1. find the device index */ for (index = 0; index < UFFS_DEVICE_MAX; index++) { if (rt_strncmp(nand_part[index].dev->parent.parent.name, device_name, RT_NAME_MAX) == 0) break; } if (index == UFFS_DEVICE_MAX) { /* can't find device driver */ rt_kprintf("can not find device driver: %s ", device_name); return -DFS_STATUS_ENOENT; } /*2. then unmount the partition */ uffs_Mount(nand_part[index].mount_path); mtd = nand_part[index].dev; /*3. erase all blocks on the partition */ block = mtd->block_start; for (; block <= mtd->block_end; block++) { rt_mtd_nand_erase_block(mtd, block); if (rt_mtd_nand_check_block(mtd, block) != RT_EOK) { rt_kprintf("found bad block %d ", block); rt_mtd_nand_mark_badblock(mtd, block); } } /*4. remount it */ if (init_uffs_fs(&nand_part[index]) < 0) { return uffs_result_to_dfs(uffs_get_error()); } return DFS_STATUS_OK; }``` 而我的配置是 #define RT_CONFIG_UFFS_ECC_MODE UFFS_ECC_HW_AUTO 以及 /* #define RT_UFFS_USE_CHECK_MARK_FUNCITON */ (不使用自己写的check/mark函数,让uffs处理) 问题来了,上边的代码中格式化要调用 rt_mtd_nand_erase_block、rt_mtd_nand_check_block这两个函数,但是系统中的这两个函数并没有编写(只有接口),而是让uffs内部实现的。同时因为宏开关的原因这两个函数也没有参与编译(红牛stm32f10x例程中这两个驱动函数只有接口)。 请问如果在/* #define RT_UFFS_USE_CHECK_MARK_FUNCITON */(注释掉) 的情况下,要手动执行dfs_mkfs("uffs","nand"); //格式化功能 是否需要编写这两个驱动函数? 可以不写这两个驱动函数,直接让uffs实现吗? 如果不写这两个驱动,要手动执行格式化操作应该调用哪个函数呢? @prife
查看更多
9
个回答
默认排序
按发布时间排序
prife
2013-04-10
这家伙很懒,什么也没写!
uffs其实并不需要什么格式化操作。所谓的格式化,并不会写入什么特殊的数据。 只要实现一个nand_erase_all函数,将所有nand扇区全部擦除。然后复位就行了。对uffs来说,这就是一个被格式化后、新的nand flash。 其实上面的mkfs代码里就是这么实现的,不过为了代码的健壮性,在擦除分区之后,调用了check-block和mark-block-bad函数,实际上不调用也是可以的。 另外:在uffs在/* #define RT_UFFS_USE_CHECK_MARK_FUNCITON */,确实是存在你说的问题的,这是个bug,我会在github中尽快修复。
doushinide
2013-04-10
这家伙很懒,什么也没写!
/*2. then unmount the partition */ uffs_Mount(nand_part[index].mount_path); 注释里写的是unmount,那下面的函数是否应该是uffs_UnMount函数呢?
doushinide
2013-04-15
这家伙很懒,什么也没写!
修复好了回来留个链接啊 3Q
bernard
2013-04-15
这家伙很懒,什么也没写!
不要急呀,每个人都有自己的一堆事情。。。
doushinide
2013-04-15
这家伙很懒,什么也没写!
>不要急呀,每个人都有自己的一堆事情。。。 --- 没急啊 我的语气像着急么。。。 [s:166] [s:169] [s:170] 我是说哪天做好了回来留个链接方便后人啊。 我老早就把相关git的网页加收藏夹了哈哈 [s:175]
prife
2013-04-15
这家伙很懒,什么也没写!
>/*2. then unmount the partition */ >uffs_Mount(nand_part[index].mount_path); > >注释里写的是unmount,那下面的函数是否应该是uffs_UnMount函数呢? --- 不好意思,最近忙毕业论文的事情,真是焦头烂额的,除了间隙时间刷刷论坛和QQ群,其他工作基本上全部暂停。uffs的问题还需要往后放一放。如果实在着急,你也可以试着修改下bug,提交patch。
doushinide
2013-04-16
这家伙很懒,什么也没写!
完全理解 答辩的日子不远了 加油!拿个优秀毕业设计哈~
iwillbeback008
2013-05-10
这家伙很懒,什么也没写!
希望prife早日归来,造福大伙!!!
撰写答案
登录
注册新账号
关注者
0
被浏览
3.6k
关于作者
doushinide
这家伙很懒,什么也没写!
提问
7
回答
32
被采纳
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
env中添加lvgl软件包后,keil编译包--c99错误
2
【NXP-MCXA153】 定时器驱动移植
3
GD32F450 看门狗驱动适配
4
【NXP-MCXA153】看门狗驱动移植
5
RT-Thread Studio V2.2.9 Release Note
热门标签
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在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
10
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部