分析linux启动流程图,i.mx6 linux启动流程分析.pdf

i.mx6 linux启动流程分析

I.MX6

LINUX

启动流程分析

2014/07/25

主要内容

i.MX6Q芯片启动流程

u-boot启动流程

linux内核启动流程

文件系统,服务程序启动流程

I.MX6Q功能框图

I.MX6 IROM和IRAM地址映射

I.MX6Q BOOT ROM

i.MX6 Boot ROM有以下功能: 支持从以下设备启动:

支持从多种存储设备启动  Nor Flash

 串行下载(USB OTG)  NAND Flash

芯片相关功能模块配置 OneNAND Flash

(DCD)

SD/MMC

数字签名认证

Serial ATA(SATA) HDD

从低功耗模式唤醒

Serial (I2C/SPI) Nor Flash

and EEPROM

BOOT ROM启动模式

三种模式

00 :读取熔丝位决定启动方式

01 :USB下载模式

10 :内部ROM执行启动流程

SPI FLASH启动模式

I.MX6Q PROGRAM IMAGE

i.MX6Q Program Image :用户编译完成的程序镜像文件,这里指

u-boot

Program Image包含四部分:

 Image Vector Table(IVT)

内部ROM从IVT中读出需要的数据来启动芯片,是一个数据结构

 Boot data

一张指向映像地址、映像大小的表

 Device configuration data

包含芯片相关硬件初始化的寄存器地址和初始值

 User code and data

用户代码和数据,这里指真正意义的u-boot代码和数据段

IVT

IMAGE VECTOR TABLE

从SPI FLASH启动流程

SPI i.MX6 检查映像 执行硬件 拷贝u-boot映像

FLASH 内部RAM 合法性 初始化 到外部RAM

代码阅读

U-BOOT 两个阶段

分为两个启动阶段

第一阶段(汇编实现) 第二阶段(C语言)

 硬件设备初始化,CPU设置为  硬件设备初始化

SVC32管理模式  …

 关闭I/D Cache,关闭MMU

 关闭二级缓存L2 Cache

 设置好栈指针

 调转到第二阶段的C入口函数

start_armboot

U-BOOT 启动第一阶段

第一阶段重要文件

 Makefile (make mx6q_sabresd_config3332行)

 include\configs\mx6q_sabresd.h (u-boot配置文件)

 include\config.h (make自动生成)

 board\freescale\mx6q_sabresd\config.mk

 board\freescale\mx6q_sabresd\flash_header.S

cpu\arm_cortexa8\start.S

 board\freescale\mx6q_sabresd\lowlevel_init.S

 board\freescale\mx6q_sabresd\u-boot.lds (链接脚本)

U-BOOT MEMORY MAP

U-BOOT 启动第二阶段

第二阶段

 lib_arm\board.c (入口)

 。。。

U

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值