Boot Loader

2023-05-16

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序

(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序 [1]  

bootloader - 知乎bootloader概念:Bootloader 是应用程序运行前执行的一段固化在微控制器中的代码程序。Bootloader 是底层硬件与上层应用软件之间的一个中间接口软件。BootLoader 独立于用户应用程序,可以被编译、连接并下载到 EC…https://zhuanlan.zhihu.com/p/271663577

第二十八课:基于Linux的嵌入式平台_哔哩哔哩_bilibili内部资料【课程简介】 大连理工大学国家精品课。嵌入式软件设计是计算机、软件工程等学科的专业方向课,是一门实践性、技术性很强的重要课程。本课程的主要任务是全面介绍基于ARM/嵌入式Linux操作系统的GNU C语言程序设计思想、方法,以及基于STM32处理器和Proteus的嵌入式仿真技术。通过本课程的学习,使学生掌握嵌入式软件设计的基本流程和方法。, 视频播放量 320、弹幕量 0、点赞数 8、投硬币枚数 2、收藏人数 14、转发人数 1, 视频作者 EP自留地, 作者简介 每天进步一点点......,相关视频:第一课:嵌入式系统概述,第二十九课:BootLoader,第十八课:Linux的网络命令,第十七课:Linux的基本操作,第六课:NumPy库入门-NumPy的数组对象: ndarray,通信模组基础知识(一),认识蜂窝通信,第三课:Anaconda IDE的基本使用方法,第十六课:Linux的shell,第十五课:Linux简介,第六十八课:STM32简介https://www.bilibili.com/video/BV1eN4y1M7f9/?spm_id_from=333.788&vd_source=413c648c94462f7d61e4b4cf0840ec77BootLoader简介-汽车工程师是怎么更新ecu软件的? - 知乎bootloader是一段固化在放在FLASH中的 程序加载代码 ,连接底层硬件与应用程序。 主要功能是完成微处理器与周边电路正常运行的初始化工作,建立内存空间的映射,判断系统能否运行,将系统的软硬件环境带到一个合适…https://zhuanlan.zhihu.com/p/583069005

 

引导程序的主要功能是做一部分系统初始化的工作,从flash中把操作系统内核复制到RAM中,然后把系统控制权交给操作系统内核。

操作系统主要功能:为我们管理硬件,并给用户提供编程接口,和操作接口

系统启动之后Boot Loader会立刻运行,进行系统的初始化工作,把操作系统内核从flash复制到RAM中,接下来把控制权交给存在于RAM中的系统内核,此后系统的运行和Boot Loader就没有关系了。后面完全由系统内核来控制。

文件系统里包含了常用的命令和用户的应用程序等。

 

 

 

 

 

 

 

 

 

 

 

在电脑中bios的目的是启动Windows操作系统,BIOS从硬盘上面读入内核,

Bootloader的最终目的是启动内核,Bootloader实质上就是一个单片机程序,只不过是一个比较复杂的单片机程序而已,bootloader是从flash上面读入内核,读出来之后放到SDRAM当中,然后启动内核,因此首先uboot至少要具有三个功能分别是

1:读FLASH

2:初始化SDRAM并且写SDRAM

3:要想启动内核。

功能复杂的用汇编是完不成的,要用C函数才能完成,那么显然要调用C函数,要调用C函数就要设置栈用来保存一些返回地址和参数,因此uboot还要设置栈,所谓设置栈就是让SP指针指向某块内存,设置好栈之后就可以调用C函数,

除此以外还要有两个基本的功能:

1:初始化时钟,刚上电的时候,时钟频率是12mhz,最大的运行时钟频率是400MHZ,

2:关闭看门狗

另外为了开发方便我们还有加入一些功能

1:我们想通过串口控制开发板,因此uboot还要初始化串口

2:我们在开发的时候有的时候需要下载裸机程序或者下载内核下载根文件系统,因此,我们的uboot还要具有写flash以及支持USB、支持网络的功能,这样我们才能下载,    

Uboot有两种模式

  1. 下载模式:可以用来下载uboot,内核以及根文件系统
  2. 引导模式:可以用来引导内核启动

Uboot也是需要用make编译的,

Uboot可以用jlink进行烧写,不过jlink只能烧写norflash,也就是说jlink只能把uboot烧写到norflash里面。

要想烧写uboot到nandflash,那么就要先利用jlink把uboot烧写到norflash里面,然后在串口里面利用uboot把uboot烧写到nandflash里面。

具体就是先在串口输入命令,然后利用dnw进行下载。
 

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

Boot Loader 的相关文章

  • 毕业设计源码基于Spring Boot的旅游管理系统的实现

    摘 要 社会的发展和科学技术的进步 xff0c 互联网技术越来越受欢迎 网络计算机的 交易 方式逐渐受到广大人民群众的喜爱 xff0c 也逐渐进入了每个 用户 的使用 互联网具有便利性 xff0c 速度快 xff0c 效率高 xff0c 成
  • Bootrom概述

    1 Bootrom 是指on chip bootrom 在CPU芯片内部 内嵌有小的boot程序 bootloader 类似于PC机主板上的BIOS的存储区域 2 Bootloader怎么得到 如果对开发板有些改动 还能使用开发板的boot
  • AIX系统启动

    复杂度2 5 机密度3 5 最后更新2021 04 23 AIX的启动过程粗略来看 大概是这样的 其中有通过硬件 微码 只能调整少量设置 完成的过程 也有通过操作系统软件 可修改 完成的功能 to be continue 关于SMS的介绍在
  • IAP 程序 跳转问题

    问题 STM32F407 未加下面 清除所有中断标志位 IAP无法跳转到APP 原因 开了定时器 配置了中断 在执行时为清除中断 导致程序无法跳转 void flash load application uint32 t applicati
  • 论文理解【Offline RL】——【BooT】Bootstrapped Transformer for Offline Reinforcement Learning

    标题 Bootstrapped Transformer for Offline Reinforcement Learning 文章链接 Bootstrapped Transformer for Offline Reinforcement L
  • SpringCloud Gateway整合Spring Security Webflux的关键点(痛点解析),及示例项目

    最近公司项目需要用到后端的认证 授权 且公司项目目前是基于SpringCloud Gateway的 所以想到都是一家的产品就决定使用Spring Security了 但是在整合过程中 经历了种种磨难 所以把最终的整合关键点列出来 让需要的读
  • STM32启动BOOT0 BOOT1设置方法

    转载自 https www jianshu com p 38c4a90bac19 不同的下载方式对应STM32启动方式也不同 如下图是STM32三种启动方式 第一种启动方式是最常用的用户FLASH启动 正常工作就在这种模式下 STM32的F
  • java spring cloud 使用nacos配置多数据源(druid)AbstractRoutingDataSource

    第一步 在nacos中加入 spring datasource master url jdbc mysql base mysql 3306 XXX characterEncoding utf8 zeroDateTimeBehavior co
  • 如何在 Windows 上设置 gl3w?

    我一直在寻找设置 Gl3w 的详细指南 因为我到处都找不到 首先 下载gl3w https github com skaslev gl3w 然后 下载 Python 3 x https www python org downloads 接下
  • GNU GAS:标签没有相对引用

    我正在写一个小引导扇区用于学习目的 这是boot S code16 text movw 0xB800 ax 0xB000 is the text screen video memory movw ax es set it as the es
  • 为什么根文件系统被加载到ramdisk中?

    我正在研究Linux的启动过程 我遇到过这样一句话 RAM 比软盘快几个数量级 因此 ramdisk 的系统运行速度很快 无论如何 内核都会将根文件系统加载到 RAM 中来执行它 所以我的问题是 如果内核将根文件系统加载到 RAM 中 为什
  • 初始化时设置default_url_options

    我需要强制主机进入我的 Rails 应用程序中的环境之一 我可以通过包含来使覆盖起作用 def default url options opts opts merge host gt stg my host com end 在应用程序 控制
  • AS3:如何从事件侦听器功能中的 LoaderInfo 获取动态加载程序 URL?

    我正在加载许多图片 并使用数组来执行此操作 loader i load new URLRequest picture i 我的事件监听器功能是这样启用的 loader i contentLoaderInfo addEventListener
  • 386+ 处理器中的复位向量

    维基百科页面为重置向量 http en wikipedia org wiki Reset vector说 对于 386 处理器 复位时 CS 寄存器选择器部分的值为 F000h CS 寄存器基址部分的值为 FFFF0000h 复位时 IP
  • 更改 Windows DLL 加载顺序? (加载顺序,不是搜索顺序)

    假设我有一个可执行文件 app exe 我在此可执行文件中使用 2 个不同的第 3 方 DLL foo dll bar dll并且应用程序必须隐式链接到这些 DLL 也就是说我不能使用 LoadLibrary加载它们 注 并不是说我不能打电
  • VA(虚拟地址)和RVA(相对虚拟地址)

    作为链接器输入的文件称为目标文件 链接器产生一个图像文件 它又被加载器用作输入 来自 Microsoft 可移植可执行文件和通用对象文件格式规范 RVA 相对虚拟地址 在图像文件中 项目的地址 加载到内存后 图像文件的基地址 从中减去 商品
  • JavaFX 中加载器实例化抛出空指针

    我已经声明了两个 fxml 文件 并为每个文件声明了一个控制器 根布局控制器是一个控制器根布局 fxml and 概览控制器是一个控制器概述 fxml rootlayout 有带有文件打开项的菜单栏 overviewcontroller 有
  • 获取在 mac 中启动时运行的 python 脚本

    如何让 python 脚本在每次计算机启动时运行 如何在启动时运行 shell 脚本 OSX http www osxfaq com Tutorials LearningCenter HowTo Startup index ws 在该脚本中
  • 启动时启动服务但不进行任何活动

    我想创建一个仅包含服务 无活动 的应用程序 该服务必须在启动时启动 我的问题是 如果没有活动 启动接收器似乎不会调用 我用下面的例子进行了测试 我有不同的文件 MyReceiver java package com test teststa
  • 普通的 x86 或 AMD PC 是直接从 ROM 运行启动/BIOS 代码,还是先将其复制到 RAM? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道现代计算机已经修改了哈佛架构 它们可以从保存数据的地方以外的地方读取指令 这一事实是否允许它们直接从 ROM 芯片获取指令 他们是先

随机推荐

  • 指令流水线

    为提高处理器执行指令的效率 xff0c 把一条指令的操作分成多个细小的步骤 xff0c 每个步骤由专门的电路完成的方式 指令流水线是为提高处理器执行指令的效率 xff0c 把一条指令的操作分成多个细小的步骤 xff0c 每个步骤由专门的电路
  • 何为CPU的亲和性

    CPU的亲和性 xff0c 进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性 xff0c 进程迁移的频率小就意味着产生的负载小 亲和性一词是从affinity翻译来的 xff0c 实际可以称为CPU绑定 在多核运
  • Docker 快速入门

    x1f389 Docker 简介和安装 Docker 快速入门 https blog csdn net weixin 45043334 category 11863858 html https blog csdn net weixin 45
  • 如何提高Linux的实时性

    QNX是黑莓旗下的一款微内核实时操作系统 xff0c 是全球第一款通过ISO 26262 ASIL levelD安全认证的车载操作系统 xff0c QNX是一个分布式 嵌入式 可规模扩展的实时操作系统 它遵循POSIX 1 程序接口 和PO
  • 自旋锁和互斥锁的区别

    面试官 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 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系