Uboot启动流程分析(五)

1、前言

在前面的文章Uboot启动流程分析(五),链接如下:

https://www.cnblogs.com/Cqlismy/p/12147411.html

已经对board_init_f() 函数作出了简单的分析,该函数对一些早期的外设进行了初始化,例如调试串口,并填充了gd_t结构体中的成员变量,最主要的是对整个DRAM的内存进行了分配,以便uboot的重定位,接下来,先回顾一下_main函数的大概流程,如下:

_main
    |
    board_init_f_alloc_reserve-->reserve gd and early malloc area
    |
    board_init_f_init_reserve-->initialize global data
    |
    board_init_f-->initialize ddr,timer...,and fill gd_t
    |
    relocate_code-->relocate uboot code
    |
    relocate_vectors-->relocate vectors
    |
    board_init_r-->calling board_init_r

在_main函数中,调用完了board_init_f()函数后,将DRAM的内存分配好,填充gd_t结构体成员变量,接下来,就是调用relocate_code()函数重定位uboot代码,调用relocate_vectors()函数重定位中断向量表,本篇文章将简单分析uboot的大概重定位过程。

2、uboot相关变量

3、relocate_code函数

4、relocate_vectors函数

5、小结

原文地址:https://www.cnblogs.com/Cqlismy/p/12152400.html

时间: 2024-10-10 11:03:18

Uboot启动流程分析(五)的相关文章

u-boot启动流程分析(2)_板级(board)部分

转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global data介绍以及背后的思考 5. 前置的板级初始化操作 6. u-boot的relocation 7. 后置的板级初始化操作 1. 前言 书接上文(u-boot启动流程分析(1)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_i

Uboot启动流程分析(四)

1.前言 在前面的文章Uboot启动流程分析(三)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12006287.html 已经对init_sequence_f前半部分函数进行了简单分析,前半部分主要是对调试串口终端进行了初始化,以及输出了一些必要的字符串,接下来,本篇文章将对init_sequence_f后半部分函数进行分析,后半部分主要是对DRAM的内存进行分配,并对gd的相关结构体成员进行初始化,在init_sequence_f函数初始化列表中,已经执

u-boot启动流程分析(1)_平台相关部分

转自:http://www.wowotech.net/u-boot/boot_flow_1.html 1. 前言 本文将结合u-boot的“board—>machine—>arch—>cpu”框架,介绍u-boot中平台相关部分的启动流程.并通过对启动流程的简单分析,掌握u-boot移植的基本方法. 注1:本文所使用的u-boot版本,是2016/4/23从u-boot官网(git://git.denx.de/u-boot.git)导入的一个快照,具体可参考“https://github

am335x uboot启动流程分析

基本指令含义 .globl _start .globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号 b,bl b是不带返回的跳转  bl带返回的跳转 .word 插入一个32-bit的数据队列.(与armasm中的DCD功能相同) 芯片到uboot启动流程 :ROM → MLO(SPL)→ uboot.img 启动脚本:/u-boot2011.09/arch/arm/cpu/armv7/omap-common/u-boot_spl.lds M

Linux嵌入式驱动学习之路⑤u-boot启动流程分析

这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加载u-boot第二阶段代码到RAM空间. 设置好栈. 跳转到第二阶段代码入口. 第二阶段的功能: 初始化本阶段使用的硬件设备. 检查系统内存映射. 将内核从Flash读取到RAM中. 为内核设置启动参数. 调用内核. u-boot启动第一阶段流程 根据连接器脚本 board/samsung/$(BO

新版本uboot启动流程分析

参考页面 友善之臂文章 UBOOT启动过程介绍,非常有用! 启动过程分析 第一阶段 初始化RAM,CPU阶段,准备初始化板 操作时钟,设置CPU模式,设置中断,关看门狗, 底层初始化CPU,初始化RAM,初始化C环境,设置GD全局数据结构 执行board_init_f 第二阶段 前期初始化板阶段,此时已经可以使用串口,显示板子信息,然后重定位代码 board_init_f,其实就是在RAM中设置各种内存,然后重定位跳转过去,好进行下一步继续初始化 执行init_sequence_f 函数数组里面

U-BOOT启动流程分析--start_armboot函数(二)

第二阶段的功能: 初始化本阶段所需的硬件设备(主要设置系统时钟.初始化串口.Flash.网卡.USB) 检测系统内存映射(memory map) 将内核映像和根文件系统映象从Flash上读到RAM空间中 为内核设置启动参数 调用内核 从start_armboot开始,程序流程如图 原文地址:https://www.cnblogs.com/y4247464/p/10597504.html

uboot boot流程分析

下面这篇文章分析得比较好: 2014.4新版uboot启动流程分析 http://blog.csdn.net/skyflying2012/article/details/25804209 感谢作者分享

一,移植uboot,分析uboot启动流程

文档时间:2018-08-08 交叉编译器:arm-linux-gcc-4.3.2 Ubuntu版本:16.04 uboot版本:2013.10 uboot启动流程简要如下: a,设置CPU为管理模式 b,关闭看门狗 c,关闭中断 d,设置时钟频率 e,进入lowlevel_init.S,初始化各个bank f,进入board_init_f()函数 h,代码重定位,清除bss i,跳转到board_init_r(),进入第二阶段 1,进入https://www.amazon.com/cloudd