野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10060|回复: 1

[pcDuino NANO] 预备03 pcDuino板启动流程

[复制链接]
发表于 2016-3-15 21:53:33 | 显示全部楼层 |阅读模式
本帖最后由 xcoder 于 2016-3-15 22:18 编辑

预备03 pcDuino板启动流程


pcDuino板支持从多种SoC片外存储介质启动,包括SD卡、NANDFlash、SPI Nor Flash以及USB设备。图3.1描述了整个启动的流程。

image001.png


图3.1 pcDuino板启动设备选择流程
上电后,SoC内置ROM中固化的boot程序(boot0)会根据配置引脚状态选择从哪些设备启动,可以看到,SoC的配置引脚的状态决定了是否直接从USB设备启动。如果配置引脚状态为0,即低电平时直接从USB设备启动;否则依次尝试从不同的设备启动,如果从某一个设备启动成功则不再尝试后续设备,一旦所有设备都启动失败,最后仍旧从USB设备启动。
在这个过程中,启动设备的选择、初始化都是由boot0完成,它在SoC芯片出厂时就被固化片内ROM中,虽然通常开发人员不必关注实现细节,但仍需要关注几个要点:
1、上电后首先被运行。ARM复位的起始指令位置0x00000000,boot0的代码起始指令就被映射到该地址,因此上电后直接运行boot0代码。
2、boot0仅仅负责选择启动设备,校验、加载启动设备中保存的boot程序,最后运行交出控制权。所以,更加复杂功能需要由启动设备中的boot实现。
3、boot0会将启动设备的中的boot程序加载到片内的RAM中,然后运行。通常片内RAM容量较小,这就要求启动设备的中的boot程序不能太大。

整个启动过程(包括boot0)可分为5个阶段,分别是boot0、SPL、u-boot、linux和rootfs。
image002.png

图3.2 pcDuino板启动流程
SPL(Second Program Loader):是精简后的u-boot,主要工作包括,
         - 初始化ARM处理器
         - 初始化串口控制台
         - 配置时钟
         - 初始化片外RAM
         - 初始化启动设备(保存u-boot的设备)
         - 加载完整的u-boot程序到片外RAM并运行
u-boot:提供了更加丰富的功能,包括外设的访问,而且提供了交互式的命令行。最终需要将linux镜像加载到RAM中,运行linux。
linux:linux操作系统镜像文件。
rootfs:根文件系统镜像文件,它可以存在RAM中,也可以存在SD卡某一分区中,linux启动后会将其挂载,根文件系统里面包含了linux必须的可执行程序和一些库文件。

在接下来的学习中,我们将使用SD卡做为启动设备,将自己编译的u-boot、linux等镜像保存的在SD卡中。从启动流程上看,boot0 首先从SDC0(CARD0)设备寻找boot,查看pcDuino板原理图,SoC侧SDC0引脚定义:
image003.png

图3.3 CARD0引脚
pcDuino板SD卡插槽原理图:


image004.png


图3.4 SD卡槽接口
pcDuino板上的SD卡插槽与SDC0对应,换句话说,boot0会首先访问SD卡之后再访问其它启动设备,这为SD卡启动提供硬件上的保证。





回复

使用道具 举报

发表于 2016-3-16 18:52:04 | 显示全部楼层
图解很清晰
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-20 15:17 , Processed in 0.027243 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表