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- ...
随机推荐
- WPF引入OCX控件
(方法一) https://www.cnblogs.com/guaniu/archive/2013/04/07/3006445.html (方法二) 1.先注册OCX控件:(有的把OCX 控件封装到E ...
- 文件被sourceTree忽略了怎么办
- Java使用Apache Commons Net实现FTP功能
maven依赖: <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> ...
- 【Leetcode_easy】1108. Defanging an IP Address
problem 1108. Defanging an IP Address solution: class Solution { public: string defangIPaddr(string ...
- gunicorn的log如何传递给django,由django管理
gunicorn配置文件为gunicorn_config.py里面有日志的配置 # errorlog = '/home/admin/output/erebus/logs/gunicorn_error. ...
- Spring jsp 验证 form:errors标签
1 在model层添加验证规则 @NotNull @Size(min=2,max =30,message="姓名在2-30个字符之间") private String userna ...
- The Select mechanism in linux for block mechanism
Today, some one mention theknowledge of Select Mechanism. It's better to konw something about it ! O ...
- java--demo之图书馆管理系统
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAkACQAAD/4RDQRXhpZgAATU0AKgAAAAgABAE7AAIAAAADTXkAAIdpAAQAA ...
- python学习-19 字典
字典dict 1.dic = {key:value,key:value} 字典有{ }括住,字典的value可以是任意值,字典的key的值不包括列表和字典 di = {"age": ...
- 更改CodeBlocks注释的颜色