嵌入式启动顺序 - uboot之前

版权声明:本文为博主原创文章,任何组织或者个人可以在任何媒介上发表或转载我的文章、图片等.且转载后必须注明出处和邮箱,博客地址(https://blog.csdn.net/u011011827),本人邮箱([email protected]) https://blog.csdn.net/u011011827/article/details/77773095
//本文章基于HI35XX soc 与 U-boot-2010.06

从上电到加载uboot第一阶段

  • 关于为什么不写从上电到加载bootloader,因为uboot是一种bootloader,在uboot运行之前,CPU运行的程序也是一种bootloader

  • uboot启动后做的工作请参考嵌入式启动顺序 - uboot

uboot 之前的启动顺序 是 1 2 或者 1 3 .

具体有多少种启动顺序,这个是soc相关的,也就是说一个soc制造出来,就已经确定了有几种启动顺序.
具体可以看soc 的芯片手册
这里只是概述出了作者见过的各种启动顺序的集合

1/上电

执行块:索引代码
存放位置:未知
运行位置:未知
上序:无
功能:检查硬件的config,去判断从哪里启动,并执行对应的操作
下序:多种可能.可能1:bootrom中的bootimage.可能2:类似sram接口的Norflash中的uboot第一阶段.
其他1:我也不知道他是什么,有人说这一块是硬件电路.但是我不确定.
其他2:cpu需要从sram或者norflash中取指.这个接口必须要初始化或者这个接口根本不需要初始化

2/ 从bootrom启动

执行块:bootImage
存放位置:bootrom(soc中的irom)
运行位置:sram(也叫iram,也叫L2 Cache)
上序:索引代码
功能:
	1.初始化串口
    2.初始化spi接口
    2.检测上位机是否发送东西
      	2.1.如果没有,则从norflash(spi接口)上读取uboot第一阶段到sram.
        2.2.如果有,则从串口读取数据到sram,并尝试启动从串口来的数据(程序)//该路径不会执行到uboot第一阶段
其他:
	1.cpu与sram的接口是不需要初始化的.
    2.cpu与irom的接口也是不需要初始化的.
  	2.所以cpu可以直接读irom里面的数据到sram.

3/ 从NorFlash(类sram接口)启动

执行块:uboot第一阶段
存放位置 :NorFlash 0x00000000处
运行位置 :NorFlash
上序 :索引代码
功能 : 
	uboot第一阶段的功能
其他 :
	1.cpu与sram的接口是不需要初始化的.
    2.cpu与NorFlash(类sram)的接口也是不需要初始化的.
  	2.所以cpu可以直接读NorFlash里面的数据到sram.

综上,如果说从NorFlash启动的话,那么NorFlash与SOC(cpu)的接口一定是类SRAM接口.

存在一种特殊情况,芯片手册上写着支持NorFlash启动,且NorFlash是SPI接口.其实是从bootrom启动的.

硬件上的config

当BOOTROM_SEL=1,芯片从片内ROM 启动,将会启动串口通信机制,通过串口与PC 端相应的软件建立通
信
	如果在规定时间内,通信成功,则开始下载boot程序.
	如果与串口通信超时,置BOOTROM_SEL为0,并判断BOOT_SEL1(与芯片外部管脚NF_ALE 复用)和BOOT_SEL0(与芯片外部管脚NF_CLE 复用)的上下拉电平.
 
当BOOTROM_SEL=0、BOOT_SEL1=1、BOOT_SEL0=0 时,NAND Flash 启动。
当BOOTROM_SEL=0、BOOT_SEL1=0、BOOT_SEL0=0 时,SPI Flash 启动。
当BOOTROM_SEL=0、BOOT_SEL1=0、BOOT_SEL0=1 时,DDR 启动。
      
一般情况下,一开始在硬件上都是置BOOTROM_SEL为1

猜你喜欢

转载自blog.csdn.net/u011011827/article/details/77773095