uboot和bootloader有啥区别

2023-05-16

uboot和bootloader有啥区别,reboot to bootloader有什么用_IT教学网

片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行。

片内ram装载的是norflash中的内容,即u-boot。

uboot放在norflash里,nandflash就存放的操作系统。

所以norflash相当于电脑的bios,nanflash才是硬盘。sdram就是内存了

uboot是一级启动代码,即bootloader,用来加载操作系统(nandflash)到sdram并且执行,当然uboot还能格式化nandflash和安装新系统的功能。

 谁能讲讲uboot和breed区别?

2种都是BootLoader,即开机初始化时加载的最小系统,用于识别基础硬件和设置环境信息,引导固件的基础。

刷第三方系统,只要支持相应的BootLoader引导的系统就可以刷,现在的不死uboot和breed集成了httpd,即可用从web界面刷新。也有的是需要TFTP刷。一些没有校验的机器或者固件修改过固件头的可以直接从现有系统直接web更新。

但是不同机型的方式不一样,找你对应机型的教程吧。

请问bootloader、u-boot和linux内核的区别和关系是怎样的?

bootloader是取代mbr功能的,可以看成mbr的加强.

u-boot是把usb盘做成启动盘的,linux内核就是linux系统的核心,你用的linux就是在内核基础上扩展了shell和应用程序.

eboot uboot 与 bootloader是什么意思

bootloader是启动加载的意思,就是启动嵌入式系统等启动操作系统的软件的统称,bootloader是统称,u-boot是其中的一种。就像台式机所说的“操作系统”和“windows xp”的关系一样。

【整理】BIOS、BootLoader、uboot对比

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。

BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

BIOS,Basic Input Output System 基本输入输出系统,意思是主板级别的一个小系统。

负责系统(主要是主板)的硬件初始化,例如CPU,内存,硬盘,键盘,显卡,网卡等等硬件的初始化。初始化是BIOS的主要工作。

传统的个人电脑上面BIOS会有一个int19 软件中断功能,在初始化完成后,BIOS会进入int19中断,寻找启动介质,如软盘,光盘,硬盘,flash或者网络等等,读取第一个扇区的内容到内存的0000:7C00处,跳入这个地址执行。

这里int19就是一个bootloader,启动引导器。所以BIOS具有Boot Loader的功能。当然,目前的BIOS功能已经被扩充了很多,例如电源管理方面的ACPI接口,USB驱动,PXE网络引导功能,硬盘加密,TPM接口,BIOS配置界面,BIOS自动恢复等等。

 BootLoader

BootLoader是一段小程序,可以把它想象成PC机linux上的GRUB/LILO引导程序,只不过在嵌入式linux中,没有BIOS,而是直接从flash中运行,来装载内核。它可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。
一个嵌入式系统从软件角度来看分为三个层次:


1.引导加载程序
包括固化在固化中的boot程序(可选),和BootLoader两大部分
2.linux内核
特定于嵌入式平台的定制内核
3.文件系统
包括了系统命令和应用程序

 BootLoader-->Boot Parameters-->Kernel-->Root Filesystem

为什么需要进行bootloader移植?
答:1.因为每种不同的CPU体系结构都有不同的BootLoader
        2.BootLoader依赖于具体的嵌入式板级设备的配置


BootLoader启动过程可分为单阶段和多阶段(stage1、stage2),

stage1完成初始化硬件,如CPU寄存器、内存控制器,为stage2准备内存空间。一般stage1是可以直接在nor flash中运行的,并将stage2复制到内存RAM中,设置堆栈。然后跳转到stage2(从这也可以看出stage2是在RAM中运行的,与stage1不同)

 BootLoader的stage1通常包括以下步骤:
1.硬件设备初始化  如CPU寄存器、内存控制器
2.为加载BootLoader的stage2准备RAM空间
3.拷贝BootLoader的stage2到RAM空间中
4.设置好堆栈 为什么?为了跳转到stage2的入口,因为stage2大多数是用C语言写的
5.跳转到stage2的C入口点

