自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 【平台开发】MTK6833——cache操作记录

2)写数据至mem中或者从存储中读数据时,需要采用clean and invalidate操作,从mem中重新加载数据至cache中。CPU 并不会直接和每一种存储器设备直接打交道,而是每一种存储器设备只和它相邻的存储器设备打交道。1)写数据至存储中或者从mem中读数据时,需要采用sync操作,同步cache中的数据;上图中clean和invalidate对应了4.中的操作1)和2)。sync操作是,使得cache中数据同步至mem中。ate操作,从mem中重新加载数据至cache中。

2024-05-08 18:15:03 181

原创 【平台开发】MTK6833 实现lk下CQE接口移植 - cmdq irq

寄存器CQIS,CQDQS等均为0,CQTCN为任务完成寄存器看到置1,CQTERRI检测到8000错误。任务执行后,没有触发对应中断,伴有错误发生,但任务完成标志位能检测到。

2024-04-28 17:33:31 204

原创 【平台开发】MTK6833 实现lk下CQE接口移植 - cmdq request

cmdq_prep_task_desc: 设置task_desc参数。cmdq_set_tran_desc: 设置tran_desc参数。1)配置task_desc和tran_desc参数。

2024-04-28 17:31:00 214

原创 【平台开发】MTK 6833 实现lk下CQE接口移植 - cmdq init & cmdq enable

对应的硬件接口名称为CQ HCI,Command Queuing Host Controller Interface。2.主要函数部分梳理:(因LK中CMDQ代码缺失且为软件CMDQ,因此决定从kernel中移植硬件CMDQ代码,在LK中实现相应功能)b)设置CQCFG Task Descriptor size,任务描述符大小,用于保存任务参数。其中desc_size为task,data_size为transfer。主要为申请初始内存,设置cq_host结构体以及mmc_slot槽位。

2024-04-25 15:30:03 176

原创 【平台开发】uboot镜像过大问题

因为,测试SD卡需要将uboot放置在eMMC中,而eMMC boot区域为4M,因此uboot最大只能为4M。在BL2中对uboot.bin的大小限制如果是1MB, 那么假如UBOOT.bin大小超过1MB, 就会出现boot失败的情况。XU4的uboot大小目前被限制在1MB,限制的原因主要是在bl2.bin.harkernel.1mb_uboot.uboot 启动顺序:BL1.bin->BL2.bin->UBOOT.bin->tzsw.bin。(2)裁剪uboot, 将一些不需要的配置去掉。

2024-04-25 15:20:04 322

原创 【平台开发】MTK6833——eMMC powercycle接口调试

由上可知,eMMC VCC由VEMC_PMU直接控制,VCCQ由两路可选择电压控制。但是VIO18控制IO口,涉及众多IO电压,因此不能使用VIO18控制eMMC VCCQ电压。**不足之处是:**若有case涉及拉低vccq电压至0V,恢复电压后,需要重新设置相关寄存器,因为这相当于做了一次HW RST操作。笔者的板子结构如下,需要在板子上将以下电阻进行修改,红色区域为需要去掉的电阻,绿色区域为需要焊接上的0R电阻。VCCQ控制:电压配置:1.3V-2.0V ,步进50mV。

2024-04-09 16:56:19 314

原创 【平台开发】MTK6833——eMMC boot operation with ack接口调试

上图可以看到,正确地设置了频率,ddr模式等,并接收到boot ack和boot data。同时,传输数据时,DMA能成功接收到事件中断。boot operation成功。设置完host,对于card也需要设置一致的值,利用switch命令设置传输buswidth和ddr模式。接收参数为是否开启DDR模式,主机传输模式或者开启DMA模式,以及传输的频率。初始化过程,包括获取host和card,以及host init过程。

2024-04-01 13:58:26 283

原创 【汇编语言第四版】(王爽)3-5_笔记

