Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI
SPI同时挂载SD卡和Flash SD初始化失败,Flash初始化成功
发布于 2019-05-28 13:16:01 浏览:2475
订阅该版
* 本帖最后由 SimpleFan 于 2019-5-28 13:44 编辑 * RTT新手,比较喜欢RTT的风格,在调试SD卡挂载elm时遇到报硬件错误?麻烦各位大神指导下。通过RTT自动初始化与finsh“mkfs”命令格式化SD卡时,报错的线程不一样。 自动挂载初始化时,报sd_mount线程硬件错误,“mkfs”finsh命令报tshell硬件错误。 1、STM32F091芯片,Keil5.26编译环境,RTT 4.0.1版本,RTT3.1.2均试过,结果一样 2、加入了自带的spi_msd.c文件,以及ELM的相关文件。裸机调试挂载FATFS无问题并且能格式化SD及文件读取写入。 3、SD卡初始代码使用的是BSP stm32l475-atk-pandora中的sdcard_port.c如下: ``` void sd_mount(void *parameter) { while (1) { rt_thread_mdelay(500); if(rt_device_find("sd0") != RT_NULL) { if (dfs_mount("sd0", "/", "elm", 0, 0) == RT_EOK) { LOG_I("sd card mount to '/'"); break; } else { LOG_W("sd card mount to '/' failed!"); } } } } int stm32_sdcard_mount(void) { rt_thread_t tid; tid = rt_thread_create("sd_mount", sd_mount, RT_NULL, 1024, RT_THREAD_PRIORITY_MAX - 2, 20); if (tid != RT_NULL) { rt_thread_startup(tid); } else { LOG_E("create sd_mount thread err!"); } return RT_EOK; } INIT_APP_EXPORT(stm32_sdcard_mount); static int rt_hw_spi1_sdcard(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); rt_hw_spi_device_attach("spi1", "spi11", GPIOA, GPIO_PIN_4); return msd_init("sd0", "spi11"); } INIT_DEVICE_EXPORT(rt_hw_spi1_sdcard); ``` 4、finsh下的输出如下:![2.png](/uploads/201905/28/120526pt4tmz2auzuu0su5.png) 挂掉并报 "hard fault on thread: sd_mount"错误 4、联机调试发现,卡死在SD初始化时,发送 CMD8这调命令上, ![3.png](/uploads/201905/28/125250o54exlozzz7wt70a.png) 一步一步跟踪下去,发现挂在 SPI接收这个(HAL接收)库函数上, ![5.png](/uploads/201905/28/125250v1331un2v7jnbnv2.png) 进入函数继续,发现卡死在 hspi->Instance->DR = *((uint16_t *)pTxData); 这条语句上(HAL库不应该有问题啊,裸机测试都没有挂) ![6.png](/uploads/201905/28/125250rtw7v6d6xv8el0ww.png) 继续就跳转到指针错误处理了 ![7.png](/uploads/201905/28/125250vxo6xv2yyyv3xx63.png) 5、注释到SD挂载语句 “INIT_APP_EXPORT(stm32_sdcard_mount);”不使用RTT 初始化挂载SD卡,就不会出问题。然后用“mkfs -t elm sd0”finsh命令来格式化SD卡,同样报错,finsh输出如下:此时又报“hard fault on thread: tshell”错误 ![1.png](/uploads/201905/28/125250razoahyptw0owwvw.png) 麻烦RTT的大神们给看看什么问题 ![4.png](https://oss-club.rt-thread.org/uploads/201905/28/125250btctuemgmmgy21cg.png)
查看更多
12
个回答
默认排序
按发布时间排序
还没想好
2019-05-28
这家伙很懒,什么也没写!
"不使用RTT 初始化挂载SD卡,就不会出问题。然后用“mkfs -t elm sd0”finsh命令来格式化SD卡",挂载之前,有没有执行 SD 卡的初始化?是不是 sd_mount 线程栈有点小?
SimpleFan
2019-05-28
这家伙很懒,什么也没写!
>"不使用RTT 初始化挂载SD卡,就不会出问题。然后用“mkfs -t elm sd0”finsh命令来格式化SD卡",挂载之前, ... --- 之前试过改成 4096,还是一样的报错。FLash都初始化完成了,跟踪调试是在SPI的HAL库里报错,不知道从哪里分析问题了。有没有应用成功的例子呢?想看下env里边对RTT的配置是什么样的,ENV里边的组件配置有些都不知道有什么作用
还没想好
2019-05-28
这家伙很懒,什么也没写!
先不考虑文件系统,调用 rt_device_open("sd0"); 看看能不能打开这个设备先
SimpleFan
2019-05-30
这家伙很懒,什么也没写!
>先不考虑文件系统,调用 rt_device_open("sd0"); 看看能不能打开这个设备先 --- 终于找到原因了,是地址没对齐访问造成的,谢谢哈!困扰几天了
水清沙白
2019-05-30
这家伙很懒,什么也没写!
这代码里面咋还那么长的延时,SDIO那边有个阻塞的接口,等待枚举成功的。
SimpleFan
2019-05-31
这家伙很懒,什么也没写!
>这代码里面咋还那么长的延时,SDIO那边有个阻塞的接口,等待枚举成功的。 --- 是SPI通信,
瑞尧
2019-08-28
这家伙很懒,什么也没写!
>终于找到原因了,是地址没对齐访问造成的,谢谢哈!困扰几天了 --- 楼主,我也遇到和你一样的问题,是哪里的地址没有对齐?可以具体解释一下吗?
SimpleFan
2019-12-12
这家伙很懒,什么也没写!
>楼主,我也遇到和你一样的问题,是哪里的地址没有对齐?可以具体解释一下吗? ... --- 不好意思,好久没上线了。问题解决了吗?是官方的SD卡驱动 里边的SD卡响应命令解析,会造成非地址对齐访问。
瑞尧
2019-12-12
这家伙很懒,什么也没写!
>不好意思,好久没上线了。问题解决了吗?是官方的SD卡驱动 里边的SD卡响应命令解析,会造成非地址对齐访 ... --- 没有解决,我从F1换到F4的BSP,这个问题自己就没有了,可能是我的板子有问题吧
whj467467222
认证专家
2019-12-12
开源,分享,交流,共同进步
>没有解决,我从F1换到F4的BSP,这个问题自己就没有了,可能是我的板子有问题吧 ... --- [http://www.stmcu.org.cn/module/forum/thread-617579-1-1.html](http://www.stmcu.org.cn/module/forum/thread-617579-1-1.html) 是这个问题把
撰写答案
登录
注册新账号
关注者
0
被浏览
2.5k
关于作者
SimpleFan
这家伙很懒,什么也没写!
提问
1
回答
16
被采纳
0
关注TA
发私信
相关问题
1
BBB的SPI驱动
2
求个SPI上挂两个或多个设备的使用例子
3
SPI设备有个bug
4
spi flash 的fatfs使用一段时间后读写文件出现故障
5
SPI驱动
6
请教rt_spi_configure函数理解
7
SPI FLASH挂载的问题
8
SPI-FLASH 文件系统 SPIFFS
9
求助一个完整的 spi flash 驱动
10
关于同时使用文件系统与SPI FLASH的问题
推荐文章
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
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
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
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部