海思uboot启动流程详细分析(一) 海思uboot启动流程详细分析(二) 海思uboot启动流程详细分析(三)  …
1. 前言 书接上文(u-boot启动流程分析(二)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的.board有关初始化过程.该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行). 注1:由于u-boot后初始化过程,基本上涉及到了所有的软件模块,因此本文不能一一分析,基本原则就是捡看着顺眼的.熟的下手了~. 2. Generic Board u-boot的基本策略,…
1. 第二个start.S 从start_armboot开始,在startup.c中有包含#include <config.h> 在config.h中: /* Automatically generated - do not edit */ #define CONFIG_BOARDDIR board/hisilicon/hi3559av100 #include <config_defaults.h> #include <config_uncmd_spl.h> #incl…
第一阶段 start.S 首先我们可以在u-boot.lds中看到ENTRY(_start),即指定了入口_start,_start也就是整个start.S的最开始: 1. reset 在arch\arm\cpu\armv8\hi3559av100中的start.S 注意x30在ARMV8中代表lr寄存器 reset: /* * Could be EL3/EL2/EL1, Initial State: * Little Endian, MMU Disabled, i/dCache Disable…
转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容: 1).正常开机引导流程 2).recovery引导流程 3).fastboot引导流程 4).ffbm引导流程 5).lk向kernel传参 start---------------------------------------- 在bootable/bootloader/lk/arch/arm/crt0.S文件中有下面代码,所以从kmain()开始介绍 bl kmain kma…
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数.在执行前,处理器应满足以下状态: r0 - should be 0 r1 - unique architecture number MMU - off I-cache - on or o…
转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数.在执行前,处理器应满足以下状态: r0 - should be 0 r1 - unique ar…
1.前言 在前面的文章Uboot启动流程分析(二)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12002764.html 已经对_main函数的整个大体调用流程,以及函数的实现的各个功能进行了简单地分析,接下来,本篇文章将对board_init_f函数进行分析,在此之前,先来回顾一下_main函数的简单调用流程,如下所示: _main | board_init_f_alloc_reserve-->reserve gd and early malloc ar…
参考http://blog.csdn.net/skyflying2012/article/details/25804209 这里以imx6平台为例,分析uboot启动流程对于任何程序,入口函数是在链接时觉得的,uboot的入口是由链接脚本决定的.uboot下armv7链接脚本默认目录为arch/arm/cpu/u-boot.lds.这个可以在配置文件中与CONFIG_SYS_LDSCRIPT来指定 1.由于imx6dl芯片属于armv7架构,在arch/arm/cpu/目录下,通过分析链接脚本u…
------------------------------------------------------------------------------------------------------------------------------------------- 我们知道,bootloader是系统上电后最初加载运行的代码.它提供了处理器上电复位后最开始需要执行的初始化代码. 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主…
转自: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…
1.前言 在前面的文章Uboot启动流程分析(一)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12000889.html 已经简单地分析了low_level_init函数,其调用流程如下: save_boot_params_ret | cpu_init_crit | | | lowlevel_init | | | s_init | _main 接下来,则继续往下分析_main函数. 2._main函数 在save_boot_params_ret的最后,会运…
1.前言 Linux系统的启动需要一个bootloader程序,该bootloader程序会先初始化DDR等外设,然后将Linux内核从flash中拷贝到DDR中,最后启动Linux内核,uboot的全称为Universal Boot Loader,Linux系统中常用的bootloader就是uboot,接下来,将会进行简单的uboot启动流程分析,uboot的源码为uboot-imx-rel_imx_4.15_2.1.0. 2.uboot入口 在分析之前,需要对整个uboot工程进行编译,生…
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加载u-boot第二阶段代码到RAM空间. 设置好栈. 跳转到第二阶段代码入口. 第二阶段的功能: 初始化本阶段使用的硬件设备. 检查系统内存映射. 将内核从Flash读取到RAM中. 为内核设置启动参数. 调用内核. CPU有7种模式 ARM中处理器模式   说明 备注 用户(usr) 正常程序工作…
基本指令含义 .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…
U-Boot启动过程完全分析 1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取到RAM中 为内核设置启动参数 调用内核 1.1.1             U-Boot启动第一阶段代码分析 第一阶段对应的文件是cpu/arm920t/s…
转载自:http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html 1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取到RAM中 为内核设置启动参数 调用内核 1.1.1   …
我们开发任何一个Spring Boot项目,都会用到如下的启动类 1 @SpringBootApplication 2 public class Application { 3 public static void main(String[] args) { 4 SpringApplication.run(Application.class, args); 5 } 6 } 从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringAppli…
开发环境:Nanopi-neo-plus2 软件版本:uboot-2017 软件版本:linux-4.14 买这个板子有一段时间了,并没有全身心的投入在上面,有时间了的话就搞一搞, 这篇随笔算是对这个版本的 uboot 启动流程做个大概的梳理和记录,体系结构相关的内容不作分析. 我这里会从 SPL(Secondary programloader) 阶段开始入手,按流程整理出 SPL 是怎样一步一步启动的 uboot,而 uboot 又是怎样加载并启动的 kernel. 废话不多说,以内容为重点来…
本节总结: uboot启动流程如下: 1)设置CPU为管理模式 2)关看门狗 3)关中断 4)设置时钟频率   (FCLK:HCLK:PCLK=1:2:4,FCLK=120Mhz) 5)关mmu,初始化各个bank 6)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域) 7)重定位     复制uboot,然后修改SDRAM上的uboot链接地址) 8)清bss 9)跳转到board_init_r()函数,启动流程结束 1.首先来安装arm-linux-gcc…
转自:http://www.latelee.org/porting-uboot/u-boot-porting-bootstrap.html u-boot移植随笔:u-boot启动流程简图 画上面这张图也花了点时间.虽然很简洁,但对于理解u-boot,从一个较高角度府视u-boot,很有帮助.——其实网上有很多分析教程.资料,相信大多都是大同小异的.因此,山人无谓再写一次了. (小技巧: 如何将上面的图占为已有? 木草山人心地善良,好心地将图片的背景做成白色的,最简单的方法是使用windows系统…
VS-RK3288嵌入式板卡 U-boot 启动流程小结 bl    board_init_f -> crt0.S    initcall_run_list(init_sequence_f) -> board_f.c        arch_cpu_init ->            rk_get_chiptype    //获取chip type (rk31xx, rk32xx等)        timer_init        env_init        init_baud_…
Job Manager 启动 https://t.zsxq.com/AurR3rN 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3.Flink 从0到1学习 -- Flink 配置文件详解 4.Flink 从0到1学习 -- Data Source 介绍 5.Flink 从0到1学习 -- 如何自定义 Data Source ? 6.Flink 从0到1学习 --…
Task Manager 启动 https://t.zsxq.com/qjEUFau 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3.Flink 从0到1学习 -- Flink 配置文件详解 4.Flink 从0到1学习 -- Data Source 介绍 5.Flink 从0到1学习 -- 如何自定义 Data Source ? 6.Flink 从0到1学习 -…
最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上.正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果.之前在学习uboot时,在网上看了很多文章,很多都是基于老版本的的uboot,并且很多都是直接从代码开始分析,并没有将uboot与ARM处理器体系结构结合起来.毕竟很多时候做一件事情,你知道怎么去做这件事和你知道这件事为什么要这么去做两个不同的概念.即英文中常说的:how do?和 why do? 将2016年7月发布的…
转自: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…
一.概述 u-boot的启动流程: 从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c, 先来分析start.s    在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行. uboot-第一阶段硬件初始化主要实现了: 1.执行设置CPSR程序程序状态寄存器为管理模式 2.关看门…
从大方面来说,u-boot的启动分成两个阶段,第一个阶段主要的职责是准备初始化的环境,主要有以下几点 ①设置异常向量表 ②把CPU的工作模式设置为SVC32模式 ③关闭中断.MMU和cache ④关闭看门狗 ⑤初始化内存.时钟.串口 ⑥设置堆栈 ⑦代码搬移 ⑧清bss段 ⑨跳转到c语言中执行(第二阶段) 此时系统还没有进入C语言的运行阶段,并没有堆栈,也就不需要额外的RAM. 第二阶段在上一段建立好C语言运行环境的基础上,进行各种外设的初始化,并循环执行用户命令.主要流程图如下 当我们执行mak…
u-boot命令 先贴一个重要结构,位于uboot/include/command.h,这个结构代表每个uboot命令 struct cmd_tbl_s { char     *name;   /* Command Name       */ int      maxargs;    /* maximum number of arguments*/ int      repeatable;/* autorepeat allowed?   */ /* Implementation function…
http://blog.csdn.net/ooonebook/article/details/53070065 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [project X] tiny210(s5pv210)从存储设备加载代码到DDR [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot…