2025年uchar seg(uchar seg_dig = 0;是什么意思)

uchar seg(uchar seg_dig = 0;是什么意思)在 函数中调用 0 初始化 mmc 最终调用到 int unsigned int dev num 函数 内容如下 重要的两个结构体 struct 和 struct mmc 结构体其中几个变量对应下面的寄存器 其中 0 23 为电压范围 卡容量状态位 当卡为大容量内存卡时 该位为 1 当卡为标准内存卡时 该位为 0 卡上电状态位 若上电状态完成 设置为 1 CID 寄存器 卡标识寄存器 128bit 包含了卡标识信息在卡识别阶段使用 每个读写卡应该具有唯一的识别号



在()函数中调用(0)初始化mmc;最终调用到int (unsigned int dev_num)函数;内容如下:

重要的两个结构体struct 和struct ;

mmc结构体其中几个变量对应下面的寄存器;

:

其中0~23为电压范围;

:卡容量状态位,当卡为大容量内存卡时,该位为1; 当卡为标准内存卡时,该位为0;;

:卡上电状态位,若上电状态完成,设置为1;

CID寄存器

卡标识寄存器,128bit; 包含了卡标识信息在卡识别阶段使用; 每个读写卡应该具有唯一的识别号;

对应结构体为;

CSD寄存器

卡特定数据寄存器提供有关访问卡内容的信息;定义了数据格式,纠错类型,最大数据访问时间,DSR寄存器寄存器的寄存器可编程部分可由CMD27更改;

TAAC

定义数据访问时间的异步部分;

NSAC

定义数据访问时间的时钟相关因素的最坏情况。NSAC的单位是100时钟周期。因此,数据访问时间的时钟相关部分的最大值是25.5k个时钟周期。

总访问时间NAC是TAAC和NSAC的总和。它应由主机根据实际时钟速率进行计算。读取访问时间应被解释为数据块或流的第一数据位的典型延迟。

TRAN_SPPED

定义了每一个数据行的最大传输速率;

CCC

SD存储卡命令集分为多个子集(命令类); CCC中的值为1bit表示支持相应的命令类;

READ_BL_LEN

最大读取数据长度计算为2的read_bl_len次方;

READ_BL_PARTIAL

SD存储卡中始终允许部分块读取;意味着可以使用最小的块,最小块为一个字节;

WRITE_BLK_MISALIGN/READ_BLK_MISALIGN

定义由一个命令写入/读的数据块是否可以分布在多个物理块上存储设备的块;内存块的大小在WRITE_BL_LEN/READ_BL_LEN中定义; =0表示跨越物理块边界无效; =1表示允许跨越物理块边界;

DSR_IMP

定义可配置驱动程序阶段是否集成在卡上。=0表未被实施 =1表示已实施;

C_SIZE

此参数用于计算用户的数据卡容量;

VDD_R_CURR_MIN, VDD_W_CURR_MIN

最小电源VDD处的读取和写入电流的最大值编码如下;

VDD_R_CURR_MAX, VDD_W_CURR_MAX

最大电源V DD处的读和写电流的最大值编码;

C_SIZE_MULT

此参数用于编码因子MULT,以计算总设备大小;

MULT = 2的(C_SIZE_MULT+2)次方;

ERASE_BLK_EN

定义要擦除的数据的单位大小的粒度,擦除操作可以擦除512字节的一个或多个单位SECTOR_SIZE;

如果ERASE_BLK_EN=0,主机可以擦除一个或多个SECTOR_SIZE单元。擦除将开始从包含起始地址的扇区的开头到包含结束地址;

如果ERASE_BLK_EN=1,主机可以擦除一个或多个512字节的单元。包含数据的所有块从起始地址到结束地址被擦除;

SECTOR_SIZE

可擦除扇区的大小;

WP_GRP_ENABLE

值为0表示不可能进行组写保护;

R2W_FACTOR

将典型块编程时间定义为读取访问时间的倍数;

WRITE_BL_LEN

最大写入数据块长度计算为2 的write_BL_LEN次方。最大块长度可能因此在512到2048字节的范围内。始终支持512字节的写入块长度。

WRITE_BL_PARTIAL

定义块写入命令中是否可以使用部分块大小。

WRITE_BL_PARTIAL=0表示在512字节单位的分辨率可用于面向块的数据写入。

WRITE_BL_PARTIAL=1表示也可以使用更小的块。最小块大小为1字节;

FILE_FORMAT_GRP

指示选定的文件格式组;

COPY

定义内容是原始(=0)还是已复制(=1);

PERM_WRITE_PROTECT

永久保护整个卡内容不被覆盖或擦除(所有写入和擦除此卡的命令被永久禁用)。默认值为0,即不永久写入受保护的。

TMP_WRITE_PROTECT

暂时保护整个卡内容不被覆盖或擦除(所有写入和擦除此卡的命令暂时禁用)。该位可以设置和重置。默认值为0,即不写保护。

FILE_FORMAT

指示卡上的文件格式;

CRC

CRC字段携带CSD内容的校验和;

uboot中对应结构体如下:

()函数又调用了(mmc);

其中主要初始化block_dev结构体,结构体如下:

其中block_read和block_write回调函数用于块读/写;

两个回调函数都调用了mmc_send_cmd命令;

又回调了函数, 该函数在最初的函数中被赋值为

mmc_send_cmd调用示例:

其中将cmd和data结构体填充后调用(); 读buf地址被赋值到data.dest处返回;

()函数中先调用()准备数据,如将目的地址赋值给dma对应地址等;填充好dma结构体; 然后调用()开启dma; 完成数据的读/写;

在函数()中还初始化了初始化回调mmc->init = ;

然后在中调用(0); 该函数最终调用了();

()调用了();

该函数实现了 (a)复位mmc主机控制器; (b)卡复位 (c)卡掉电后上电 (d)取消卡复位 (e)设置时钟相位 (f)清空mmc主机中断寄存器 (g)设置中断掩码 (h)使能dma模式且关闭mmc主机控制器中断使能;(i)使能dma中断 (j)设置超时参数 (k)设置fifo参数;

编程小号
上一篇 2025-02-22 15:06
下一篇 2025-02-08 08:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/14466.html