u-boot(一)启动简介
title: u-boot(一)启动简介
tags: linux
date: 2018-09-21 19:56:05
u-boot(一)启动简介
启动概述
U-boot的终极目的,是从FLASH中读出内核,加载到SDRAM中
| 系统 | ||||
|---|---|---|---|---|
| Win | BIOS | 引导win | 识别C盘等 | 运行应用程序 |
| Linux | Bootloader | 引导启动linux内核 | 挂载根文件系统 | 运行应用程序 |
阶段一引导
这里包含芯片自身的引导,BIOS固件的引导,以及bootloader的引导,jz2440这里首先可能有4ksram的搬运,然后执行sram的程序,或者直接是Bootloader.所以Bootloader目的就是加载内核,传递内核参数
阶段二Linux内核
内核的启动参数分为固定参数和Bootloader传递参数.
阶段三文件系统
应用程序都是存放在文件系统上的,不像win的C盘D盘,linux的目录结构就是一个树形,树形的顶部也就是/,这个称之为根文件系统,根文件系统有一些特殊的含义,比如shell命令等都是在根文件系统中存放的.
文件系统包含了应用程序,以及库,和动态链接需要的glibc或者Uclibc等.
阶段四应用程序
跑到这里,就是我们自己的应用程序执行的时候了.
内部存储布局
常见的内部空间布局如下:
| Bootloader | Boot parameters | Kernel | Root filesystem |
|---|---|---|---|
| u-boot,它会在内存的某个地方存放着内核启动的一些参数,也称为tag | u-boot 参数,包含传递给内核的一些东西 | 内核 | 根文件系统 |
Bootloader概述
一般情况下,Bootloader分为两个阶段,第一个阶段为汇编阶段,我理解为为C语言提供环境.第二个阶段就是C语言的阶段,实现复杂的功能.
- 汇编阶段
- 硬件初始化,比如关看门狗,设置时钟(这个也可以在C阶段)
- 如果Bootloader需要在SDRAM中运行,则需要①sdram驱动②搬运代码到sdram
- 设置C函数调用、运算所需要的栈(Sp)
- C阶段
- 初始化硬件设备
- 内存映射,这里指的是检测内存有多大,告诉内核
- 读取内核
- 读取根文件系统,有些格式的根文件系统不需要复制到RAM
- 设置启动参数,启动内核
- 内核启动须知
- 内核入口函数有三个参数,所以R0=0,R1=机器ID,R2=启动参数的内存地址
- CPU处于SVC模式,禁止中断
- Cache和MMU
- MMU必须关闭
- 指令cache不相关
- 数据Cache关闭
内核启动参数 taggedlist
内核是这么读取参数的:
- 先判断是什么类型的参数,长度为多少
- 将读取指定长度的内容识别为该格式的参数
所以很自然的,内存单元的参数就是
size
tag
data
体验一下实际的Uboot
- 解压官方源码,注意这里是
u-boot-1.1.6,不是u-boot-2012.04.01_100ask - 使用补丁包
- 配置并编译
tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6/
patch -p1 <../u-boot-1.1.6_jz2440.patch #p1表示忽略应用位置第一个父目录,具体参考diff补丁格式
make 100ask24x0_config
make
烧录,
oflash到nandflash或者norflash备份下补丁文件(压缩文件包)
U-boot的使用帮助
使用命令
q退出菜单,命令menu进入菜单使用
help查看所有命令退出菜单后可以使用
?或者help+具体命令来查看帮助使用
print或者printenv来查看环境变量,使用set命令来设置环境变量,比如使用倒计时时间set bootdelay 8,注意需要最后使用save来保存
U-boot基本要求
核心功能
- 需要有FLASH读取的能力,内核存储在FLASH
- 能够操作SDRAM,将读取到的内核加载到SDRAM
需要以下程序模块
- 初始化时钟,看门狗等其他基本操作
- 支持串口方便调试
- 读写FLASH
- 读写SDRAM
- 其他模块,比如网卡,USB等,支持内核烧写
u-boot(一)启动简介的更多相关文章
- Linux Kernel 0.12 启动简介,调试记录(Ubuntu1804, Bochs, gdb)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- spring boot无法启动,或者正常启动之后无法访问报404的解决办法
以前用spring boot都是用idea的自动创建,或者是用的Jhipster创建的,就没有深究怎么去搭建.但是今天晚上心血来潮,想自己搭一个demo来整合一些技术,于是就花一点时间来手动搭.因为今 ...
- spring boot容器启动详解
目录 一.前言 二.容器启动 三.总结 =======正文分割线====== 一.前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是约定大于配置,但是原理呢?为 ...
- 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean
让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- Spring boot自定义启动字符画(banner)
spring boot项目启动时会打印spring boot的ANSI字符画,可以进行自定义. 如何自定义 实现方式非常简单,我们只需要在Spring Boot工程的/src/main/resourc ...
- spring boot 项目启动无任何反应
遇到的问题 spring boot项目启动后无任何报错,ps有进程,nohub无日志 定位 更换jar包,问题依然存在,将jar包放到其他服务器,运行正常,排除打包问题 同服务器其他系统运行正常,但停 ...
- Spring Boot定制启动图案
启动图案 Spring Boot在启动的时候会显示一个默认的Spring的图案,对应的类为SpringBootBanner. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_) ...
- Spring Boot 设置启动时banner
Spring Boot项目再启动的时候默认会在控制台输出一个字符banner图案,如下图: 我们可以通过下面的方法关闭启动时显示字符banner图案: 关闭banner方法一: public stat ...
随机推荐
- ionic更改端口号
—— 重新指定端口号为8888 serve [options] ............................... 启动本地服务器进行开发测试 dev/testing [--console ...
- git回滚部分文件到某个版本
reset 命令只能将整个版本的代码一起回滚,需要使用checkout 命令,可以还原部分文件到某一版本 格式为:git checkout [<branch>] [file] 1.首先使用 ...
- HTTPserver v3.0 版本项目
项目介绍 模拟使用 socket 多线程 / io多路复用 实现一个简单的 httpserver 和 webframe 交互的项目程序 期望可以实现简单的 以 http 协议为标准的 和浏览器 / ...
- 南理第八届校赛同步赛-C count_prime//容斥原理
大致思路就是先求出n的质因数假设是a1-an,然后在1-a的区间里面查找至少能整除{a1,a2...an}中一个元素的数有多少个,对1-b也做相同的处理,而找出来的元素肯定是与n不互质的,那么把区间的 ...
- MT【263】待定系数
已知$a,b>0$且$ab(a+b)=4$,求$2a+b$的最小值_____ 解答:$\sqrt{3}(2a+b)\ge(\sqrt{3}+1)a+b+(\sqrt{3}-1)(a+b)\ge3 ...
- BZOJ 2521: [Shoi2010]最小生成树(最小割)
题意 对于某一条无向图中的指定边 \((a, b)\) , 求出至少需要多少次操作.可以保证 \((a, b)\) 边在这个无向图的最小生成树中. 一次操作指: 先选择一条图中的边 \((u, v)\ ...
- 【CF1009F】Dominant Indices(长链剖分)
[CF1009F]Dominant Indices(长链剖分) 题面 洛谷 CF 翻译: 给定一棵\(n\)个点,以\(1\)号点为根的有根树. 对于每个点,回答在它子树中, 假设距离它为\(d\)的 ...
- JavaWeb项目:在线评测系统
此项目为本人的Java大作业. 项目文件和相关资源已上传到本人的GitHub 一.项目概况 1.1设计内容 一个在线评测系统,分用户和管理员两种身份.用户能够通过注册登录,参加比赛,最后实时得到比赛结 ...
- CF527E Data Center Drama(构造+欧拉回路)
题目链接 大意: 给你一个无向图. 要求加最少的边,然后给这些无向图的边定向,使得每一个点的出入度都是偶数. 输出定向后的边数和边集. n<=10^5 m<=2*10^5 很巧妙的构造题- ...
- centos7/RHEL7最小化系统安装gnome图形界面
应用场景:对于比较熟悉linux系统的用户来说,全命令行系统可能来的比较简单明了高效,也存在某些情况下需要有像winodws下弹出对话框的情形需求,或者对于初识linux习惯windows界面的用户来 ...