SD卡
内存(RAM)与外存(ROM)的区别:
RAM:random access memory.随机访问存储器.特点是任意字节读写(随机访问),掉电丢失.
ROM:read only memory.只读存储器.用于存储东西. 用来存储东西,掉电不丢失,不能随机地址访问,只能以块为单位来访问)叫外存.
5类外存:
原理工作方式 典型应用 速度 可靠性 价格 应用方面
电磁 磁存储.物理运动,摩擦,有损耗 磁带,软盘,CD,光盘,机械硬盘 慢 差 便宜 PC机
flash 闪存设备:利用电学原理来存储,无损耗 nandflash,norflash
SD卡,MMC卡,MicroSD卡,TF卡
inand,movinand,TF卡,ESSD
SSD
SD卡相关分区内容设置
注:
1个block为512个byte.
2048block 为 1M
SD卡存储规则
第一个block(block0) 不能使用.
BL1必须从block1开始写起.长度为16kb(32个block)
BL2,KERNEL长度自己定.
BL1与BL2,BL2与kernel之间最好留有一定的空白区域(隔离安全带).
SD卡相关功能代码
Device Copy Function
iROM中事先内置了一些代码去初始化外部SD卡/NandFlash,并且内置了读取各种SD卡/NandFlash的代码在iROM中。BL0执行时就是通过调用这些device copy function来读取外部SD卡/NandFlash中的BL1的。这些函数代码我们是不知道具体的源码,只知道这些函数的首地址存储在IROM中的特定位置:
IROM里面有一些连续区域,存放着相关Device Copy Function相关类型启动介质函数的首地址.
Device Copy Function使用方法:
由于每种启动介质的函数类型不同,故在使用时候要注意:
1.定义的函数指针类型(输入参数类型及个数,返回值类型)不同.
2.以上图里面存放的仅仅是函数的首地址,类型为uint型,正确的使用方法是先定义一个正确的符合要求的函数指针变量p,
如:
1.*(uint *)0xd0037f98 //按照uint类型读取读取内存地址为0xd0037f98里面的值,.这个值是CopySDMMCtoMem函数代码地址的首地址
2.定义一个函数指针类型pF,其类型是CopySDMMCtoMem函数类型.用以指向CopySDMMCtoMem函数.
3.定义一个函数指针变量p1,并指向CopySDMMCtoMem函数
pF p1=(pF)( (uint)0xd0037f98) 将内存里面的值强