bootloader对nandflash添加了驱动,为什么内核还要对其添加驱动

2025-03-12 00:44:12
推荐回答(3个)
回答1:

BOOTLOADER 对NANDFLASH的操作是为读取(装载)存储在NAND上的内核,当内核已由BOOTLOADER 读取到内存中去后,系统控制权交有内核控制,此时,一般是BOOTLOADER中的一些参数内核需要用到,其它基本上没有用了,原来用于存放BOOTLOADER的内存(有的开发板NANDFLASH中有前面的4K存储空间与内存地址重叠,小点的BOOTLOADER可一直接在这4K 的空间中执行)基本上可以由内核回收利用,所以内核不会用到BOOTLOADER上的NAND的驱动,也就就是内核需要自己的NANDFLASH驱动,不然文件系统无法加载。

回答2:

问题一、一般OS的内核经过编译后通过BOOTLOADER应全部拷贝到内存中(LINUX内核是这样的),比如说LINUX内核(运行于ARM板子上)编译后zImage大概2M这样这个是要全部拷贝到内存中的,用户层应用程序可以向楼主所说的运行到需要的时候但内存内又没有就加载(运行时加载)这个由OS内核控制。如果SDRAM过小,基本上是不能运行OS

问题二、S3C2440有Steppingstone内部SDRAM缓冲器,它支持启动时自动拷贝NANDFLASH前4KB代码,这4KB会被映射到存储空间的前4K中去,不需要用户(驱动开发人员)编写任何驱动,具体原理可以参考S3C2440 datasheet.
顺便提一下,只有S3C2440的NANDFLASH控制器支持上述功能

回答3:

BOOTLOADER 对NANDFLASH的操作是为读取(装载)存储在NAND上的内核,当内核已由BOOTLOADER 读取到内存中去后,系统控制权交有内核控制,所以内核不会用到BOOTLOADER上的NAND的驱动,也就就是内核需要自己的NANDFLASH驱动,不然文件系统无法加载。(大概如此)