当前位置: 首页 > news >正文

IAP程序升级 与 电脑BIOS 的关系

IAP (In-Application Programming) 程序升级

        IAP程序升级是一种技术,允许设备在运行过程中更新其自身的固件或软件,而不需要外部工具或设备的介入。这种技术特别适用于嵌入式系统和物联网(IoT)设备。其主要由三部分构成,分别是bootloader,固件分区,通信接口。Bootloader负责检测和加载正确的固件分区,以及管理固件更新过程。固件分区通常包括主固件区、备用固件区等,用于存储当前运行的固件和新版本固件。通信接口用于接收新固件数据,例如通过串口、USB、以太网等。

电脑BIOS (Basic Input/Output System)

百度百科解释(bios_百度百科 (baidu.com)):

        BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。 [1]BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。 [2]BIOS是个人电脑启动时加载的第一个软件。

        其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。当今,此系统已成为一些病毒木马的目标。一旦此系统被破坏,其后果不堪设想。

二者关系 

        IAP程序升级和BIOS更新虽然在应用场景和固件性质上有明显的区别,但它们都属于固件更新的范畴。IAP程序升级更侧重于嵌入式设备的自我更新能力,而BIOS更新则是针对个人电脑和服务器系统的固件更新。两者在更新流程和技术原理上有一些相似之处,但也各有特点。

        不论是嵌入式设备中带有微控制器(MCU)的设备,还是家用笔记本电脑中带有中央处理器(CPU)的设备,二者在组成方式上都需要软件和硬件的紧密配合。原始生产的闪存(Flash)并不包含任何程序,因此如果我们想要在其上编写代码,面临的首要问题是如何将程序写入到Flash中

        许多人可能认为直接下载或烧录代码是理所当然的事情,但实际上,我们需要一段引导程序(Bootloader)来帮助我们将程序下载到Flash中。在很多情况下,大多数芯片在出厂时就已经内置了这部分引导程序,所以我们才能够自然而然地在芯片上编写我们的代码。

        引导程序(Bootloader)是一种特殊的程序,它负责启动过程以及检测和加载正确的固件分区。在嵌入式系统中,Bootloader通常负责固件更新,而在家用笔记本电脑中,BIOS或UEFI则承担了类似的职责。刚出厂的Flash芯片通常是空白的,不包含任何程序代码,为了将程序写入Flash,我们通常需要通过串口、USB、以太网等通信接口将新固件数据传输到设备上。许多现代芯片在出厂时就已经预装了一段Bootloader程序,使得用户可以直接通过简单的命令行工具或图形界面工具来更新固件。对于一些支持IAP(In-Application Programming)的设备,Bootloader还能够帮助设备自我更新,即在设备运行过程中更新其固件或软件。

        例如,一个基于STM32微控制器的物联网设备,其Bootloader可以内置在芯片中,允许用户通过串口或USB接口上传新的固件。一台笔记本电脑的BIOS可以被更新以支持新的硬件特性或修复已知的问题。

        无论是嵌入式设备还是家用笔记本电脑,它们都需要引导程序的帮助来完成程序或固件的初始加载和后续更新。引导程序在出厂时往往已经内置在设备中,这使得用户能够轻松地进行固件更新而不必深入了解底层细节。对于支持IAP的设备,引导程序还能够实现自我更新的能力,进一步简化了维护过程。

相关文章:

  • hashmap底层原理(数据结构 put原理 get原理 remove原理)
  • 【RunAsTool】解锁Windows权限:让管理员权限触手可及
  • 2023/8/7 英语每日一段
  • 智能编程新纪元:腾讯AI代码助手的高效编程体验
  • 【初阶数据结构题目】14.随机链表的复制
  • PHP最新可用获取QQ昵称API接口源码_非第三方
  • python语言day3 元组、字典、类型转换
  • Spring Boot相关知识
  • 自动化专业英语
  • 【Oracle EBS R12】第二章 P2P O2C cycle(英文版)
  • 案例开发-日程管理2第一期(超详细教程、配备图文和源代码注释,没学过也能看懂)
  • 基于腾讯云 AI 代码助手的Web端宝可梦图鉴实践记录
  • springboot的拦截器,监听器,过滤器,servlet的使用(三大组件)
  • Arduino教程(1)
  • Ubuntu配置carla docker环境
  • [译]CSS 居中(Center)方法大合集
  • CentOS7简单部署NFS
  • Git学习与使用心得(1)—— 初始化
  • idea + plantuml 画流程图
  • npx命令介绍
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • spring cloud gateway 源码解析(4)跨域问题处理
  • SQLServer之索引简介
  • storm drpc实例
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 从setTimeout-setInterval看JS线程
  • ------- 计算机网络基础
  • 前端面试之CSS3新特性
  • 驱动程序原理
  • 使用SAX解析XML
  • 自制字幕遮挡器
  • 06-01 点餐小程序前台界面搭建
  • ​TypeScript都不会用,也敢说会前端?
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.13) SiK无线电高级配置(五)
  • (13)DroneCAN 适配器节点(一)
  • (19)夹钳(用于送货)
  • (c语言)strcpy函数用法
  • (k8s)Kubernetes本地存储接入
  • (LeetCode 49)Anagrams
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (第一天)包装对象、作用域、创建对象
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二开)Flink 修改源码拓展 SQL 语法
  • (论文阅读30/100)Convolutional Pose Machines
  • (四)图像的%2线性拉伸
  • (一)Linux+Windows下安装ffmpeg
  • (正则)提取页面里的img标签
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .net 微服务 服务保护 自动重试 Polly
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net6+aspose.words导出word并转pdf