SD卡擦除起始地址和结束地址指令有误

发布于 2019-11-22 18:04:11
    本帖最后由 TDDM_8986 于 2019-11-22 18:07 编辑


根据SD标准,擦除起始地址和结束地址指令分别为 CMD32 和 CMD33,但是代码中定义如下
#define ERASE_GROUP_START 35 /* ac [31:0] data addr R1 */
#define ERASE_GROUP_END 36 /* ac [31:0] data addr R1 */


查看更多

关注者
0
被浏览
534
6 个回答
TDDM_8986
TDDM_8986 2019-11-22
没人遇到这个问题吗?@aozima @bernard
TDDM_8986
TDDM_8986 2019-11-25
顶贴让更多人看到
aozima
aozima 2019-11-25
拒绝白嫖,拒绝键盘侠!
好像平时很少用到,可以列下这2个命令在SD白皮书哪一页吗? 能否贴一下?
TDDM_8986
TDDM_8986 2019-11-25
aozima 发表于 2019-11-25 11:06
好像平时很少用到,可以列下这2个命令在SD白皮书哪一页吗? 能否贴一下?


PartE1_SDIO_Simplified_Specification_Ver3.00 p87

cmd list.png


TDDM_8986
TDDM_8986 2019-11-26
aozima 发表于 2019-11-25 11:06
好像平时很少用到,可以列下这2个命令在SD白皮书哪一页吗? 能否贴一下?


麻烦看到如果是正确的回复下哈,感谢您的宝贵时间
aozima
aozima 2019-11-27
拒绝白嫖,拒绝键盘侠!
    本帖最后由 aozima 于 2019-11-27 19:54 编辑


看了下资料,这里定义的是MMC卡的命令号,且代码中没有用到。
你列的是SD卡的命令号。

看了一下linux的代码是这样写的


//linux-4.9\include\linux\mmc\sd.h
/* class 5 */
#define SD_ERASE_WR_BLK_START 32 /* ac [31:0] data addr R1 */
#define SD_ERASE_WR_BLK_END 33 /* ac [31:0] data addr R1 */

// linux-4.9\include\linux\mmc\mmc.h
/* class 5 */
#define MMC_ERASE_GROUP_START 35 /* ac [31:0] data addr R1 */
#define MMC_ERASE_GROUP_END 36 /* ac [31:0] data addr R1 */
#define MMC_ERASE 38 /* ac R1b */


if (mmc_card_sd(card))
cmd.opcode = SD_ERASE_WR_BLK_START;
else
cmd.opcode = MMC_ERASE_GROUP_START;


感觉可以补齐一下这块的代码。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览