BootLoader的stage2通常包括以下步骤:
1.初始化本阶段要使用到的硬件设备    各种设备,如网卡
2.将内核映像和根文件系统映像从flash上读到RAM中去
3.调用内核


uboot 
Uboot用于多种嵌入式CPU的BootLoader程序
支持多种嵌入式操作系统的引导
UBOOT目录结构
1.Borad        与开发板有关的文件。第一个开发板都以一个子目录出现在当前目录中
2.Common    实现Uboot支持的命令
3.Cpu        与特定CPU架构相关的代码,支持的CPU对应一个子目录(注意CPU与开发板的区别)
3.Disk        对磁盘的支持
4.Doc        文档目录
5.Drivers    Uboot支持的设备驱动程序  如各种网卡、串品、USB、支持CFI的Flash
6.Fs         文件系统的支持
7.Iclude    Uboot使用的头文件。该目录下configs目录有与开发板相关的配置头文件        该目录下的asm目录有与CPU体系结构相关的头文件
8.Net        与网络协议相关的代码    各路协议的实现
9.Tools        生成Uboot的工具,如:mkimage,crc等等

Uboot编译分为两步:
1.执行每种board相关的配置    如:make amdk_2420
2.编译生成uboot.bin文件        如:make CROSS_COMPILE=arm-linux-(指定正确路径)
 

UBOOT基于单板机提供了丰富的命令集操作
UBOOT命令
printenv 查看环境变量(相当全局变量?)
setenv   添加、修改、删除环境变量
1.setenv name value
set environment variable 'name' to 'value...'
2.setenv name
delete environment variable 'name'
saveenv保存环境变量
将当前定义的所有变量及其值存入flash中
---------------------文件下载------------------------------------
tftp 通过网络下载文件     使用前,配置好网络
配置网络:

1.setenv ethaddr 12:34:56:78:8A:BC
2.setenv ipaddr 192.168.1.1
3.setenv serverip 192.168.1.254  (tftp服务器的地址)
连接下载:tftp 32000000 uImage
把server(IP=环境变量中设置的serverip)服务目录下的uImage通过tftp读入到0x32000000处

md 显示内存区的内容
md[.b,.w,.l]address    如:md.w 1000000

mm[.b,.w,.l]address    如:mm.w 100000
mm 修改内存,地址自动递增    提供了一种互动修改存储器内容的方法,如果没有输入任何值,按回车内容保持不变,输入空格然后按下回车,结束输入

flinfo    查看Flash扇区信息
--------------------------------------------------------------------------------
protect Flash写保护  打开或关闭扇区写保护
用法:
protect off all        关闭所有扇区的写保护
protect on all         打开所有扇区的写保护
protect off start end     关闭从start到end扇区的写保护-----》protect off 0 1ffff(前一扇区减去1?)
protect on start end     打开从start到end扇区的写保护

--------------------------------------------------------------------------------

erase 擦除flash扇区
用法: erase start end    如: erase 30000 1efff
在使用cp命令向Nor型Flash写入数据之前必须先使用erase命令擦除flash

cp 数据拷贝
cp [.b,.w,.l]saddress daddress len
cp提供了一种内存与内存,内存与Flash之间数据拷贝的方法
如:cp.b 31000000 50000 d0000 即是将内存地址0x31000000处的数据(长度为0xd0000)拷贝到地址0x50000处(Flash中)

--------------------------------------------------------------------------------
执行程序
go 执行内存中的二进制代码,一个简单的跳转到指定地址
go addr[arg...]
start application at address 'addr',
passing 'arg' as arguments

bootm 执行内存中的二进制代码
bootm [addr[arg...]]       要求二进制代码有固定格式的文件头
boot application image stored in memory passing arguments 'arg...';
when booting a Linux kernel,'arg' can be the address of an initrd image
bdinfo    显示开发板信息  (可用于启动linux内核)
bdinfo命令将在终端显示诸如内存地址和大小、时钟频率、MAC地址等信息
这些信息在传递给LIUNX内核一些参数时可能会用到

