Bootloader [转]

嵌入式操作系统——Bootloader概述 Bootloader是硬件启动的引导程序,是启动操作系统的根本;是在操作系统内核或用户程序运行之前的一段小程序;通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用准备好环境;在一般典型的系统中, 整个系统的加载启动任务就完全由Bootloader来完成。U-boot (Universal Boot Loader) 是德国DENX小组开发的用于多种嵌入式CPU的Bootloader程序。遵循GPL条款。 阅读详情

Bootloader

Lucia 发表于 2007-1-4 19:53:00
BootLoader的概念
    BootLoader是系统加电启运行的第一段软件代码.回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序。引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中 然后跳转到内核的入口点去运行,也即开始启动操作系统。
    而在嵌入式系统中,通常并没有像BIOS那样的固件程序(有的嵌入式系统也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成.比如在一个基于 ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址 0x00000000开始执行.而在这个地址处安排的通常就是系统的BootLoader程序。
    简单地说BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如 S3C44B0),从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。对于一个嵌入式系统来说,可能有的包括操作系统,有的小型系统也可以只包括应用程序,但是在这之前都需要BootLoader为它准备一个正确的环境。通常,BootLoader是依赖于硬件而实现的,特别是在嵌入式领域,为嵌入式系统建立一个通用的BootLoader是很困难的。当然,我们可以归纳出一些通用的概念来,以便我们了解特定BootLoader的设计与实现。
u BootLoader的移植和修改
    每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,也还是需要作一些必要的修改。
u BootLoader的安装
    系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如,S3C44B0在复位的都从地址0x00000000取它的第一条指令。而嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上,因此在系统加电后,CPU将首先执行BootLoader程序。也就是说对于基于S3C44B0的这套系统,我们的BootLoader是从0地址开始存放的,而这块起始地址需要采用可引导的固态存储设备如FLASH。
u 用来控制BootLoader的设备或机制
串口通讯是最简单也是最廉价的一种双机通讯设备,所以往往在BootLoader中主机和目标机之间都通过串口建立连接,BootLoader程序在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。当然如果认为出口通讯速度不够,也可以采用网络或者USB通讯,那么相应的在BootLoader中就需要编写各自的驱动
u BootLoader的启动过程            
    多阶段的BootLoader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的 BootLoader大多都是2阶段的启动过程,也即启动过程可以分为 stase1和stase 2两部分,具体功能将在下一节介绍。
u Boot Loader的操作模式
    大多数BootLoader都包含两种不同的操作模式。“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。
    启动加载(Boot loading)模式:这种模式也称为“自主”(Autonomous)模式,也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下.
    下载(Down loading)模式:在这种模式下 目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:下载应用程序、数据文件、内核映像等.从主机下载的文件通常首先被BootLoader保存到目标机的RAM中然后再被BootLoader写到目标机上的固态存储设备中。BootLoader的这种模式通常在系统更新时使用。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。
    在教学系统中提供的BootLoader中没有实现自主模式,可以通过修改代码来实现该功能。
u BootLoader与主机之间进行文件传输所用的通信设备及协议
最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输可以简单的采用直接数据收发,当然在串口上也可以采用xmode/ymode/zmode协议以及在以太网上采用TPTP协议。
此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和TFTP协议来下载文件时,主机方必须有一个软件用来提供TFTP服务。
Bootloader详解,理解Bootloader看这篇就够了 这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员 阅读详情

相关推荐

Arduino通过USB转TTL无BootLoader烧录程序的两种办法

Arduino通过USB转TTL无BootLoader(引导程序)烧录程序的两种办法 注意 (这个实验室基于stm32duino的,avr单片机并不直接通用,不过如果你准备尝试使用串口来给avr单片机(就是Arduino官方出的几款Arduino)烧录Arduino的BootLoader,建议直接放弃因为avr单片机并不支持直接使用串口上传程序,而且Arduino的BootLoader好像目的也就是让Arduino能够直接串口烧录程序。 也就是说你不能在没有BootLoader的情况下烧录avr-Ardui

云雾海的各种笔记 1万+

BootLoader介绍

1.BootLoader的引入 2.BootLoader的启动方式 3.BootLoader的结构和启动过程 4.自己写一个BootLoader

qq_51118175的博客 2万+

STM32免BootLoader串口烧录实战:USB转TTL的两种高效方案

本文详细介绍了STM32免BootLoader串口烧录的两种高效方案,重点使用USB转TTL模块实现快速程序烧录。通过硬件准备、接线要点、Arduino IDE配置及二进制文件直接烧录等实战步骤,帮助开发者解决BootLoader损坏、芯片空白等问题,提升开发效率。特别适合STM32F1系列开发者和资源紧张的项目应用。

weixin_42520909的博客 363

BootLoader这个玩意

有了前面的概念和源码描述,这里进行最后的总结。1)初始化看门狗。2)初始化时钟。3)初始化串口。4)设置CPU模式的栈指针,进入SVC模式。5)初始化RAM。6)初始化MMC控制器,并将内核映像从MMC设备中读到0x48000000处的RAM地址中。7)清除BSS段。8)做好调用内核前的准备工作。9)跳转到RAM中的内核的第一条指令,引导过程完成。(SVC和SYS的区别知道吗?我们在UBoot的内容学习过)

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5546

