S3C2440:
从nandflash启动的时候,上电之后,硬件自动将nandflash里bootloader的前4K代码复制到stepping stone(0地址)中,这4K的代码除了负责一些硬件初始化,还负责将bootloader剩下的代码复制到内存0x3000 0000中,然后4K运行完之后跳转到内存中继续运行剩下的bootloader,最后引导操作系统启动。
S3C6410:
s3c6410中零地址是一个映射区域(位于0地址),6410可实现从SDRAM,IROM(包含SD卡启动和nandflash启动)中启动,从什么地方启动,就将其映射到映射区域中。
比如从IROM启动(包括SD卡启动和nandflash启动两种方式)时,把IROM映射到0地址处,然后从0地址开始运行,
从nandflash启动的时候,上电之后,首先运行irom中的代码(可以看做是0地址),irom中的代码是硬件厂商固化好的,这些代码主要负责一些硬件的初始化,还负责将bootloader中的前8K代码复制到stepping stone中(第一阶段),在stepping stone中这8K代码运行完之后还将剩余的bootloader复制到内存0x5000 0000中运行(第二阶段),最终引导操作系统启动。
跳转到内存的地址是怎么来的:uboot根目录下的config.mk文件中搜索 TEXT_BASE 这表示从垫脚石会跳转到这个地方执行,这个地址会覆盖链接器脚本中的地址 具体值在板文件目录下的config.mk设置
S5PV210:
与6410相似,0地址处也是一个映射区域,从nandflash启动实际是从irom启动。
从nandflash启动的时候,上电之后,首先运行irom中的代码(可以看做是0地址),irom中的代码是硬件厂商固化好的,这些代码主要负责一些硬件的初始化,还负责将bootloader中的第一阶段代码(BL1---16K)复制到stepping stone(96K)中,然后将BL2(一般容量为80k)复制到stepping stone中,此时若stepping stone中还装不下bootloader,则继续将剩余的bootloader复制到内存中运行,最后引导操作系统启动。