Linux XIP(eXecute In Place)是一种允许用户直接从一个闪存设备执行应用的技术。它的主要优势之一是可以大大减少从闪存设备存储和读出数据的时间,使系统在启动时能够更快地到达给定的工作状态。
在硬件上,XIP可以通过安装一个专用闪存设备或将XIP置放到目标板上并使用对应的背板接口实现。在软件上,XIP可以通过使用特定的操作系统和开发工具链(如u-boot和linux内核)来开发和实现。
此外,XIP还支持远程启动。它能够将执行和存储(存放)引导映像组合到单个闪存设备上,并允许用户从远程处启动并使用数据和应用程序,而无需做任何特殊设置。
另外,XIP还可以提高Flash存储器的访问速度。正常情况下,读写闪存设备需要15毫秒,而使用XIP技术只需要1毫秒。这种速度差别可以节省生产成本,并能够实现更快的下载和启动速度。
简而言之,Linux XIP是一种使用闪存设备直接从外部执行应用的技术,它可以通过减少从闪存设备存取和读取数据的时间来获得更快的启动速度和更快的Flash存取速度,也可以支持远程启动应用程序。这使得XIP在闪存设备和低功耗嵌入式应用中受到越来越多的关注。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
请问nand flash和nor flash有什么不同?
一、定义上的区别
1、Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。
2、NOR Flash是一种非易失闪存技术,是Intel在1988年创建。

二、原理上的区别
1、NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。 应用NAND的困难在于flash的管理需要特殊的系统接口。
2、NOR的特点是芯片内执行,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。 NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除 速度大大影响了它的性能。
三、性能区别
1、 NAND的写入速度比NOR快很多;NAND的擦除速度远比NOR快;NAND的擦除单元更小,相应的擦除电路更加简单;NAND的实际应用方式要比NOR复杂的多。
2、NOR的读速度比NAND稍快一些;NOR可以直接使用,并在上面直接运行代码,而NAND需要I/O接口,因此使用时需要驱动。
四、接口区别
1、NAND器件使用复杂的I/O口来串行地存取数据,应用NAND的困难在于flash的管理需要特殊的系统接口。
2、NOR带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每 一个字节。
五、容量成本的区别
1、NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
2、NOR占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。
【boot】Linux Kernel 镜像的生成以及加载
Linux Kernel 镜像格式包括:vmlinux、Image、zImage、bzImage、uImage、xipImage。 vmlinux是原始可引导且未压缩的内核文件,由用户编译得到,实质是 ELF 格式。 Image是经过objcopy处理的原始二进制数据内核代码,未压缩。 zImage是经过gzip压缩的vmlinux加上解压代码,适用于NAND Flash。 bzImage是使用不同压缩算法的压缩内核映像,压缩率更高,同样适用于NAND Flash。 uImage是用于u-boot的镜像文件,比zImage多一个头部信息。 xipImage则存放在NOR Flash中,直接运行无需复制到SDRAM。 内核镜像的产生过程包括:首先生成可执行的vmlinux文件;然后通过objcopy处理成Image,变小但未压缩;接着使用gzip压缩Image生成compress/vmlinux;最后再使用objcopy处理compress/vmlinux生成zImage,压缩比约为2:1。 Linux内核镜像的加载过程包括加载文件头、内存布局、分阶段加载内核镜像、实模式和保护模式下内核加载。 实模式下加载boot/,进行硬件初始化并跳转到main()函数开始执行。 保护模式下加载boot/,解压缩并初始化页表,调用init/main.c:start_kernel()函数。 Linux内核镜像格式多样,根据硬件类型和存储设备选择合适的镜像格式进行加载。 加载过程包括硬件初始化、内存布局设定、分阶段加载内核镜像,最后实模式和保护模式下执行内核。 使用make命令如“make zImage”可以生成zImage镜像,相关代码在arch/arm/Makefile中。 内核加载流程包含加载文件头和末尾的CRC校验码,以及在实模式和保护模式下分别执行boot/和boot/。 实模式下执行进行硬件初始化,然后跳转到main()函数执行。 保护模式下加载,解压缩后初始化页表,调用start_kernel()函数启动内核。
nor flash 和nand flash 的区别
简单说明:NAND FLASH内部结构是用与非门组成存储单元的。 有非易失性,读写速度快,而且比较容易做到大容量。 目前单片NAND FLASH存储容量可以达到8Gbit(1GByte)。 NOR FLASH也有非易失性。 随机存储速度比NAND FLASH 快得多。 所以一般用NOR FLASH 用做内存片,或者叫做数据缓冲。 而NAND FLASH则一般用来做存储数据用。 比方说,U盘3等。 详细说明:FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash,下面我们从多个角度来对比介绍一下。 在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。 1、接口对比NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。 NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。 如uboot中的ro段可以直接在NorFlash上运行,只需要把rw和zi段拷贝到RAM中运行即可。 NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。 由于时序较为复杂,所以一般CPU最好集成NAND控制器。 另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2410在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中。 如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码。 2、容量和成本对比相比起NandFlash来说,NorFlash的容量要小,一般在1~16MByte左右,一些新工艺采用了芯片叠加技术可以把NorFlash的容量做得大一些。 在价格方面,NorFlash相比NandFlash来说较高,如目前市场上一片4Mbyte的AM29lv320 NorFlash零售价在20元左右,而一片128MByte的k9f1g08 NandFlash零售价在30元左右。 NandFlash生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,这样也就相应地降低了价格。 3、可靠性性对比NAND器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。 NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。 在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。 而坏块问题在NorFlash上是不存在的。 在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多。 这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法。 4、寿命对比在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。 闪存的使用寿命同时和文件系统的机制也有关,要求文件系统具有损耗平衡功能。 5、升级对比NorFlash的升级较为麻烦,因为不同容量的NorFlash的地址线需求不一样,所以在更换不同容量的NorFlash芯片时不方便。 通常我们会通过在电路板的地址线上做一些跳接电阻来解决这样的问题,针对不同容量的NorFlash。 而不同容量的NandFlash的接口是固定的,所以升级简单。 6、读写性能对比写操作:任何flash器件的写入操作都只能在空或已擦除的单元内进行。 NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。 擦除NOR器件时是以64~128KB的块进行的,执行一个擦除/写入操作的时间约为5s。 擦除NAND器件是以8~32KB的块进行的,执行一个擦除/写入操作最多只需要4ms。 读操作:NOR的读速度比NAND稍快一些。 7、文件系统比较Linux系统中采用MTD来管理不同类型的Flash芯片,包括NandFlash和NorFlash。 支持在Flash上运行的常用文件系统有cramfs、jffs、jffs2、yaffs、yaffs2等。 cramfs文件系统是只读文件系统。 如果想在Flash上实现读写操作,通常在NorFlash上我们会选取jffs及jffs2文件系统,在NandFlash上选用yaffs或yaffs2文件系统。 Yaffs2文件系统支持大页(大于512字节/页)的NandFlash存储器。
发表评论