告别BootLoader依赖:手把手教你用USB转TTL给STM32小蓝板烧录Arduino程序

本文详细介绍了如何通过USB转TTL模块为STM32小蓝板烧录Arduino程序,无需依赖BootLoader。从硬件接线到软件配置,手把手教你快速实现程序烧录,特别适合初学者和快速原型开发。

weixin_33737774的博客 466

VMware Workstation 不可恢复错误:(vcpu-1) Exception 0xc0000005 解决方案

1、错误信息如下:VMware Workstation 不可恢复错误:(vcpu-1) Exception 0xc0000005(access violation) hasoccurred.2、错误截图如下:3、错误原因分析:Exception 0xc0000005是访问冲突错误,通常指程序试图访问它没有权限的内存地址。在虚拟机环境中,这可能由多种因素引起,例如虚拟机配置错误、宿主机资源冲突、VMware软件问题或系统文件损坏。

m0_65065082的博客 4366

嵌入式基础(四)之BootLoader

因此,为了让Bootloader能够在不同的嵌入式板卡上运行,可能需要进行适当的参数配置和源代码的调整。等,从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后被Bootloader写到目标机的Flash内的固态存储设备中。通过交叉编译,可以利用开发环境的资源进行编译,生成在目标平台上运行所需的较小且高效的可执行文件。BootLoader的Stage 1会从预定义的存储设备(例如硬盘、闪存)中读取Stage 2的引导程序,并将其加载到预先分配的内存空间(RAM)中。

ZYS7078的博客 5658

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧

本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。

o0p1q2r3的博客 551

CH340G USB转串口实现Bootloader更新

本文介绍如何利用CH340G USB转串口芯片与MCU内置Bootloader,实现低成本、免驱的固件远程更新。通过DTR/RTS信号自动控制启动模式,结合可靠的帧传输机制,适用于生产烧录与售后升级,具备高实用性和广泛兼容性。

weixin_42602726的博客 1204

【现代信号处理】01 -概率论与随机过程回顾

概率论与随机过程回顾 文章目录概率论与随机过程回顾1. 统计模型的相关概念1.1 统计实验(不确定性)1.2 样本点1.3 样本空间Ω1.4 概率1.5.统计模型是先验的2. 概率和统计的差异2.1 联系2.2 差异2.3.1 概率和统计问题的三要素2.3.1.1 model-模型2.3.1.2 data-数据2.3.1.3 decision-决策2.3.2 关系图3. 样本空间的重要性3.1 贝朗特悖论3.1.1 解法一3.1.2 解法二3.1.3 解法三3.2 结论4.概率相关的概念4.1 随机变量4.

qq_41741344的博客 1405

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 640

ArmLinux BOOTLOADER全程详解[转]

网上关于Linux的BOOTLOADER文章不少了,但是大都是vivi,blob等比较庞大的程序,读起来不太方便,编译出的文件也比较大,而且更多 的是面向开发用的引导代码,做成产品时还要裁减,这一定程度影响了开发速度,对初学者学习开销也比较大,在此分析一种简单的BOOTLOADER,是在三 星公司提供的2410 BOOTLOADER上稍微修改后的结果,编译出来的文件大小不超过4k,希望对大家有

scancsdn的专栏 491

VHDL语法学习笔记:一文掌握VHDL语法

今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货。 VHDL语法学习笔记 一、VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于 1982 年。 1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本 IEEE-1076(简称 87 版)...

2万+

Bootloader简介及UBOOT移植 (转)

Bootloader简介及UBOOT移植 1. 引言 嵌入式系统的应用程序一般都被烧录到FLASH或EEPROM或ROM中。在开发的过程中需要 不断地讲程序下载到目标板上运行调试。如果每次都要将程序烧录到FLASH中,一则FLASH 的烧录速度慢(擦除、编程),二则在FLASH中运行时,调试器无法下断点,达不到方便调 试的目的。三则频繁烧录降低FLASH的使用寿命。 一种较好的方法就是将应用程序下

