织梦CMS - 轻松建站从此开始!

罗索

mx31ads中,NAND Boot的原理及其过程

jackyhwei 发布于 2011-09-19 19:55 点击:次 
NAND Flash不是XIP(片内运行)的,因此,不可能直接从NAND Flash中引导,必须籍自一些其它措施,即必须在NAND Flash Contoller中内嵌一块NFC RAM和一个微型的NFC bootloader,而这个NFC bootloader的任务就是在上电时,能自动地将boot code从NAND Flash中搬运到其NFC R
TAG:

NAND Flash不是XIP(片内运行)的,因此,不可能直接从NAND Flash中引导,必须籍自一些其它措施,即必须在NAND Flash Contoller中内嵌一块NFC RAM和一个微型的NFC bootloader,而这个NFC bootloader的任务就是在上电时,能自动地将boot code从NAND Flash中搬运到其NFC RAM中,然后跳到NFC RAM开始执行。

在NAND Flash中,每page大小为512 bytes或者2K bytes,而每block有32 pages。一般出厂时,只有第0 block是有完好保证的block,而其余block则无法保证,因此,所有的boot code(包括IPL和SPL)都必须只能放置在这第0 block中。所以,boot image的大小最多只能为512x32 bytes或2Kx32 bytes。

mx31ads的NAND Flash Controller中内嵌了一块大小为2K bytes的RAM,NFC bootloader在上电reset时自动地将2K bytes从NAND Flash中搬运到这2K bytes的RAM中,reset完毕后,系统会跳到NFC RAM中,因此直接从这开始执行。

NAND Flash Boot需要分为如下两部分:
1. An Intial Program Loader (IPL),这部分必须处于NAND Flash的第0 block中,履行初始化引导操作,由于大小有限(=<2K bytes),它在做完这些操作后很快加载SPL
2. An Secondary Program Loader (SPL),负责初始化系统和加载OS

IPL

在系统上电reset时,如果选择的时NAND Flash Boot模式,那么NFC bootloader自动从NAND Flash第0 block中copy 2K bytes到NFC RAM中,reset完毕后,系统跳到NFC RAM开始执行IPL。

IPL 分为IPL1和IPL2两部分,IPL1在CPU reset时执行,它初始化NFC和SDRAM,然后从NFC RAM中copyIPL2到SDRAM,将控制权交给IPL2开始从SDRAM执行。当程序在NFC RAM中执行时,是不能访问NAND Flash的,因此,IPL2必须在SDRAM中执行,最后从NAND Flash中加载SPL到SDRAM中。

SPL

IPL 的大小不能超过2K bytes,因此不能期望它既能提供boot options同时又能处理NAND Flash中的坏块问题,因此IPL需要很快加载SPL到系统SDRAM中,并开始从SDRAM运行。SPL检测处理坏块,并从NAND Flash中加载kernel image,它首先读取kernel image头8 bytes,这里包含kernel image大小及其CRC信息,如果正确,继续读取kernel image将其加载到SDRAM中。

通过读取一个block头两 pages的spare area,SPL可以知道这个block是否是一个坏块:如果在任意一page中的spare area有坏块标志BI(Bad block Information不等于0xFF),那么它就是一坏块。SPL不会加载坏块内容,只会按序copy好的block中的内容到SDRAM中,一直 copy到上面得知的kernel image大小。

NAND Flash中系统的layout

                    --------------------------
                   |     IPL (IPL1, IPL2)     |
                   |--------------------------|
                   |                          |
                   |           SPL            |
                   |--------------------------|
                   |                          |
                   |                          |
                   |       Kernel Image       |
                   |                          |
                   |                          |
                   |--------------------------|
                   |                          |
                   |                          |
                   |      Root filesystem     |
                   |                          |
                   |                          |
                   |--------------------------|
                   |                          |
                   |                          |
                   |                          |
                   |                          |
                   |     Other partitions     |
                   |                          |
                   |                          |
                   |                          |
                    --------------------------

你可以通过这个链接引用该篇文章:http://startsailing.bokee.com/viewdiary.12141930.html

(startsailing)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201109/15020.html]
本文出处:startsailing.bokee.com 作者:startsailing
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容