关于s3c2440的nand flash 启动问题:
1s3c2440复位后把nandflash的前4k代码读到内部sram中,如果nandflash中启动代码大于4k,该怎么办?2s3c2440从nandflash中读取的...
1 s3c2440复位后把nand flash的前4k代码读到内部sram中,如果nand flash中启动代码大于4k,该怎么办?
2 s3c2440从nand flash中读取的4k‘代码是不是我们通常所说的u-boot代码?
3 linux的内核及文件系统存储是不是要避开nand flash的前4k空间?
4 s3c2440 裸跑(没有OS)的话,是不是总的代码不能大于4k,而且还要在代码中实现nand flash的驱动?还要自己编写启动代码,类似2440init.s 这样的汇编代码?
谢谢高手解决。 展开
2 s3c2440从nand flash中读取的4k‘代码是不是我们通常所说的u-boot代码?
3 linux的内核及文件系统存储是不是要避开nand flash的前4k空间?
4 s3c2440 裸跑(没有OS)的话,是不是总的代码不能大于4k,而且还要在代码中实现nand flash的驱动?还要自己编写启动代码,类似2440init.s 这样的汇编代码?
谢谢高手解决。 展开
1个回答
展开全部
1、S3C2440复位后 NANDFLASH 前4K存储空间与内存地址前4K(从0X00000000开始)重叠(具体原理看2440SHEET)如果BOOTLOADER代码小于4K,就可以直接运行,无需加载到内存;如果启动代码大于4K,BOOTLOADER 在NANDFLASH前4K代码(地址与内存前4K重叠)中将NANDFLASH 内的BOOTLOADER代码加载到内存中,然后再从内存中执行。
2、BOOTLOADER 有很多种,很多都是小于4K,U-BOOT是其中一种较大的,前4K是U-BOOT的一部分。
3、是的,因为 如果是从NANDFLASH启动的话,前4K是BOOTLOADER占据的空间。需要从这里开始运行并引导内核。
4、不是,只要你在代码中加入读取NANDFLASH存储器驱动(需要自己在代码中加入,并且在编译链接时一定要将对NAND读写的代码靠前放,不然会无法加载),就可以像U-BOOT一样,在前4K代码中先将自身搬移到内存中,然后从内存中运行,这样就解除了4K代码的限制。
2、BOOTLOADER 有很多种,很多都是小于4K,U-BOOT是其中一种较大的,前4K是U-BOOT的一部分。
3、是的,因为 如果是从NANDFLASH启动的话,前4K是BOOTLOADER占据的空间。需要从这里开始运行并引导内核。
4、不是,只要你在代码中加入读取NANDFLASH存储器驱动(需要自己在代码中加入,并且在编译链接时一定要将对NAND读写的代码靠前放,不然会无法加载),就可以像U-BOOT一样,在前4K代码中先将自身搬移到内存中,然后从内存中运行,这样就解除了4K代码的限制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询