小伟 5906

基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的单相整流系统中PR(比例谐振)控制器的设计与实现方法。首先阐述了PR控制器相较于传统PI控制器的优势,能够有效消除交流信号跟踪中的稳态误差。接着系统讲解了PR控制器的传递函数原理、实用型设计(带带宽)及参数整定方法。通过Simulink建模步骤,包括主功率电路搭建、电压外环PI设计、电流指令生成、PR控制器实现(推荐MATLAB Function方法)和SPWM调制等关键环节。仿真对比显示PR控制在电流跟踪精度(THD仅1.9%)、功率因数(0.998)和动态响应(突变恢

amy_mhd的博客 689

用一台笔记本跑起 SAP HANA:从 express edition 的定位,到本地硬件门槛与安装实操

SAP HANA是面向个人开发者、初创团队与教学科研场景的精简发行版,保留了in-memory列存引擎、SQLScriptAFLGraphSpatial等核心能力,可免费用于开发与一定规模的生产用途(上限为 32 GB RAM)。它最大的特征,是能在资源受限的laptop或上快速落地,让你在本地完成从建模、开发到测试的完整闭环。SAP在交付形态上,提供了多种安装包:预配置的VM OVA、面向Linux的二进制安装包,以及历史上出现过的容器化方案;你可以按现有设备与熟悉的运维方式择优选择。官方文档把VM。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 533

stm32 通用bootloader_【转】STM32的Bootloader详解

/********************************************************************************* File Name : main.c* Description : Main program body**************************************************...

weixin_39801714的博客 685

详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

   本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示。    一、 A*算法简介       A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。      公式表示为: f(n)=g(n)+h(n),其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,g(n) 是在状态空间中从初始状态到状态n的实际代价,h(n) 是从状态n到目标状态的最佳路径的估计代价。

慕羽★的博客 7万+

AVR之BOOTLOADER技术详解(转的)

AVR之BOOTLOADER技术详解(转的)   |字号 订阅 ATmega128具备引导加载支持的用户程序自编程功能(In-System Programming by On-chipBoot Program),它提供了一个真正的由MCU本身自动下载和更新(采用读/写同时"Read-While-Write"进行的方式)程序代码的系统程

马道人生 1810

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

高通平台Bootloader启动流程【转】

本文转载自:http://blog.youkuaiyun.com/fang_first/article/details/49615631 ====================基本知识======================= LK是(L)ittle (K)ernel的缩写。 高通平台android普遍采用LK作为其bootloader,LK是一个开源项目。但是,LK只是整个系统的引导部...

1014

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

BootLoader代码简析(转)

定义:首先,BootLoader是一段单独的程序代码(功能相当与PC机的BIOS),它存放于目标平台的非易失存储介质中,如ROM或Flash。 作用:在开发CE的过程中,它主要用于启动硬件和下载IMAGE到目标板上,并有一定的监控作用。 流程:(图传不上来) 分析: Main函数 是BootLoader里面的主函数,而BootloaderMain又是Main函数里面主要个函数, 先就BootloaderMain里面的函数做简单的介绍:(只分析流程不做代码评估) 1.K

newstime的专栏 913

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

bootloader烧写(转)

<br />关于bootloader,先简要地总结一下。经过了第一个阶段的学习,对bootloader有了一个整体的认识,其实把它当作一个功能单元就可以了,职责就是完成从硬件加电到操作系统内核运行之前的所有工作,这些工作包括硬件检测、硬件初始化、加载kernel。这些工作怎么完成呢?按照功能分为两个部分比较合适,硬件检测和初始化功能实现作为stage1;加载kernel作为stage2。stage1完全依赖于硬件,这一部分用汇编语言实现;stage2与操作系统有关,一般用C语言来实现。在嵌入式系统的开发过程

jayis520的专栏 1044

Bootloader初始化启动过程分析【转】

作者:谷丰,您可以通过gufeng77@126.com和他取得联系。转载请包含上述内容。 今天我们讨论一下PXA255芯片的bootloader的初始化过程,也就是start_xscale.S的汇编文件中包含的内容。E1开发板的硬件配置是这样的,400M Turbo模式运行的PXA255处理器,32M Flash和64M SDRAM。start_xscale.S包含的主要内容是系统上电后的

thunderlast的专栏 1591
上一篇: 开始我的Ubuntu之旅(一)
下一篇: vmware下的redhat9 怎么使用usb转的串口
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值