设置自动启动
setenv bootcmd tftp 31000000 uImage \;bootm 31000000
saveenv

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uboot和bootloader有啥区别 的相关文章

  • 【STM32】制作一个bootloader

    工作环境 STM32CubeMX Keil 相关环境准备这里就不介绍了 bootloader是什么 bootloader就是单片机启动时候运行的一段小程序 这段程序负责单片机固件的更新 也就是单片机选择性的自己给自己下载程序 可以更新 可以
  • linux rootfs制作

    作一个嵌入式Linux rootfs 并且实现 web 服务 1 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来 且不需要运行用户进程的话 是不需要文件系统的 文件系统简单的说就是一种目录结构 由于 linux操作系统的设备在系统
  • [ZYNQ随笔] uboot移植中bitstream比特流加载问题:zynq_validate_bitstream: Bitstream is not validated yet

    问题介绍 由于项目设计需要 需要频繁的更换比特流文件 之前使用petalinux生成的boot bin每次都需要合并比特流 比较麻烦 遂换了一个uboot版本 米联客默认的u boot 将bitstream放到了独立于boot bin的文件
  • STM32在线升级 (IAP)

    来自QQ群 Linux 技术分享 311078264 打开链接加入QQ群 https jq qq com wv 1027 k 5Gr3bAx 此文档由elikang整理 为了文章简单直接 许多细节未能在文章中体现 如有疑问请进群讨论 STM
  • 如何在U-Boot和Linux内核中添加自定义的ATAG变量?

    我要添加定制atagU Boot 和 Linux 内核中的变量 我怎样才能做到这一点 有没有什么程序可以添加ATAG变量在U Boot and Linux 最新的 Linux 内核正试图废弃ATAGS with 设备树 但是 那setup
  • 优化第七代英特尔酷睿视频 RAM 中的递增 ASCII 十进制计数器

    我正在尝试针对特定的 Kaby Lake CPU i5 7300HQ 优化以下子例程 理想情况下使代码比其原始形式至少快 10 倍 该代码在 16 位实模式下作为软盘式引导加载程序运行 它在屏幕上显示一个十位十进制计数器 计数 0 9999
  • NASM 引导加载程序中的 jmp $

    我试图编写引导加载程序引导装载程序 写的代码是 BITS 16 start mov ax 07C0h Set up 4K stack space after this bootloader add ax 288 4096 512 16 by
  • 所有磁盘扇区在汇编中是如何迭代的?

    在学习汇编的过程中 我正在编写一个操作系统 我已经成功编写了将第二个 512 字节扇区附加到初始 512 字节引导加载程序所需的代码 define KBDINT 0x16 define VIDINT 0x10 define DISKINT
  • lv12 uboot移植深化 9

    u boot 2013 0 1移植 实验目的 了解 u boot 的代码结构及移植 的基本 方法 实验环境 u buntu 14 04
  • 加载引导加载程序的第二阶段和/或将控制权转移给它时出现问题

    我的主引导记录代码 bit16 16bit by default org 0x7c00 jmp short start nop bsOEM db OS423 v 0 1 OEM String start cls mov ah 06h Fun
  • 系统启动时哪个核心首先初始化?

    我想知道CPU启动时多核处理器的哪个核心首先初始化 我的意思是在引导加载程序级别 是第一个核心 还是随机核心 您想要阅读本地 apic 您可以在 卷 2a 中阅读 http www intel com content www us en p
  • 在 U-Boot 中使用 I2C 读取多个字节

    我的 Freescale p1022tw 板的 I2C 驱动程序有问题 U Boot 的控制台上有一个从 I2C 设备读取的命令 i2c md chip address 0 1 2 of objects 当我从 id 为 0x60 地址为
  • 将bootloader和内核制作成iso? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何创建将内核加载到 iso 的简单引导加载程序 已经过去 5 天了 我在 google 中搜索并进行
  • 找出 x86 引导加载程序中引导了哪个驱动器

    我正在为 x86 编写游戏引导加载程序 在启动早期的某一时刻 我需要将启动驱动器中的一些扇区加载到内存中 我使用中断 0x13 ah 02 来执行此操作 当我在虚拟机中尝试它时 它就像一个魅力 然而 当我将映像刻录到 USB 驱动器时 机器
  • ARM 系统上的 Bootrom 与引导加载程序有什么区别

    我主要来自 x86 系统背景 其中 BIOS 固件 负责从 PowerON 加载引导加载程序 如 GRUB 进而加载操作系统 我现在一直在阅读 ARM 系统上的等效启动顺序 网上似乎有文章提到了两个术语 bootrom 和 bootload
  • 使用 int 13h 读取的扇区数量多于磁道上的扇区数量

    顺序是什么int 13h with ah 02h会读19部门起始于 C H S 0 0 1 提供了 2 个磁头 每磁道 18 个扇区 每面 80 个磁道的 软盘 磁盘几何结构 或者 更一般地说 当它到达磁道 0 的末尾 磁头 0 时会发生什
  • 是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零?

    在实施的同时我自己的引导扇区加载程序从 2012 年开始 https hg ulukai org ecm ldosboot rev 17884e6352e6 l1 255我确保将偏移量 508 和 509 处的字节清零 这些是标准 512
  • ARM 的启动过程是怎样的?

    我们知道 对于X86架构 按下电源按钮后 机器开始执行0xFFFFFFF0处的代码 然后开始执行BIOS中的代码以进行硬件初始化 BIOS 执行后 它使用引导加载程序将操作系统映像加载到内存中 最后 操作系统代码开始运行 对于ARM架构 使
  • 使用 U-boot 将 Coral Dev Kit EMMC 安装为 USB

    我按照这个答案的说明进行操作 备份和恢复eMMC https stackoverflow com questions 64176284 backing up and restoring the emmc也在这里描述 https develo
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015