6.[bx]即将bx寄存器中的值作为偏移地址;()为寄存器中的内容,例如(ax)为ax寄存器中的内容;3.ax,bx,cx,dx均为16bit,是一个字的长度(2Byte)8.sub ax, ax为两个机器码,mov ax, 0为三个机器码。9.debug的T命令在执行修改SS的指令时,下一条指令也会被执行。5.DS寄存器只能用mov操作(add,sub均不行)4.H为十六进制,B为二进制,D为十进制(一般省略)4.输出文件:目标文件,列表文件,交叉引用文件。6.堆栈顶段寄存器SS,SP为栈帧指针。

2024-04-01 09:49:38 296

原创 【平台开发】SD速度切换调研

(9) 如果 1.8V 切换成功,则卡驱动 DAT[3:0]到 1.8V 高电平并维持至少一个时钟周期,然后停止驱动(三态)。DAT[3:0]应该在 SDCLK 产生后1ms 内变为高电平,而主机在 SDCLK 开始后 1ms 检查DAT[3:0]是否变为高电平,也就是说 1ms对卡是最大时间而对主机是最小时间。(4) 主机停止 SDCLK,卡应在主机停止 SDCLK 后开始切换电压。(7) 卡在检测到 SDCLK 后,则驱动 CMD 信号为 1.8V 高电平并维持至少一个时钟周期,然后停止驱动(三态)。

2024-03-29 10:36:07 924

原创 SSD 9.7

LDPC,Low Density Parity-Check Code,低密度奇偶检验码。需要明确的前提:nand会出错 - -》 需要纠错。

2024-03-29 09:55:57 216

原创 【平台开发】MTK6833——add harware command queue function in lk

CQE实现主要步骤(参考协议)Host system结构command queue任务结构:2.Theory of Operation(操作理论)init(初始化)初始化,enable CQ配置CQCFG Task Descriptor size配置CQTDLBA(Command Queuing Task Descriptor List Base Address )和CQTDLBAU(Command Queuing Task Descriptor List Base Address

2024-03-28 11:57:51 492

原创 【深入浅出SSD】SSD 7.7-7.10

1)Purge:擦除操作,每次性能测试前均进行擦除操作,消除前一次的操作的影响,比如进行随机读写后再进行顺序读写,性能表现将受到影响。2)Precondition:通过对盘进行IO,使其逐渐进如Steady State的过程。Steay State:稳定状态,平时使用的一个状态,此时便可以测试吞吐量,IOPS,延迟。Spilt Flow approach:一半数量的SSD进行低温测试,另一半进行高温测试。3)Active Range:测试过程中盘上LBA发送IO命令的范围。Plugfest:开发阶段产品。

2024-03-28 11:41:21 466

原创 【eMMC协议】6.6.30 - 6.6.39

然而,可以接受的是,在接收高优先级任务请求时,设备可能已经开始准备执行的简单任务,但没有在QSR中将它们标记为“准备执行”。参数是:块计数,任务ID,优先级,数据方向和其他参数(即,标签请求,上下文ID,可靠写入,强制编程)刷新操作是指从主机到设备将缓存的数据写入非易失性内存的需求。在进行刷新之前,设备可以自主地将数据写入非易失性内存,但是在进行刷新操作之后,易失性区域中的所有数据必须写入非易失性内存。当缓存打开时,它应用于整个eMMC设备(当刷新缓存时,所有分区的数据都将被刷新,此操作与活动分区无关)。

2024-03-28 11:38:06 864

原创 【汇编语言第四版】(王爽)1,2_笔记

9.CS x 16 + IP = 执行指令位置,8086启动后CS和IP初始值为,CS = FFFFH, IP = 0000H。​ 1)8位运算和16位运算会不一样,低位寄存器相加溢出不会加到高位寄存器中,两个寄存器是独立的。2.字节,byte;字,word,由两个字节组成,分别为高位字节和低位字节,7.可以根据需要,将一组连续的,起始地址为16倍数的内存单元定义为一个段。例如:jmp 2edf:3,即为CS = 2edf,IP = 3。8.段寄存器CS,DS,SS,ES,提供内存单元的段地址。

2024-03-27 14:29:58 326

原创 【eMMC协议】6.6.23 - 6.6.26

