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 的相关文章

  • webpack中loader加载器的使用及原理(常用的loader加载器)

    webpack的loaders是一块很重要的组成部分 我们都知道webpack是用于资源打包的 里面的所有资源都是 模块 内部实现了对模块资源进行加载的机制 但是Webpack本身只能处理 js模块 如果要处理其他类型的文件 就需要使用 l
  • 如何分析AIX启动过程1

    复杂度3 5 机密度4 5 最后更新2021 05 14 AIX提供了两个帮助分析启动的工具或者模式 kernel debug boot verbose mode 前者适合单独分析某个特定的功能 模块 而后者则能帮助你全面地过一遍AIX启动
  • SpringCloud Gateway整合Spring Security Webflux的关键点(痛点解析),及示例项目

    最近公司项目需要用到后端的认证 授权 且公司项目目前是基于SpringCloud Gateway的 所以想到都是一家的产品就决定使用Spring Security了 但是在整合过程中 经历了种种磨难 所以把最终的整合关键点列出来 让需要的读
  • java spring cloud 使用nacos配置多数据源(druid)AbstractRoutingDataSource

    第一步 在nacos中加入 spring datasource master url jdbc mysql base mysql 3306 XXX characterEncoding utf8 zeroDateTimeBehavior co
  • STM32F103C8t6程序下载

    一 下载程序之前了解的内容 STM32英文手册下载 https www stmcu org cn document list index category 158 STM32的芯片上有两个管脚BOOT0和BOOT1 这两个管脚在芯片复位时的
  • itunesconnect apploader 无效段对齐问题

    伙计们 我想更新我的应用程序最新版本 但应用程序加载器一直给我同样的错误 那就是 错误 ITMS 9000 段对齐无效 此应用程序没有正确的段对齐 应使用最新版本的 Xcode 重新构建 如果您需要进一步帮助 请联系开发者技术支持 我快要疯
  • 为什么使用 uImage 而不是 zImage

    我正在尝试了解 zImage 和 uImage 之间的区别 以我的理解uImage是通过运行得到的mkimage on the Image结果它添加了一个 U Boot 包装器 我不知道它到底包含什么 其中包含header加上加载地址和入口
  • 如何制作静态链接ELF文件来加载LD_PRELOAD .so

    我有静态链接的二进制文件 ELF 文件 它没有动态段 dymsym 部分 并且不执行 LD PRELOAD 命令等 我如何创建假虚拟动态段来激活动态加载程序并执行 LD PRELOAD 命令 我如何创建假虚拟动态段来激活动态加载程序并执行
  • 如何使用 webpack 直接在 React 组件中加载 SVG?

    我想直接在我的中渲染材质设计图标NextButton使用 webpack 的组件 这是我的代码的相关部分 var NextIcon require material design icons navigation svg productio
  • 在本机反应中单击按钮时显示加载程序

    我正在尝试在我的反应本机应用程序中实现加载器动画 但单击按钮时它不会触发加载器 尽管动画已经更改为true 看看我下面的代码 componentWillMount this hideLoader showLoader gt this set
  • 获取目标c中的启动时间

    我如何在 Objective C 中获取 ios 的启动时间 有办法得到吗 不知道这是否适用于 iOS 但在 OS X 本质上是相同的操作系统 中 您将使用sysctl 这就是 OS X Unix 实用程序的工作方式uptime可以 源代码
  • 如何在 Windows 上设置 gl3w?

    我一直在寻找设置 Gl3w 的详细指南 因为我到处都找不到 首先 下载gl3w https github com skaslev gl3w 然后 下载 Python 3 x https www python org downloads 接下
  • 在 Firefox 中加载图像时显示边框和标题

    我的火狐浏览器有问题 我的网站上有很多图片 当我在 Firefox 中浏览页面时 加载图像时边框和图像标题可见 下载完成后 该边框 标题就会消失并被图像取代 这种情况只发生在火狐浏览器中 Chrome 和其他浏览器加载没有任何边框和标题的图
  • 复制迁移的目的是什么?

    背景 如果可执行文件具有在共享对象中定义的外部数据引用 则编译器将使用复制重定位并将副本放置在其 bss 部分中 本网站详细介绍了复制迁移 http www shrubbery net solaris9ab SUNWdev LLM p22
  • 初始化时设置default_url_options

    我需要强制主机进入我的 Rails 应用程序中的环境之一 我可以通过包含来使覆盖起作用 def default url options opts opts merge host gt stg my host com end 在应用程序 控制
  • 是否可以替换操作系统的Loader?有什么办法获得Loader的控制权吗?

    我只是想知道是否可以替换操作系统的加载程序 可执行程序加载程序而不是引导加载程序 Windows 是我的选择 是否有任何第三方加载程序可以修补默认加载程序 有什么方法可以让我获得对 OS Loader 的控制权吗 我的意思是 我希望它所做的
  • 使用 Visual Studio 构建 UEFI 驱动程序

    我正在寻找有关如何使用 Visual Studio 2012 项目通过 EDK2 SDK 构建 UEFI 驱动程序的建议 我试图静态链接 UefiLib lib 但惨败 我已将该库添加到链接器下的附加依赖项中 include
  • 获取在 mac 中启动时运行的 python 脚本

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

    我想创建一个仅包含服务 无活动 的应用程序 该服务必须在启动时启动 我的问题是 如果没有活动 启动接收器似乎不会调用 我用下面的例子进行了测试 我有不同的文件 MyReceiver java package com test teststa
  • 当 SystemUI 在 Android Boot 中加载时

    如何知道系统 UI 何时加载Android启动过程 状态栏和导航栏视图到底绘制在哪里 作为SystemUI是一个特权应用程序 那么它是否在启动器应用程序 主屏幕 启动之前加载 我不知道 欢迎任何建议 下面是一系列简要解释的步骤 希望能够阐明

随机推荐

  • 指令流水线

    为提高处理器执行指令的效率 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 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系