Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
关于多设备挂载的问题(在原有的基础上挂载U盘设备)
发布于 2012-05-03 15:30:20 浏览:4186
订阅该版
```if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) { rt_kprintf("File System initialized! "); } else rt_kprintf("File System initialzation failed! "); ret = mkdir("/udisk", 0x777); if(ret < 0) { rt_kprintf("[mkdir error!] "); } else { rt_kprintf("[mkdir ok!] "); } if (dfs_mount("usb", "/udisk", "elm", 0, 0) == 0) { rt_kprintf("File System initialized! "); } else rt_kprintf("File System initialzation failed! "); fd = open("/udisk/text1.txt", O_WRONLY | O_CREAT | O_TRUNC,0); if (fd >= 0) { close(fd); }``` 为什么我的第二次挂载的成功必须要修改底层的如下函数中的sector*512,count*512呢?求解 ```DRESULT disk_read(BYTE drv, BYTE *buff, DWORD sector, BYTE count) { rt_size_t result; rt_device_t device = disk[drv]; result = rt_device_read(device, sector*512, buff, count*512); if (result ==count*512) { return RES_OK; } return RES_ERROR; } DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, BYTE count) { rt_size_t result; rt_device_t device = disk[drv]; result = rt_device_write(device, sector*512, buff, count*512); if (result == count*512) { return RES_OK; } return RES_ERROR; }```
查看更多
7
个回答
默认排序
按发布时间排序
aozima
2012-05-03
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
从0.3.X起,块设备的pos与size的单位都修改为block.而不是原来的字节。 请更新RT-Thread与驱动程序。 (话外音:驱动程序的control接口必须支持RT_DEVICE_CTRL_BLK_GETGEOME命令)
dfishing
2012-05-03
这家伙很懒,什么也没写!
这个意思就是说目前的disk_read,disk_write里的sector及count都要*512是么
xiao苦
2012-05-03
这家伙很懒,什么也没写!
不是,不一定是乘512,比如我的华邦w25Q,是要乘4096的, 要看硬件的,硬件最小可擦除块多少就该乘多少,但是对于U盘是不需要这样的,因为u盘本身是块寻址,每块512,配置好三个参数后直接读取是不需要*512的的。
dfishing
2012-05-03
这家伙很懒,什么也没写!
谢谢回复 刚刚我将sector,count都乘以512。而U盘底层的读写块使用这些传进来的参数时我再除掉512,这样调试一下文件打开成功了,就像你说的U盘不需要*512 。。。。。。。。但是我需要SD和U盘都挂载所以*512还是要乘的。。。。。。。。非常感谢
aozima
2012-05-03
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
请认真看2楼的贴子。 RT-Thread的块设备驱动的单位是块,elmfat的单位也是块。 最终传到驱动这边的参数就是:从pos1读取2块。 那么驱动中应该: SD卡/U盘:从pos*512 处读取512*2字节(SDHC除外)。 4K FLASH:从pos*4096处读取4096*2字节。 在访问块设备前,需要先使用 RT_DEVICE_CTRL_BLK_GETGEOME命令 获取块设备的参数。
mique
2012-12-22
这家伙很懒,什么也没写!
mark 后续研究此问题
撰写答案
登录
注册新账号
关注者
0
被浏览
4.2k
关于作者
dfishing
这家伙很懒,什么也没写!
提问
13
回答
11
被采纳
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
rt-smart启动流程分析
2
EtherKit快速上手PROFINET
3
RTThread USB转串口无法接收数据
4
HC32F4A0 SD卡挂载及热插拔的实现
5
vscode插件 - RT-Thread Studio项目助手 | 跨平台开发
热门标签
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在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部