怎么在C6748开发板上实现USB读卡器功能? - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12116|回复: 16
打印 上一主题 下一主题

怎么在C6748开发板上实现USB读卡器功能?

[复制链接]

24

主题

125

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
跳转到指定楼层
楼主
发表于 2015-6-1 11:20:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
目标:将C6748开发板枚举成MSC设备,电脑通过USB读取开发板上的SD卡。
实现的基本思路:
1.在USB_DEV_MSC例程基础上修改,将其中的disk_read(),disk_write(),disk_initialize(),disk_ioctl()这几个函数映射到SD卡操作上。
2.上述4个函数的功能实现,参考不带BIOS的MMCSD例程。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

2

主题

8

帖子

1122

积分

金牌会员

Rank: 6Rank: 6

积分
1122
17#
发表于 2017-6-8 15:05:35 | 只看该作者
高手.技术贴
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
16#
 楼主| 发表于 2016-3-9 18:16:14 | 只看该作者
DSP_推粪球 发表于 2016-3-9 15:23
狂顶啊, 楼主是不是只要 修改Uint32 MMCSD_disk_write和 Uint32 MMCSD_disk_read就可以实现 USB和PC的通信 ...

该帖基本沉底了。
创龙工程师说,在DSP端实现读卡器功能意义不大,因此也没有出后续的支持例程。

1楼已经说明,目标是:将C6748开发板枚举成MSC设备,电脑通过USB读取开发板上的SD卡。

回复 支持 反对

使用道具 举报

1

主题

3

帖子

22

积分

新手上路

Rank: 1

积分
22
15#
发表于 2016-3-9 15:23:27 | 只看该作者
狂顶啊, 楼主是不是只要 修改Uint32 MMCSD_disk_write和 Uint32 MMCSD_disk_read就可以实现 USB和PC的通信呢??  USB小白问题让您见笑了。
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
14#
发表于 2015-6-2 15:32:54 | 只看该作者
lushidegreen 发表于 2015-6-2 15:02
我用上面if (E_PASS == res ) i++;的方式,好像所有的卡都不行。
用前面说的,3个UTIL_waitLoop(100000) ...

对了你有没有试过用 SYS/BIOS 基于 RAW 模式读写 SD 卡的代码呢?
从理论上讲应该不会有什么问题的
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
13#
 楼主| 发表于 2015-6-2 15:02:13 | 只看该作者
希望缄默 发表于 2015-6-2 10:27
之前不是说用创龙提供的 SD 卡是正常的么?

我用上面if (E_PASS == res ) i++;的方式,好像所有的卡都不行。
用前面说的,3个UTIL_waitLoop(100000);,创龙的8G卡是可以的。

点评

对了你有没有试过用 SYS/BIOS 基于 RAW 模式读写 SD 卡的代码呢? 从理论上讲应该不会有什么问题的  详情 回复 发表于 2015-6-2 15:32
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
12#
发表于 2015-6-2 10:27:59 | 只看该作者
lushidegreen 发表于 2015-6-2 09:53
事实上我查过SDMMC_MEM_writeBytes()函数的底层代码,是有等待操作完成的。
该函数有返回值,我尝试过类 ...

之前不是说用创龙提供的 SD 卡是正常的么?
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
11#
 楼主| 发表于 2015-6-2 09:53:03 | 只看该作者
希望缄默 发表于 2015-6-1 19:15
第一个问题可能是 SD 操作没有使用中断方式 必须等待写操作完成

事实上我查过SDMMC_MEM_writeBytes()函数的底层代码,是有等待操作完成的。
该函数有返回值,我尝试过类似下面的代码:
       for (i = 0; i < ulNumBlocks; ) {
                res = SDMMC_MEM_writeBytes ( hSDMMCMemInfo, (ulSector + i) * 512, 512, &pucData[i * 512]);
                UTIL_waitLoop(100000);
                if (E_PASS == res ) i++;
        }
这样会检测每个扇区是否写入成功,直到成功才写下一个扇区。
但结果还是会造成SD卡文件系统崩溃。

点评

之前不是说用创龙提供的 SD 卡是正常的么?  详情 回复 发表于 2015-6-2 10:27
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
10#
 楼主| 发表于 2015-6-2 09:43:29 | 只看该作者
希望缄默 发表于 2015-6-1 19:13
可能是容量问题
要不你顺带在论坛分享下你 USB 库的移植经验 貌似不少工程师遇到同样的问题 ...

有空我整理一下,另起一帖"USB_DEV_MSC移植到BIOS"。
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
9#
发表于 2015-6-1 19:15:49 | 只看该作者
lushidegreen 发表于 2015-6-1 14:01
我把USB_DEV_MSC例程中的disk_read()和disk_write()函数改成了如下内容:
Uint32 MMCSD_disk_read(void * p ...

第一个问题可能是 SD 操作没有使用中断方式 必须等待写操作完成
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-20 00:44 , Processed in 0.048812 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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