rt-thread下调试elmfat 问题记录
硬件平台:stm32f107 SPI flash:w25q32
RTT版本:v2.1
w25q32的驱动大神们已经写好(w25qxx.c),我只需要照猫画虎的实现相应SPI的驱动程序即可(bsp例程都有),如此spi flash就可以读写了。查看device列表如下:

接着启用DFS功能和ELMFAT类型文件系统,并挂载文件系统名为“elm”的文件系统到介质为flash0的根目录下,如下图:
#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096 //spi flash的扇区大小是4096

但是会提示挂载失败,原因时flash里边的文件系统分区数据不存在,所以需要格式化一下spi flash,命令如下:

这里截图显示的是理想的情况,在我调试的时候mkfs/mkdir/open都会导致系统卡死或者崩溃,但是在单步仿真的时候,又会一步步正常运行,很是郁闷。
后来发现当全速运行异常后(仿真时不会崩溃,但是程序停止运行,却不知程序指针指在哪里),多次按F10后,程序指针忽然运行到函数get_fattime()中,然后再次全速就正常了,文件打开成功了,目录创建正常了。看样子问题和这个函数有关系了。
深入跟踪get_fattime(),发现该函数可用宏_FS_NORTC来控制是否使用,并说明该函数和RTC相关,如图

原来如此,在调试的硬件上,没有按照RTC的驱动框架实现RTC功能,而是使用I2C自己控制的片外RTC,所以get_fattime()调用RTC驱动框架接口函数失败可能是导致异常的原因。
禁止文件系统使用时间戳功能后(#define _FS_NORTC 1),一切恢复正常了。
rt-thread下调试elmfat 问题记录的更多相关文章
- OneOS下调试支持的几种方式
方法论 当我们遇到问题,应该怎么办?这不仅应用于程序开发,也是我们在生活中遇到问题的时候,应该想的事儿,怎么办!趁着此次机会,我好好想了七秒钟. 先问是不是问题,如果不是就不用解决了 如果确实是问题, ...
- sqlserver下调试sql语句
现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...
- VS2005--设置Release模式下调试
今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug ...
- Windows下调试hadoop
1. 本地模式 本地模式下调试hadoop:下载winutils.exe和hadoop.dll hadoop.lib等windows的hadoop依赖文件放在D:\proc\hadoop\bin目 ...
- git 命令行下浏览器tig使用记录
git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...
- python代码在IDE下调试设置命令行参数
带命令行参数的代码在IDE下调试,需要把参数赋值,本文mark一下具体的命令行参数在代码中赋值方法. if __name__ == "__main__": sys.argv = [ ...
- 使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象
如题(“使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象”). 今天使用ffmpeg进行宿放和颜色格式转换,很简单的代码,却折腾了我一天,这里说来就气啊 ...
- 【转】 VC++6.0 在Win7 64位下调试,Shift+F5无法退出
Win7 64位VC++6.0调试代码无法关闭窗口解决方法 VC++6.0 在64位Windows7下调试的时候,再结束调试,程序无法退出,只能关闭VC++6.0 IDE环境. 问题描述:当我击F5开 ...
- vs2008 怎么在Release下调试代码
vs2008 怎么在Release下调试代码 (适用VS2005/VS2008) 在当前工程点击右键选择properties,选择 All Configurations C++>General- ...
随机推荐
- 微信支付 composer 方法 --- 实测有效
<h1 align="center">Pay</h1> <p align="center"> <a href=&quo ...
- 【Leetcode_easy】1108. Defanging an IP Address
problem 1108. Defanging an IP Address solution: class Solution { public: string defangIPaddr(string ...
- React 表单常用整理
4.填写表单时添加提示小图标,友好展示填写规则 ——Tooltip <FormItem {...formItemLayout} label={( <span> Nickname & ...
- react 问题记录三
7.三元表达式 是否显示提交按钮(值运算用一对大括号包起来): {this.state.isTrue ? <FormItem style={{textAlign: 'right',marginT ...
- Caché到MySQL数据同步方法!
随着医疗行业信息化的发展,积累了大量的业务数据,如何挖掘这些数据,实现数据的可视化被提上日程,医院中通常有许多的信息化系统,使用的又都是不同厂商的数据库产品,如何统一汇聚数据,实现数据互通也是一个大问 ...
- SVN安装使用【转】
SVN使用教程总结 SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Sub ...
- charles 查找
本文参考:charles 查找 查找设置 界面如上图,也没啥好说的: 这个还是非常常用的:需要了解 界面如上图,也没啥好说的: 这个还是非常常用的:需要了解 查找需要了解的关键字是: 查找的内容 正则 ...
- 二十四 java 多线程一些知识点
1:blocked线程和waiting的线程的区别? 如何唤醒? java线程中含有waiting与blocked两种状态: 线程的 blocked状态往往是无法进入同步方法/代码块来完成的(BLOC ...
- SpringBoot Profile使用详解及配置源码解析
在实践的过程中我们经常会遇到不同的环境需要不同配置文件的情况,如果每换一个环境重新修改配置文件或重新打包一次会比较麻烦,Spring Boot为此提供了Profile配置来解决此问题. Profile ...
- Azure经典虚拟机(Windows)如何监测单个磁盘的使用空间
Azure云平台创建经典虚拟机(Windows)后,发现仪表板的监测项下默认是没有针对磁盘空间进行检测的指标的 本地机器安装Windows Azure Powershell模块,并通过如下命令登陆并查 ...