:
版权声明:本文为博主原创文 章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
gcc, 64bit:
“%lld”和”%llu”是linux下gcc/g++用于long long int类型(64 bits)输入输出的格式符。
参考:
emmc的擦写次数是有限的,一般使用久了速度会变慢。
是因为emmc内部数据处理变慢了。
我们可以从寄存器中获知,状态寄存器data0一直为0,即data0一直为拉低的状态,data0一直是busy的状态,就会出现传输数据(一般是写超时)超时,这个是因为emmc老化导致内部处理的数据变慢,一直在处理数据,不让主机在往里面写。
eMMC真正的存储media还是NAND Flash, 而NAND又分为SLC、MLC和TLC。
目前市场上主流的eMMC还是以MLC的NAND为主,而TLC的eMMC也在逐漸的增加。
目前市场上的MLC,擦除次数大概在3000~5000cycle。
而SLC的擦除次数则在25000~40000cycle。
所以,SLC要比MLC效率高,更稳定。
emmc有11根通讯总线:
时钟。一个周期内,传输1bit或2bit。
单向。
主机向设备发送的信号,clock操作在推挽模式下
设备给主机的信号,数据选通操作在推挽模式。
仅仅存在于HS400 mode。2 bit传输(上升沿+下降沿)。
双向。
主机和设备驱动有开漏和推挽二种模式。
用于传输command(host->device)和response(host<-device)。
有两种mode: open-drain:initialization mode
push-pull:fastcommand transfer
双向。
主机和设备驱动都是在推挽模式下(data0默认为拉高的状态)
注意: 由于涉及到高速信号应用,layout时,CLK/CMD/DX信号,要进行长度匹配(等长),阻抗匹配(50欧姆)。




和Device有关的6个寄存器:
定义了VDD电压和访问mode。
定义了Device ID。
定义了data format,data transfer speed,Max_read/write_current@ VDDmin/VDDmax等等。
定义Device属性和可选择的mode。共有512 bytes。
低192 bytes——定义了mode,host可以通过SWITCH命令进行修改。 如,byte 179定义了可以boot的partition,byte 177定义了boot时的bus width。
RCA
eMMC、SD卡的分区:

通过Extend CSD register [179] bit[5:3] 可以选择boot的区域有:partition 1/2,user area。

细节请参考下文中“High-speed eMMC bus function”的“Bus initialization”。

参考A.6 High-speed eMMC bus function的操作步骤。 共包括3个主要步骤:
继任者: Julia, Python, R。
Which numerical computing language is best: Julia, MATLAB, Python or R?
全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?
有个国产软件号称不错,没有用过: truffer