nor flash 和nand flash
其实我也在找这个问题,后来一不小心被我找到了,顺便帮助一下楼主,其实还是挺简单的,,有看不懂的可以问我哈问: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即就地执行的意思,操作系统内核直接在flash中运行,不需要拷贝到ram。但是,flash的存储器访问周期要比ram大得多,在使用xip技术后可能会降低程序的运行速度,不过由于cpu的指令预取机制以及cache机制,实际使用起来并不会明显降低应用程序的运行速度。xip的原理很简单,即指操作系统或应用程序直接从非易失性存储器中执行。就当前的技术来说,这里的非易失性存储器特指nor型flash,因为只有n0r型的flash才可 以随机存取。文献[4]中提供了一种通过增加cache使nand flash也可以进行xip的方案,但需要增加硬件电路,不是一个通用的解决方案。除了硬件提供支持以外,xip还需要软件的支持。操作系统内核和应用程序在运行时,它在内存中的映像可以分为三个部分:代码段、数据段和堆栈段。代码段对 应于执行程序中的text section,其中包括运行代码和只读数据,这个段在内存中一般被标记为只读。数据段对应于运行文件中的data section和bss section(???),其中存放的是各种数据(经过初始化的和未经初始化的)和静态变量,而堆栈段存放的则用于保存函数调用和局部变量。从以上分析可知,程序运行时在内存的映像分为两类:一类是只读的,如代码段;另一类是可写的,如数据段。而flash虽然是可写的,但并不能像写普通ram一样进行。 因此,当程序在flash中运行时,我们仍然需要把部分可写的数据段放在ram 中。xip是一种能够直接在闪速存储器中执行代码而无须装载到ram中执行的机制。这样减少了内核从闪速存储器拷贝到ram的时间,并采用非压缩映像减少了内 核自解压的时间。由于闪速存储器访问速度低于ram,采用xip技术的同时,根据硬件环境对闪速存储器和ram使用量进行平衡。execute in place - xipxip (execute in place ) ** a useful option **ailable with uclinux systems. its main value lies in providing a means of allowing several copies of a program to be running without duplicating the text segment. indeed the text segment can reside in flash memory and need not be copied to the system ram at all. th** ** useful for tasks that h**e large program bodies with many executable instances running in the system. only the stack, bss and data segments of an executable needs to be produced for each running program. the text segment can then reside in flash memory or, if execution speed ** an **sue, then copy the file system to ram first and mount it from there. if executables in the file system are compiled to support xip and also flagged in their headers as xip they will load and execute with just a single copy of the text segment. 20210311