/* * armboot - Startup Code for OMAP3530/ARM Cortex CPU-core * * Copyright (c) 2004 Texas Instruments <r-woodruff2@ti.com> * * Copyright (c) 2001 Marius Gröger <mag@sysgo.de> * Copyright (c) 2002 Alex Züpke <azu@sysgo.de> * Copyright (c)…
嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWorks.Solaris等操作系统:其源码组织形式和linux源码很相似,编译也可参照linux源码编译,且包含许多linux源码中的驱动源码,所以uboot实际上可以算作一个微型的操作系统,可以做一些简单工作. 本文的分析对象是u-boot-2012.10版本,以下内容将根据此版本源码和特定的boa…
(1)定义入口.由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成.(2)设置异常向量(Exception Vector).(3)设置CPU的速度.时钟频率及终端控制寄存器.(4)初始化内存控制器.(5)将ROM中的程序复制到RAM中.(6)初始化堆栈.(7)转到RAM中执行,该工作可使用指令ldr pc来完成. .globl _start         …
(1)定义入口.由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成.(2)设置异常向量(Exception Vector).(3)设置CPU的速度.时钟频率及终端控制寄存器.(4)初始化内存控制器.(5)将ROM中的程序复制到RAM中.(6)初始化堆栈.(7)转到RAM中执行,该工作可使用指令ldr pc来完成. .globl _start         …
一.uboot启动流程简介 与大多数BootLoader一样,uboot的启动过程分为BL1和BL2两个阶段.BL1阶段通常是开发板的配置等设备初始化代码,需要依赖依赖于SoC体系结构,通常用汇编语言来实现:BL2阶段主要是对外部设备如网卡.Flash等的初始化以及uboot命令集等的自身实现,通常用C语言来实现. 1.BL1阶段 uboot的BL1阶段代码通常放在start.s文件中,用汇编语言实现,其主要代码功能如下: (1) 指定uboot的入口.在链接脚本uboot.lds中指定uboo…
1> main_loop  common/main.c /****************************************************************************/ void main_loop (void) { #ifndef CONFIG_SYS_HUSH_PARSER , }; int len; ; int flag; #endif #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELA…
http://blog.csdn.net/xautfengzi/article/details/7470134 前段时间了看了UBoot的源码,放了一段时间之后忘得差不多了.现做一些注释,方便以后温习. 第一阶段代码主要位于start.S中,其流程如下: 1.设置中断向量表. 2.设置CPU为管理员模式. 3.禁狗. 4.关中断. 5.设置系统时钟. 6.跳至cpu_init_crit.(注意bl指令,bl指令是相对跳转,绝对跳转用mov lr,pc.由于此阶段代码是位置无关代码,所以在跳至的细…
contains invalid call from '~PRES8' function to 'REQ8' function main RVDS编译出现contains invalid call from '~PRES8' function to 'REQ8' function main 解决办法:在汇编文件顶部加 preserve8 伪指令 错误提示如下:Error   : armlink: L6238:  44BINIT.o(Init) contains invalid call from…
说明:本文转载自:http://blog.csdn.net/gooogleman/article/details/17238079  作者:gooogleman                   日期:2013.11.27             最近,发现4412 和S5PV210的一些iNand/TF启动方式有些不同,4412 的一些磁盘索引不是固定在某一个通道的上的,而S5PV210 是固定的,这就导致一些人在烧写4412 ,分区格式化的时候会莫名其妙,不知所以然,现在看看代码,看是44…
------------------------------------------------------------------------------------------------------------------------------------------- 我们知道,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…
/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.1 * @date       Dec-2014 ****************************************************************************** * < COPYRIGHT 2014 IS…
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的基本策略,…
转自: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…
/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.1 * @date       Feb-2015 ****************************************************************************** * < COPYRIGHT 2015 IS…
本节总结: 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…
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…
最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上.正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果.之前在学习uboot时,在网上看了很多文章,很多都是基于老版本的的uboot,并且很多都是直接从代码开始分析,并没有将uboot与ARM处理器体系结构结合起来.毕竟很多时候做一件事情,你知道怎么去做这件事和你知道这件事为什么要这么去做两个不同的概念.即英文中常说的:how do?和 why do? 将2016年7月发布的…
关于编译powerpc linux的几个Image参考原文 http://blog.sina.com.cn/s/blog_86a30b0c0100wfzt.html 转载▼   PowerPC架构 Linux和ARM,X86等平台有些差异,PowerPC平台HW参数不是通过命令行方式传递到Linux,而是通过传递Device tree文件的方式传递参数,所以PowerPC平台Linux需要编译dtb和uImage才能正常加载,另外PowerPC架构linux还提供simpleImage的方式加载…
Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核 标签(空格分隔): Qemu ARM Linux 在上文<Qemu搭建ARM vexpress开发环境(一)>中已经简单讲述了通过Qemu模拟直接启动Linux内核,并挂在SD卡根文件系统的方法,这种方法是直接启动内核,与实际应用中ARM板的启动方式:u-boot.kernel.rootfs有些不同.现在就来讲述下通过Qemu搭建通过u-boot启动Linux内核并挂载根文件系统的方法. 1. 开发环…
一.嵌入式系统的分区 嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader.kernel.rootfs的分区是不同的.三星S5PV210规定启动设备的分区方案如下: SD/MMC设备的分区方案: NandFlash设备的分区方案: 嵌入式系统在启动时,uboot.kernel.rootfs不能随意存放,必须存放在规划好的相应分区,在启动过程中uboot.kernel会到相应分区加载相应内容,确保正常启动,因此嵌入式系统中,uboot和kernel规划的分区和启…
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加载u-boot第二阶段代码到RAM空间. 设置好栈. 跳转到第二阶段代码入口. 第二阶段的功能: 初始化本阶段使用的硬件设备. 检查系统内存映射. 将内核从Flash读取到RAM中. 为内核设置启动参数. 调用内核. CPU有7种模式 ARM中处理器模式   说明 备注 用户(usr) 正常程序工作…
1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 Ø 硬件设备初始化 Ø 加载U-Boot第二阶段代码到RAM空间 Ø 设置好栈 Ø 跳转到第二阶段代码入口 (2)第二阶段的功能 Ø 初始化本阶段使用的硬件设备 Ø 检测系统内存映射 Ø 将内核从Flash读取到RAM中 Ø 为内核设置启动参数 Ø 调用内核 1.1.1 U-Boot启动第一阶段代码分析 第一阶段对应的文件是cpu/arm920t/start.S和board/sa…
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…
uboot 的启动过程及工作原理2.1 启动模式介绍    大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅对于开发人员才有意义.但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别.    启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式.也即 Boot Loader 从目标机上的…
一.概述 linux内核镜像常见到的有两种形式,zImage和uImage.这两种文件的格式稍有差别,所以启动这两种格式的内核镜像也会有所不同.目前,uboot只支持启动uImage类型的镜像,对zImage还不支持(但是可以移植,TQ2440就是这样做的). 二.uImage和zImage 1.zImage zImage是用命令“#make zImage”生成的,我截取了生成信息最后部分的内容如下: OBJCOPY arch/arm/boot/Image Kernel: arch/arm/bo…
问题描述: 在win7下安装Ubuntu14.04,由于启动项 /boot loader 安装位置错误(/dev/sda1 (win 7 loader) )导致无法进入Windows(在GRUB界面能够看到win7的启动选项,点击后黑屏闪了几下,又回到GRUB界面),但是Ubuntu系统可以正常使用. 问题解决: 通过baidu多位前人的经验,花了2个多小时解决了这个问题.在看到Windows界面出现时爽爆了!完美解决方法如下: 1. 进入Ubuntu环境: 2.打开终端(alt+ctl+t),…
如题,实现过程中发现3额问题,先写下来,待解答: 1.uboot启动后再dnw上打印许多信息,我想改变其中的打印信息或加上自己的打印信息以证明程序运行到何处.修改完后重新编译uboot.bin. 在DNW下执行dnw 50008000 USB下载uboot.bin到内存50008000处, go 50008000,从内存50008000处运行我刚下载的程序,发现我修改的内容并未显示. 重新执行dnw 50008000,nand erase 0 100000,nand write.uboot 50…
U-Boot启动过程完全分析 1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取到RAM中 为内核设置启动参数 调用内核 1.1.1             U-Boot启动第一阶段代码分析 第一阶段对应的文件是cpu/arm920t/s…
作者:围补 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织.毕竟文字跟有声语言表达有别.但愿简单的东西别让我讲的太复杂! Arm板系统文件一般有三个——bootloader(uboot).kernel(uImage)及根文件系统(rootfs).在arm板上电后,按uboot->kernel->rootfs的顺序依次启动.由于开发板上有多种存储介质,三个文件可以放在任何可以存储的介质上,因此也就导致文件的多种启动方式.本文就来讨论,以上三个文件对应不通存放位置…