在host 下发CMD25( WRITE_MULTIPLE_BLOCK)命令后,EMMC会更新CORRECTLY_PRG_SECTORS_NUM字段(ext_csd寄存器的[245:242]字节),该字段记录成功写入EMMC的512Byte扇区的数量。在上电、硬件复位或软件复位后,EMMC的操作模式为SDR,除非EMMC通过执行引导操作开始,在这种情况下,SDR或DDR模式的选择由ext_csd寄存器第177字节BOOT_BUS_CONDITIONS中进行设置。然而,只有一些命令可以被HPI中断。

2024-03-27 11:26:00 1071

原创 【eMMC协议】6.6.22

如果与访问相关的故障不止一个,则应在结果寄存器中显示第一种类型的错误。错误检查的顺序在下面的每个访问下定义。用于MAC计算的密钥一直保存在MMC的256位认证密钥中,用作MAC计算输入的消息是数据帧中字段的串联形式,但不包括填充字节、MAC本身、起始位、CRC16和结束标志位。得到的MAC结果是256位(32个字节),同时嵌入请求或响应的数据帧中作为其中的一部分。如果几个数据帧作为一个请求或响应的一部分被发送,则到MAC的输入消息是按照发送数据帧的顺序的每个数据帧的字节[283:0]的级联。

2024-03-27 10:57:02 328

原创 【eMMC协议】6.6.15 - 6.6.22

写保护命令中的地址字段是以字节为单位的group address,容量最高可达2GB,容量大于2GB时为扇区单位。如果主机提供超出范围的地址作为CMD28、CMD29或CMD30的自变量,则设备将拒绝该命令,用address_out_of_range位集进行响应,并保持Tran状态。通过设置EXT_CSD USER_WP字节中的CD_PERM_WP_DIS、US_PERM_WP_DIS和US_PWR_WP_DIS位,可以禁用主机为整个设备设置永久保护以及为特定段设置永久和上电写保护的能力。

2024-03-26 14:13:01 711

原创 【eMMC协议】6.6.11 - 6.6.14

Sanitize操作的使用要求设备从未映射的用户地址空间中物理删除数据。通过向ECSD[165]Sanitize_START写入值来启动Sanitize操作。当设备正在执行Sanitize操作时,busy bit置位。除TRIM和Erase之外,Sanitize操作是用于根据安全删除类型从设备中删除数据的功能。

2024-03-26 12:19:34 837

原创 I2C控制PMIC RT8092

首先,SCL高电平期间,SDA进行一个拉低的信号,发出开始信号。接着发送slave address,加一个bit 0,表示写操作,接着收到ACK应答后,发送需要读的寄存器的地址,等待收到ACK应答后,重新发送一个开始信号,然后加上slave address,但是这次加上的是一个bit 1,表示读操作,当再次收到ACK应答后,host就可以接收读到的数据。------------ 以上为一个寄存器的写入完成,即电压范围寄存器, 以下为另一个寄存器 -----------

2023-07-21 21:03:29 420

原创 Exynos5422 I2C总线介绍及配置过程

GPIO口注意的是,以上为两种I2C口,上下分别为I2C和High Speed I2C。XU4上的I2C bus,bus0-3为I2C bus,4-10为High-Speed I2C bus。以下为两种I2C的函数实现部分可以看出其中接口函数的差异。

2023-07-18 16:21:32 154

原创 【eMMC协议】6.6.8.1 - 6.6.10

接收到擦除命令(CMD35、CMD36或CMD38),设备应设置状态寄存器中的erase_SEQ_ERROR位,并重置整个序列。如果主机提供。

2023-07-15 12:30:00 160

原创 【eMMC协议】6.6.6 - 6.6.8.1

6. 如果host 在固定数据块读取最后一个块后下发了停止数据传输的命令,则该命令被视为是非法命令,因为此时的EMMC 没有在数据传输状态中。如果设置了READ_BL_PARTIAL,则也可以发送起始地址和结束地址完全包含在一个物理块(如READ_BL_LEN所定义的)内的较小块。在DDR模式下,读取的块数据大小始终为512字节,不支持读取部分块数据,并且在每个块的末尾附加两个CRC,一个为偶数字节,一个为奇数字节。传输的数据块包含了,其实的low bit和后面的数据流。,还包含错误校正bits。