随机推荐

  • 自旋锁和互斥锁的区别

    面试官 xff1a 你说说互斥锁 自旋锁 读写锁 悲观锁 乐观锁的应用场景 百度安全验证 自旋锁和互斥锁的区别 一缕阳光a的博客 CSDN博客 自旋锁和互斥锁的区别 POSIX threads 简称Pthreads 是在多核平台上进行并行编
  • CPU超线程技术到底有什么用?

    什么是超线程技术 前几天的超线程文章引起了不少讨论 xff0c 有些四驱两驱之类留言就不点出来了 今天咱们趁热打铁来聊下CPU超线程的实际用途 超线程的英文名是Hyper Threading Technology xff0c 简称HT 超线
  • 蓝桥杯 生日蜡烛

    某君从某年开始每年都举办一次生日party xff0c 并且每次都要吹熄与年龄相同根数的蜡烛 现在算起来 xff0c 他一共吹熄了236根蜡烛 请问 xff0c 他从多少岁开始过生日party的 xff1f 请填写他开始过生日party的年
  • QNX实时操作系统

    一个实时操作系统 xff08 RTOS xff09 必须是可靠的 xff1b 它必须是快速和响应的 xff0c 管理有限的资源和安排任务 xff0c 使它们按时完成 xff0c 并确保功能是隔离的 xff0c 不受其他功能的干扰 在本节中
  • Makefile教程(绝对经典)

    Makefile教程 xff08 绝对经典 xff0c 所有问题看这一篇足够了 xff09 GUYUEZHICHENG的博客 CSDN博客 makefile 该篇文章为转载 xff0c 是对原作者系列文章的总汇加上标注 支持原创 xff0c
  • 王道考研操作系统笔记

    https mp weixin qq com mp appmsgalbum biz 61 MzI0OTI2MjY2MQ 61 61 amp action 61 getalbum amp album id 61 227777034051051
  • 《管理的常识》:怎么做一个优秀的管理者?

    关于作者 艾伦 默里是 华尔街日报 的副总编 xff0c 华尔街日报 网和市场观察网的执行主编 xff0c 同时也是三次普利策新闻奖的得主 默里先生自己的新闻作品也获得过多次大奖 xff1a 关于亚洲的报道让他两次摘取了海外新闻出版俱乐部奖
  • VLAN 基础知识

    为什么需要VLAN 1 什么是VLAN VLAN Virtual LAN xff0c 翻译成中文是 虚拟局域网 LAN可以是由少数几台家用计算机构成的网络 xff0c 也可以是数以百计的计算机构成的企业网络 VLAN所指的LAN特指使用路由
  • 目标设定的SMART原则

    目标设定的SMART原则来源于管理大师彼得 德鲁克的 管理的实践 xff0c 有五个基本的原则 xff1a 1 目标必须是具体的 xff08 Specific xff09 2 目标必须是可以衡量的 xff08 Measurable xff0
  • 软件安全开发 - 流程规范

    写一篇软件安全开发流程分享给大家 xff0c 帮助从事软件开发 xff0c 测试 xff0c 管理的人员 xff0c 规范操作 xff0c 重视软件工程安全 现今社会存在各种网络安全事件 xff0c 比如勒索病毒导致许多网络系统瘫痪 xff
  • 读保护_混合ASIL系统中不同安全等级模块间的边界保护

    01 功能安全组件的软件开发 针对ISO 26262对功能安全软件研发的要求 xff0c AUTOSAR将功能安全需求进行了具体拆分 当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念 在AUTOSAR系统设计的架构中 xff
  • 功能安全的一些好文

    特约专栏 一篇文章带你认识功能安全 本文将结合ISO 26262 xff0c 从什么是功能安全 什么是功能安全工程师以及功能安全工程师主要做什么 xff0c 三个方面展开对功能安全的介绍 https mp weixin qq com s v
  • make和makefile

    第二十六课 xff1a Makefile设计 哔哩哔哩 bilibili 内部资料 课程简介 大连理工大学国家精品课 嵌入式软件设计是计算机 软件工程等学科的专业方向课 xff0c 是一门实践性 技术性很强的重要课程 本课程的主要任务是全面
  • acm算法有用吗?写给自己。

    acm算法有用吗 xff1f 写给自己 xff0c 也希望能帮助那些大一迷茫的人 我是一个普通二本院校即将进入大三的acmer xff0c 一般问这个问题的人都是一个acmer的失败者 xff0c 因为成功的人都去忙着学习该学习的算法了 x
  • 算法题中常用的C++ STL

    一 栈 xff08 stack xff09 stack实现了一种先进后出的数据结构 xff0c 使用时需要包含stack头文件 C 43 43 定义stack语法 xff1a span class hljs stl container sp
  • Boot Loader

    在嵌入式操作系统中 xff0c BootLoader是在操作系统内核运行之前运行 可以初始化硬件设备 建立内存空间映射图 xff0c 从而将系统的软硬件环境带到一个合适状态 xff0c 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系
  • 什么是SecOC 板端加密通讯

    板端加密通讯 Security Onboard Communication 缩写为SecOC SecOC是AUTOSAR标准中提出的针对ECU间通信安全提出的标准 CAN网络是明文传输 xff0c 广播报文 xff0c 无发送合法性校验 为
  • C++11:noexcept关键字

    1 介绍 C 43 43 11新标准引入的noexcept 运算符 xff0c 可以用于指定某个函数不抛出异常 预先知道函数不会抛出异常有助于简化调用该函数的代码 xff0c 而且编译器确认函数不会抛出异常 xff0c 它就能执行某些特殊的
  • 嵌入式应用程序设计流程

    第三十课 xff1a 应用程序设计流程 哔哩哔哩 bilibili arm linux gcc 交叉编译器 通过挂载实现程序调试 xff1a xff08 省去程序下载环节 xff09 第三十二课 xff1a 文件操作 哔哩哔哩 bilibi
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor