在mini2440中把uboot放到norflash,内核,根文件系统,应用程序放在nandflash,系统如何启动?
板子从norflash启动,uboot把自己拷到内存高地址启动内核,但此时内核还在nandflash,如何把内核拷到内存?内核拷到内存后文件系统与应用程序还在nandfl...
板子从norflash启动,uboot把自己拷到内存高地址启动内核,但此时内核还在nandflash,如何把内核拷到内存?内核拷到内存后文件系统与应用程序还在nandflsah,它们又是怎样跑到内存中去运行的?求大神
展开
3个回答
展开全部
非常简单,mini2440从Nor启动后,CPU运行在0x00000000地址,这片地址实际对应NorFlash,因为NorFlash是一个Ramlike器件,所以读取数据方法更内存一样,在Uboot的启动文件start.s中,有一个一段代码实现NorFlash复制到SRAM的功能,复制代码完成后,通过指令,使用CPU跳到内存执行。这时候,Uboot通过另外的代码,实际是Nand subsystem部分,把kernel从Nand读到内存上,再通过指令,然后CPU跳到Kernel入口地址执行。
一旦Kernel跑起来,Kernel通过Uboot传递CMDLINE就可发现到根文件系统的分区了。所以根文件再通过一些列复杂的机制,最终把文件系统挂入系统中。
要完全了解这个过程,必须要完完整整地把Uboot和Kernel移植一遍才知道。
最后补充一下,mini2440上使用Uboot、supervivi,vivi之类的Bootloader实际功能都差不多。
一旦Kernel跑起来,Kernel通过Uboot传递CMDLINE就可发现到根文件系统的分区了。所以根文件再通过一些列复杂的机制,最终把文件系统挂入系统中。
要完全了解这个过程,必须要完完整整地把Uboot和Kernel移植一遍才知道。
最后补充一下,mini2440上使用Uboot、supervivi,vivi之类的Bootloader实际功能都差不多。
展开全部
你去看下uboot的源码分析啊,如果uboot在norflash,可以直接运行的,不一定要拷贝到内存,只是运行速度没有内存快而已。具体如何拷贝内核,根文件系统你去看下源码分析吧,uboot的启动流程,拷贝内核很简单的,有个链接脚本里面指定内核拷贝地址,然后用指针一个一个复制过去就是了。。。。它们都是用拷贝的啦。。。
追问
uboot的启动流程,拷贝内核很简单的,有个链接脚本里面指定内核拷贝地址在哪里?望指点!谢谢
追答
你是想问那个链接脚本在哪里吗?格式是 .lds,应该是在 /cpu/ 下或者 /board/下吧 你找一下,具体的只能过几天我的电脑修回来了再帮你看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-20
展开全部
123123132132
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询