2023-07-15 11:30:00 125

原创 【eMMC协议】6.6.1 - 6.6.2

HS400工作在VCCQ为1.8V或者1.2V的IO电压下,HS400 模式下,总线宽度设置为8线双倍速率模式,HS400 支持与DDR52 相同的命令。host 完成对eMMC的初始化之后,再读取ext_csd 寄存器的DEVICE_TYPE 字段来查看eMMC 是否支持HS400 模式, 然后在设备中启用HS400模式,将时钟频率更改为高于52 MHz的频率。host在验证eMMC符合4.0或更高版本的标准后,必须在设备中先启用高速模式定时,然后将时钟频率更改为26MHz到52MHz之间的频率。

2023-07-15 11:00:00 391

原创 【eMMC协议】6.4.3 - 6.6

当参数为预留相对设备地址“0x0000”的CMD7 命令发送后,eMMC将会回到stand-by 模式,当eMMC处于传输状态时,接收到带有EMMC自身相对地址的CMD7命令会被忽略,且有可能被视为是非法命令。host 下发CMD12命令后,所有的读数据命令都被禁止,数据传输终止,且eMMC切换到stand-by 状态,读命令比如:CMD17(读block),CMD18(读取多个block),CMD21(发送tunning block),CMD30 (发送写保护命令)

2023-07-15 10:30:00 209

原创 【eMMC协议】6.3.5 - 6.4.2

​ 在该模式下,host可以对EMMC 进行reset,验证操作电压范围和设置访问模式,识别EMMC并在总线上为EMMC分配相对设备地址(RCA)。所有操作都通过CMD命令进行交互。设置ext_csd register byte [179] 为0x111b配置 BOOT_PARTITION_ENABLE bit,来让设备从用户分区启动。4. 如果boot操作不成功,则恢复默认模式,寄存器设置将无效。CMD1的电压范围是无效的。

2023-07-14 17:22:48 253

原创 【eMMC协议】6.2.4 - 6.3.4

当ext_cd寄存器第177字段中的[4:3]被设置成’10’时,host 就可以选择双倍速率模式传输速率,同时ext_csd寄存器的第228字段的bit 1会通知host, 对应的EMMC 是否在boot 模式支持双倍传输速率。在boot 操作启动执行期间,EMMC(slave)会准备好用于CMD1操作的数据,同时host 需要发送CMD1,进而启动正常的MMC初始化序列,当所有用于boot 启动的数据全部发送至host后,boot 操作就会停下来。增强分区的起始地址,需要与写保护组对齐。

2023-07-14 17:18:02 315

原创 【eMMC协议】5.3.2 - 6.2.4

general purpose partions 通用分区:允许使用class 0,2,4,5,6这五类命令。每一个分区对应的写保护可以单独设置,因此呢,host 可以在每个写保护组中分别设置不同的写入保护类型。user data area 命令 --》增强用户数据区域5.扩展分区属性每个general purpose partition 都拥有一个扩展分区属性:Default 默认属性: 未进行扩展的System code 系统编码:很少更新改动且包含重要系统文件的分区。

2023-07-14 16:48:25 2054

原创 【eMMC协议】4 - 5.3.1

在对block写操作期间,引入了一种busy状态,一般当EMMC处理程序时候,会使data0加上busy状态。data是分为4根线传输的,但是CRC是每根线都有自己的CRC,并不是分为4根线传输。OCR:操作条件寄存器,用于特殊的广播命令,识别设备的电压类型。Ext_CSD:拓展设备特殊数据,设备的功能和所选模式的信息。DDR—上升沿和下降沿,上升为odd,下降为even。DSR:驱动阶段寄存器,用于配置设备的输出驱动。CSD:设备特殊数据,设备运行条件的相关信息。RCA:相对设备地址,设备的系统地址。

2023-07-14 11:50:57 672 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除