硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4556|回复: 8
收起左侧

[有问必答] fatfs演示例程有bug吧??

[复制链接]

7

主题

9

回帖

30

积分

新手上路

积分
30
发表于 2016-3-13 00:12:11 | 显示全部楼层 |阅读模式
WritefIleTest函数改sd卡,写数据总有00 00 ,而且在每个buff的大小位置会出现:
00 00 30 30 。。。。。。出现在0位置
00 00 30 30 。。。。。。出现在4096位置
。。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-3-13 00:26:50 | 显示全部楼层
例子没有bug,你测试时候是不是有写入失败,参考我这里的说明,官方的SD驱动写不好,性能比较差
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=11880
回复

使用道具 举报

7

主题

9

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2016-3-13 12:56:41 | 显示全部楼层

回 eric2013 的帖子

eric2013:例子没有bug,你测试时候是不是有写入失败,参考我这里的说明,官方的SD驱动写不好,性能比较差
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=11880 (2016-03-13 00:26) 
没写错,每次都返回FS_OK,除了固定位置出现00 00 这个问题,其他数据都是正确写入的,还是蛮奇怪的
回复

使用道具 举报

7

主题

9

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2016-3-13 13:01:17 | 显示全部楼层

回 eric2013 的帖子

eric2013:例子没有bug,你测试时候是不是有写入失败,参考我这里的说明,官方的SD驱动写不好,性能比较差
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=11880 (2016-03-13 00:26) 
这是移植安富莱板子的例程里diskio sd驱动部分:   

DRESULT res;

    switch (pdrv)
    {
        case FS_SD :
        {
            SD_Error Status = SD_OK;

            if (count == 1)
            {
                Status = SD_WriteBlock((uint8_t *)buff, sector << 9 ,SECTOR_SIZE);

                if (Status != SD_OK)
                {
                    res = RES_ERROR;
                    break;
                }

            #ifdef SD_DMA_MODE
                /* SDIO???DMA??,??????DMA?????? */
                Status = SD_WaitReadOperation();
                if (Status != SD_OK)
                {
                    res = RES_ERROR;
                    break;
                }
                while(SD_GetStatus() != SD_TRANSFER_OK);
            #endif
                res = RES_OK;
            }
            else
            {
                /* ??????: ??????? count ,?????1?block???? */
                //Status = SD_WriteMultiBlocks((uint8_t *)buff, sector << 9 ,SECTOR_SIZE, count);
                Status = SD_WriteMultiBlocks((uint8_t *)buff, sector << 9 ,SECTOR_SIZE, count + 1);

                if (Status != SD_OK)
                {
                    res = RES_ERROR;
                    break;
                }

            #ifdef SD_DMA_MODE
                /* SDIO???DMA??,??????DMA?????? */
                Status = SD_WaitReadOperation();
                if (Status != SD_OK)
                {
                    res = RES_ERROR;
                    break;
                }
                while(SD_GetStatus() != SD_TRANSFER_OK);
            #endif
                res = RES_OK;
            }
            break;
        }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-3-13 13:30:32 | 显示全部楼层
这是什么问题,00, 00 是怎么回事,写入的跟读出的不一样么,还是怎么个情况。
我有点懵。。
回复

使用道具 举报

7

主题

9

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2016-3-13 15:32:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:
这是什么问题,00, 00 是怎么回事,写入的跟读出的不一样么,还是怎么个情况。
我有点懵。。


Speed00.rar (2 KB, 下载次数: 43)
回复

使用道具 举报

7

主题

9

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2016-3-13 15:33:35 | 显示全部楼层
在0 4096 8192....这样的位置,会有错误的00 00出来,数据没有正确写入
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-3-13 15:47:34 | 显示全部楼层

回 scat-01 的帖子

scat-01:
在0 4096 8192....这样的位置,会有错误的00 00出来,数据没有正确写入
你移植的有问题,加大栈空间看看,这里是我这里测试的,你上传的那个有问题。
1.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-3-13 15:48:18 | 显示全部楼层
scat-01:
在0 4096 8192....这样的位置,会有错误的00 00出来,数据没有正确写入
2.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 00:52 , Processed in 0.045834 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表