Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
elm文件系统初始化出错
发布于 2012-11-10 11:50:20 浏览:3763
订阅该版
开始跑1.1.0RC版本,驱动正常读取、发现当初始化文件系统的时候,执行到 if (dfs_mount("flash0", "/", "elm", 0, 0) == 0) rt_kprintf("File System initialized! "); else rt_kprintf("File System init failed! "); 就挂掉, 进一步调试,发现问量出在 FRESULT f_opendir ( DIR *dj, /* Pointer to directory object to create */ const TCHAR *path /* Pointer to the directory path */ ) { FRESULT res; DEF_NAMEBUF; res = chk_mounted(&path, &dj->fs, 0); if (res == FR_OK) { INIT_BUF(*dj); res = follow_path(dj, path); /* Follow the path to the directory */ FREE_BUF(); if (res == FR_OK) { /* Follow completed */ if (dj->dir) { /* It is not the root dir */ if (dj->dir[DIR_Attr] & AM_DIR) { /* The object is a directory */ dj->sclust = LD_CLUST(dj->dir); } else { /* The object is not a directory */ res = FR_NO_PATH; } } if (res == FR_OK) { dj->id = dj->fs->id; res = dir_sdi(dj, 0); /* Rewind dir */ } } if (res == FR_NO_FILE) res = FR_NO_PATH; } LEAVE_FF(dj->fs, res); } ![1.jpg](/uploads/2052_9c28bc4d950a99589d3c6fbedb45fa75.jpg) ,当进入dir_sdi函数的时候,访问到dj->fs的成员就会挂掉,我把dj啦到调试窗口,发现dj->fs根本就是个野指针,没有正常初始化,所以猜测是范围了野指针后地址总线出错导致芯片出错,而我发现,1.0.2是不会用在初始化 的时候出错是因为它并没有操作到这些函数。初始化完后才有用到。 现在正在找解决方法……
查看更多
9
个回答
默认排序
按发布时间排序
xiao苦
2012-11-11
这家伙很懒,什么也没写!
``` FRESULT f_opendir( DIR *dj, /* Pointer to directory object to create */ const TCHAR *path /* Pointer to the directory path */ ) { FRESULT res; DEF_NAMEBUF; res = chk_mounted(&path, &(dj->fs), 0); ``` 在这里,发现dj->fs的值是没有被修改,才早成,崩溃,问题在说,这个操作本来是应该不会有问题的,为什么不能被chk_mounted函数置df->fs值呢。
bernard
2012-11-11
这家伙很懒,什么也没写!
你的硬件平台是什么?
xiao苦
2012-11-11
这家伙很懒,什么也没写!
Keil 4.54,LPC1788..另外发现,我把系统内存设置在sdram的时候,初始化出现 create msgq failed. 跟踪了下,发现是因为malloc函数没分配到内存, finsh>>list_mem() total memory: 32786408 used memory : -852 maximum allocated memory: 3520 31, 0x0000001f list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- led 0x0b suspend 0x00000070 0x00000100 0x00000070 0x00000001 000 tidle 0x1f ready 0x00000040 0x00000100 0x00000050 0x0000001a 000 tshell 0x14 ready 0x00000138 0x00001000 0x00000154 0x00000007 000 led 0x0b suspend 0x0000005c 0x00000400 0x0000005c 0x00000005 000 0, 0x00000000 。。。- -又一个想不通的地方,为什么会是-852呢,这内存分配到哪里去了,有点想不通,我用的只是1.1.0RC的附带178x历程,不可能用这么多的。。 此外,elm文件系统我用这个方法解决了。。但是因为是改了ff.c的代码,心里不自在,1.0.2的时候这个文件本来就没问题的,正常使用,平台一样。 res = chk_mounted(&path, &dj->fs, 0); if (res == FR_OK) { UINT vol; const TCHAR *p = path; /* Get logical drive number from the path name */ vol = p[0] - '0'; /* Is there a drive number? */ if (!((vol <= 9) && (p[1] == ':'))){ /* No drive number is given */#if _FS_RPATH vol = CurrVol; /* Use current drive */ #else vol = 0; /* Use drive 0 */ #endif } dj->fs = FatFs[vol];
bernard
2012-11-11
这家伙很懒,什么也没写!
先验证你的SDRAM没错吧 RT-Thread 1.1.0这个分支实际上已经在多个平台上验证了,不可能出现这种文件系统初始化都出错的问题。
xiao苦
2012-11-11
这家伙很懒,什么也没写!
sdram验证过了, 确实没错。读写完全正常的, 跟踪调试也进去了, 确实在里面是把地址置值了, 但是函数出来后,又变回原来值了, 很莫名奇妙。。
xiao苦
2012-11-12
这家伙很懒,什么也没写!
加了些代码后,发现问题自己消失了。文件系统自己好了,GUI_APP也通过 了…… finsh>>list_mem() total memory: 32786408 used memory : 32076 maximum allocated memory: 38584 32, 0x00000020 内存分配也正常了……。这下我更蒙了,不知道是哪里有问题……PS:以前1.0.2代码就是好的, 用的同一个编译器。
bernard
2012-11-12
这家伙很懒,什么也没写!
你原来也是跑这个硬件上吗?1788的硬件在我们这边跑起来,现象就是SDRAM不稳定
xiao苦
2012-11-12
这家伙很懒,什么也没写!
我一直在1788上跑的。。不会不稳定的, 放那跑三天都没事。。 不过有几点,当用USB的时候,1788只有64kram,另外的32k区域是为额外功能准备的, 比如LCD颜色表与USBDMA缓冲,所以不能用了, 此外,常跑的任务需要放sram,我一般情况下都是静态线程,因为跑LCD的时候可能会影响到显示。。。 SDRAm不稳定可能是你们时钟没设好, 一般不要跑满速,能跑系统时钟一半就很稳定, 不会有问题,太高会出问题。
撰写答案
登录
注册新账号
关注者
0
被浏览
3.8k
关于作者
xiao苦
这家伙很懒,什么也没写!
提问
57
回答
244
被采纳
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
TinyUSB Demo运行教程
2
RT-Thread学习大礼包一键带走!
3
freemodbus从机调试说明
4
【1024】瑞萨 RA 系列 BSP 制作与适配最新版本的 Keil 、 RSC、固件,较新的 FSP
5
基于 RT-Thread 星火一号开发板的俄罗斯方块
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
用户名由3_15位
10
个答案
1
次被采纳
KunYi
4
个答案
1
次被采纳
踩姑娘的小蘑菇
2
个答案
1
次被采纳
bernard
1
个答案
1
次被采纳
rv666
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部