BootLoader

引言:
打开设备的电源,BIOS开机自检,按BIOS中设置的启动设备的顺序(通常是硬盘)启动。跳线/帽,或者 PCB图中的顺序
PCB图中有很多的GPIO设备引脚:固定的地址,可以外接各种设备(LCD等)
接着启动设备上安装的引导程序lilo/ winPE / bootmanager 或 grub 开始拷贝、引导Linux、unix、windows
uboot嵌入式bootloader严重依赖于硬件实现
汽车ECU中, 指代码更新程序

bootloader要实现的功能

  • 初始化硬件设备
  • 建立正确的内存空间映射
  • 初始化栈
  • 检测并初始化内存
  • 初始化全局变量
  • 加载程序,将非易失性存储器中的特定软件组拷贝到RAM中,传递 tags 参数 并 运行

U-Boot

# 编译&& 裁剪**
# u-boot
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-  vexpress_ca9x4_defconfig
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-  menuconfig # setting bootcmd and other load-media
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- qemu-system-arm \-M vexpress-a9 \-kernel u-boot\-nographic \-m 512M \
#   -nic tap  # else add some env cmd

编译添加自己的 cmd on u-boot命令行模式 !

添加自己的所有权等功能。

./common 文件夹下 add authorize.c
./common 文件夹下 modify Makefile:# echo obj-y += authorize.o" > ./common/Makefile

#include <common.h>
#include <command.h>static int authorize(struct cmd_tbl *cmdtp, int flag, int argc,char *const argv[])
{       int i = 0;for(i=0; i< argc; ++i){printf("-author %d : [ %s ] not authored \n !", i, argv[i]);};return  0 ;
}U_BOOT_CMD(author,   4,     1,      authorize, # 4 max_argv "Print the authors :","\n","    张三,李四,王二麻子。。。"
);

U-BOOT 引导方法:

  1. 自动执行 bootcmd 环境变量内的内部的指令( copy bootm ):
    bootcmd=ext4load mmc 2:1 0X48000000; bootm 0x48000000
    a. 将内核镜像搬移到某一个地址: tftpboot 0x48000000 uImage
    b. 到这个地址进行执行 二进制的 arch架构 可执行程序 : bootm 0x48000000

  2. 在boot倒计时 3 2 1时候(按下键盘的回车键,将进入到uboot的命令行模式) 进入uboot交互模式,自己输入命令 拷贝 / 引导 内核镜像可执行程序 :
    =>tftpboot 0x48000000 uImage && bootm 0x48000000

bootargs=root=/dev/mmcblk0p8 init=/linuxrc console=ttySACI,115200 lcd=wy070ml tp=gslx680

GRUB/2

GRUB源代码分析总结

  1. 通过对整个源代码的分析,大致上整个GRUB启动到引导其他操作系统分为如下几个步骤。
  2. 第一步 开机后,通过BIOS装载Stage1模块
  3. 第二步 通过Stage1模块装载Start模块
  4. 第三步 通过Start模块将整个GRUB的内核载入内存
  5. 第四步通过GRUB的一个Shell的机制,作为一个小型的操作系统,来通过指令的方式装载不同的其他操作系统。

****以标记列表(tagged_list)的形式来传递启动参数 --> copy&run内核–> dead * * * *

Linux 之 Uboot/GRUB相关推荐

  1. 一个在windowsXP启动linux as(grub引导)的简单方法

    一个在windowsXP启动linux as(grub引导)的简单方法: 1.下载grub for dos 0.2.0 final 下载地址:http://newdos.yginfo.net/grub ...

  2. I.MX6 Android 5.1 纯Linux、U-Boot编译

    /****************************************************************************** I.MX6 Android 5.1 纯L ...

  3. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统

    标题 +=================================================+ |  从硬盘安装 Linux 和从 GRUB 命令行启动操作系统  | +======== ...

  4. linux fedora35让GRUB 2记住上一次启动的操作系统

    linux fedora35让GRUB 2记住上一次启动的操作系统 修改符号链接/boot/grub2/grubenvWiki上说对于Fedora 20以上的要修改/boot/grub2/gruben ...

  5. linux学习笔记——grub故障排除

    注:本文为本人学习笔记,故只代表本人的理解,如有错误,请见谅并欢迎指正 1.grub简介 详细描述请自行搜索网络,非常多.这里只简单引用网络上的描述.grub是电脑的启动管理程序.是 计算机启动后运行 ...

  6. linux分区表与uboot,Linux和Uboot下eMMC boot分区读写

    关键词:eMMC boot.PARTITION_CONFIG.force_ro等. 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT.RPMB和UDA一般是默认存在的,gpp分区需 ...

  7. linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc

    启动linux停留在grub提示符的解决方法 想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面(Solution 1-3),或者是在Windows中删除了Linux分 ...

  8. linux grub error 22,Linux系統grub常見錯誤問題解決

    Linux在現在已經很強大了,導致Linux系統越來越受到電腦用戶的歡迎,於是很多人開始學習Linux時,學習時你可能會遇到Linux系統grub常見錯誤問題,這裡將介紹Linux系統grub常見錯誤 ...

  9. 大白菜linux系统安装步骤,GRUB简单入门教程

    一.什么是多重操作系统引导管理器,什么是GRUB: 1.什么是多重操作系统引导管理器及工作原理: 系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦 ...

最新文章

  1. Windows数据类型探幽——千回百转你是谁?(2)
  2. 菜鸟学Linux 第050篇笔记 dhcp
  3. 错误:Parameter ‘0‘ not found.Available parameters are [arg1, arg0, param1, param2]的解决方法
  4. 随笔18 java中的类加载器
  5. 深度学习DL蒙特卡洛法平衡态分子动力学模拟并计算苯酚键值
  6. 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
  7. Magento 获取有效属性 Display available options for attributes of Configurable
  8. Deep Learning的基本思想以及训练过程
  9. 【网络安全工程师面试合集】—CSRF跨站请求伪造 攻击及防御
  10. php5.5.35安装,如何安装php5
  11. 青岛工学院计算机专业分数线,青岛工学院分数线
  12. CF1041E Tree Reconstruction
  13. Dubbo实现分布式架构原理
  14. 【Linux】imx6ull Kernel 源码下载和编译环境配置
  15. magisk安装失败_刷入magisk+TWRP+Riru+edxposed教程!
  16. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析(系列二)
  17. 我们小时候可没这么牛的露天电影
  18. 如何将 Credly 中的数字徽章转成二维码
  19. 手机计算机藏应用,手机“计算器”隐藏功能,一键把隐私照片加密
  20. 配置Druid数据源监控

热门文章

  1. strcmp函数的使用
  2. 多宝福袋系统开发模式介绍
  3. NRE论文总结:Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
  4. dnf剑魂buff等级上限_DNF昨天·今天·明天:小晶体上架无数量限制,公会本奖励再增加...
  5. 水性氟碳涂料行业调研报告 - 市场现状分析与发展前景预测
  6. @Amap/Amap-vue使用(踩坑)记录
  7. 什么是PyPy? 更快的Python而无痛苦
  8. labelme-mask
  9. 使用银联商务实现微信小程序支付
  10. 条件随机场(CRF)极简原理与超详细代码解析