Nor Flash的XIP——execute in place
XIP是就地执行的意思,那是不是就像RAM那样可以随机存储呢?根据网上搜到的意思,它的就地执行,其实只是说它的接口是SRAM通信接口,可以经过CPU总线直接和CPU通讯,不需要额外的驱动或者命令。而且,XIP只能提供RO(只读)数据,如果是BSS/和RW(可写,可变数据),还是得把这些数据从Flash中copy到RAM去运行。 所以就地执行的本意,应该是直接在Soc集成芯片内部读取数据,有些人翻译为芯片内运行,我觉得不对。执行的意思不是在Flash内运行,Nor Flash的写操作是ms级别的,太慢了,不适合运行程序。所谓的执行,只是读取RO数据,并把RW和BSS数据copy到RAM,然后在RAM中运行而已。 总结下,所谓的执行就是:读取RO数据+copy RW和BSS数据到RAM,并把PC指针指向RAM的代码,开始执行。整个过程,都不在FLASH中运行。 参考:http://www.crifan.com/nor_flash_and_nand_flash_on_the_xip/ 关于Nand Flash和Nor Flash的XIPXIP – eXecute In Place,中文常译为,就地执行。指代码可以在当前(存储器中)执行 关于Nor Flash的XIP : NAND and NOR and XIP "NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 关于Nand Flash的XIP: NAND FLASH 是不是无法做XIP? 问:NAND FLASH 是不是无法做XIP,只有 NOR FLASH才能? 答:所谓XIP,就是CODE是在FLASH上直接运行. NANDFLASH只是不适合做XIP,但并不是不能做XIP。 要一段CODE能够正确的运行,要保证它的CODE是连续的,正确的. 由于一些电气特性的原因,NOR FLASH能够做到这一点,不存在坏道或坏块,所以能够做XIP。 而对于NAND FLASH,它只保证它的BLOCK 0是好的,其他的块并不保证,虽然出错的几率比较低,但还是有出错的可能,所以CODE可能无法连续正确地执行。 但只要你有额外的保障措施,比如说在执行CODE之前去做一次ECC校验,来确保CODE是连续正确的.那你也可以做XIP.事实上我就正在这么做,而且也证明是成功的 XiP定义(eXecute In Place)立即执行 XIP定义: XIP是一种能够直接在闪速存储器中执行代码而无须装载到RAM中执行的机制。这样减少了内核从闪速存储器拷贝到RAM的时间,并采用非压缩映像减少了内核自解压的时间。由于闪速存储器访问速度低于RAM,采用XIP技术的同时,根据硬件环境对闪速存储器和RAM使用量进行平衡。 eXecute In Place – XIP 总结: nand由于制作工艺的原因,不能像其他一些memory一样通过数据和地址线访问,而只能通过IO顺序访问,因此访问效率较低,但是其传输速度快,所以适合做大容量存储器,而相对来说Nor Flash适合做代码存储。 而且,Nand 由于工艺原因,相对容易有坏块,而且有些是出厂就有坏块,但是只是通过其特殊标记(nand Flash中除了存放数据的page外,有个特殊的区域叫oob(512B的page的对应16byte的oob,2KB的page对应有64byte),其中某字节用来标记是否是坏块 ),所以(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |