初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-7-22
- 在线时间
- 9 小时
|
5金钱
系统需要存储日志信息到SD卡中,为避免多task同时写同一个文件,进行了加锁OS_EVENT * sem_Log = OSSemCreate(10);
void BeforeWrite_LOG()
{
OSSemPost(sem_Log);
}
void AfterWrite_LOG()
{
u8 err;
OSSemPend(sem_Log, 0, &err);
}
void WriteLog(u8* msg)
{
BeforeWrite_Log();
...
AfterWrite_Log();
}
系统上电后运转正常10几分钟后,就不能读写文件了,返回FR_DISK_ERR
SD卡数据检查后也是正常的。检查内存也没有泄露。
而且重启后(热启动)f_mount(fs[0],"0:",1);失败(错误位置就是SD_Initialize中SD_SendCmd)。必须断开电源后启动才正常。
请问:
1、上面的加锁方式对不对
2、为什么热启动后fmount失败
3、如果热启动无法解决初始化SD卡的问题,有没有通过代码冷启动的方式(我试过设置SCB->AIRCR、调用NVIC_SystemReset、停止喂狗三种方式都是热启动)
|
|