使用UCOS-II SD卡读取数据写不到动态分配的内存中

2019-07-21 03:03发布

在sd卡任务中,动态分配了512字节的区域
然后让扇区0的数据写入,输出全是0
但是直接定义512字节的数组就能写进去
这是怎么回事 
我每进入一个函数都输出buff的地址,地址都没有变,数据就是写不进去
可以保证操作SD的时候没有对buff的地址发送误操作
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
taizonglai
1楼-- · 2019-07-21 08:02
看一下你的内存申请成功了没有
Theone
2楼-- · 2019-07-21 11:52
回复【2楼】zuozhongkai:
---------------------------------
我现在找出了点眉目
我用了一个任务 代码是这样的
void SDIO_TASK(void *pdata)
{
    u8 *buf = my_malloc(512);
    u16 i;
    while(1)
    {
        SD_ReadDisk(buf,0,1);
        for(i=0;i<512;i++)
        {
            printf("%2x ",buf);
            if((i+1)%32==0)
                printf(" ");
        }
        delay_ms(500);
    }
}
这样 出来的数据全是0 内存分配没问题 好像问题是在ReadDisk上 系统正常跑。
如果
SD_ReadDisk(buf,8192,1);
SD_ReadDisk返回错误2 
然后SDIO_TASK这个任务不执行延时,UCOS也不任务调度。就死在了这个任务上。我现在都该不懂这是情况了

一周热门 更多>