关于固件

固件(Firmware)就是写入EROM或EPROM(可编程只读存储器)中的程序,通俗的理解就是“固化的软件”,台港澳称为“韧体”。更简单的说,固件就是BIOS的软件,但又与普通软件完全不同,它是固化在集成电路内部的程序代码,负责控制和协调集成电路的功能。固件只存在于数字电路当中,模拟电路是没有的。固件(具有软件功能的硬件),是MP3随身听内部的一套核心程序,它包括了对音乐的解码、界面控制、显示各种提示信息以及通过线路与电脑连接等功能,可以说是非常强大。有可能出现BUG,升级可以解决bug,甚至是能否加入新功能的关键。

工作原理/固件 

 

固件
固件图册

固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行升级操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM(Erasable Programmable ROM),EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和升级。

 

技术性能/固件 

固件可以说是神经中枢,也可以称作COMBO的操作系统,它包括很多模块:驱动、控制、解码、传送、检测……,只有在它的控制下COMBO才能正常工作。同时,固件还带有许多附加功能,如纠错技术、安全刻录技术、播放控制技术等。
实际上,COMBO光驱固件中的关键技术就是对各种盘片的识别,而这是通过识别CD、CD-R(W)和DVD盘片在数据凹槽的密度与盘片的化学层的不同完成的。当把盘片放入光驱中,光驱收到操作命令后,含有固件的控制芯片会发出指令,激光头根据指令依次发出DVD读取、CD-ROM读取以及CD-R写入、CD-RW擦写的四种激光试探,如果收到反馈则判断它是何种类别的盘片。按照这一操作程序,一般DVD-ROM盘片需要一次识别,CD盘片需要两次识别,而CD-R和CD-RW则要经过三次。很显然,固件的制作水平决定着COMBO光驱的质量。
由COMBO光驱中可以看出,硬件设备的固件与它的硬件有着几乎相等的地位,而在某些程度上来说固件可能更重要一些。因为只有编写出出色的固件程序才可以更加充分、巧妙的发挥硬件的作用,而且优秀的固件还可以弥补一些硬件上的缺陷。

应用/固件 

哪些数码设备有固件
其实任何数码设备都有固件,只是我们有时忽略它的存在而已。
先举一些常见的例子:手机、数码相机、mp3、mp4、路由器、电子书、交换机、猫、PSP、PS3、NDS、XBOX、U盘、主板、打印机的BIOS(BIOS就是一种固件)、显卡的BIOS。
以上产品的固件也许略有耳闻。但下面设备的固件很多人就没听说过了。
鼠标、显示器、光驱、硬盘、键盘、数码卫星接收器、GPS终端、精密的电子仪器(比如核磁共振仪)等等。
固件既然是软件,就有大小之分。大的可有几百兆,小的也许只有几K,甚至不足1K。
为什么很多设备都没听说过有固件的说法呢?因为有些设备,在硬件上会出问题,而在软件上(即固件)永远都不会出问题,而且这些固件对于普通用户是无法更新的(或者更新的技术难度比较大)。它距离我们太遥远,所以被我们忽略掉而已。
对于独立可操作的电子产品,固件一般指它的操作系统(“担任着一个数码产品最基础、最底层工作的软件才可以称之为固件”,这和操作系统的定义很一致)。比如PSP的固件,就是指PSP 的操作系统。同理,IPHONE的固件也是其操作系统,路由器的固件就是路由器的操作系统,MP4的固件就是MP4的操作系统等。
而对于非独立的电子产品,比如硬盘、鼠标、BIOS、光驱、U盘等设备,固件就是指其最底层的,让设备得以运行的程序代码。

产品升级/固件 

虽然以“固件”为名,但不管怎么说,它还是应当被我们理解为软件,并且由于目前集成电路的进步,升级固件也变得越来越简单,越来越没有危险,固件程序与我们通常所说的程序的区别已经越来越小。
在早期,升级固件主要是为了解决一些Bug及兼容性问题。而随着信息时代的来临,厂商的设计很难全面的满足客户需求,更多的厂商把升级固件提供更多更新的功能做为附加值来提供给用户。因此,我们可以对固件升级做以下总结:
1.在产品发布之后,厂家对Firmware作了进一步的优化和创新,使之能以更佳的状态工作。进行固件升级后,可以带来性能上的提升。
2.产品在生产出来之后,随着周围所使用的软、硬件环境的改变及更新,产品对于许多新的硬、软件将有可能出现不兼容现象。厂家通过更新Firmware文件,使硬件能兼容更多、更新的软、硬件,不断增强产品的兼容性。
3.在原有的硬件基础上,厂家开发出了新的功能,对于原有的产品,只须更新Firmware就可以增加新的功能。
4.对于任何已生产的软、硬件,都有可能存在一些缺陷,所以,厂家可以通过更新Firmware来修正以前版本中存在的错误、漏洞或不足。

方法步骤

固件升级,有时也称固件刷新,刷写,重写,烧录或刷机,是指把新的固件写入芯片中,代替原有的固件的过程。

一般流程

因为数码产品家族庞大,其固件的种类也是数不胜数的。每种数码产品的固件升级的方法都是不同的。因此没有固定的教程给大家。
这里只给出比较通用的思路。
1.从官网下载新的固件版本以及固件升级软件,保存至电脑。
2.把需要刷新的设备连接电脑。
4.用刷新工具载入新的固件,点击刷新,等待完成。
5.关闭刷新程序,刷新结束。

注意事项

虽然升级很简单,但是还是有些要点应该注意,因为毕竟升级固件是有一定风险性的,所以在升级前和升级中,要谨慎小心。
1.从设备的官网上阅读升级固件的教程。官网一般会有详细的说明。
2.固件文件和刷新固件的程序一定要从官方或者可信度高的论坛下载,不能从小网站下载,且一定要和待刷新的硬件型号完全吻合。
3.备份原有的固件,这可以防止在升级错误或者不满意新版固件时回退到原有版本。
4.保存新的固件文件,虽然多数产品都可以实现网络直接升级,但下载到计算机上再升级的可靠性要高得多。
5.关闭其他软件,为防止升级过程受到其它软件的干扰,最好暂时关闭不需要的软件,特别是杀毒软件。
6.在整个刷新过程中,绝对不可以断电,通常断电设备会损坏,需要送回原厂刷机。
7.在升级之前,禁用系统的屏幕保护及电源管理。
PS:本篇文字仅适用于一般情况。特殊情况除外。比如:PSP刷机,主要的目的是破解。破解固件的刷写不可能在官网上找到任何说明和下载。IPHONE的刷机也是如此。MOTO E680系的手机官网上是没有任何刷机说明的。另外刷机不一定要在WIN下刷。刷BIOS,在DOS下更为安全。有些设备本身有刷新工具,不需要额外在电脑上安装刷新工具。只要把高版本的固件下载好,设备会引导用户刷新。

在MCU上的固件更要注意,烧录器烧录不进去程序,很可能与此有关,要么更换新版本烧录器,要么重新刷新固件,但是有些是固定在里面了,无法刷新或更改。

 

转载于:https://www.cnblogs.com/zhugeanran/p/9402698.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React-Native 指定模拟器RUN-IOS

react-native run-ios --simulator "iPhone 7” 转载于:https://www.cnblogs.com/smzd/p/10185263.html

vue和element-ui使用

上一篇已经创建好一个vue项目。https://mp.csdn.net/postedit/80926242 这一篇主要是创建一个vue项目并结合饿了么框架element-ui。 1.先创建vue项目,我准备把项目放在e盘下:E:\Work\RegisterProject; 命令行进入这个目录: 创…

javaweb学习6——自定义标签

声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp-gacl/p/3916946.html https://www.cnblogs…

goland 实用键

代码补全 option command v转载于:https://www.cnblogs.com/smzd/p/10313417.html

关于Mysql java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)的问题...

问题所在: 1.连接数据库一个是密码是否正确, 2.driver是否对, 3.有么有jar包冲突,转载于:https://www.cnblogs.com/java-123/p/9403412.html

vscode配置vue环境

一、安装VSCode、NodeJS VSCode:https://code.visualstudio.com/ NodeJS:https://nodejs.org/en/ 二、打开VSCode,安装常用插件 如图所示(安装后重新加载即可): 三、项目中添加.vscode文件夹,文件夹中添…

秒杀核心设计(减库存部分)-防超卖与高并发

商品详情页面的静态化,varnish加速,秒杀商品库独立部署服务器这种就略过不讲了。只讨论库存部分的优化 mysql配置层面的优化可以参考我的这篇文章 《关于mysql innodb引擎性能优化的一点心得》 重点设计在数据库层面。 2张表: 第一张&#xf…

go strconv

strconv是golang用来做数据类型转换的一个库。 介绍下strconv最常用的两个方法, 没有解释语言那么自在可以str(int),int(string), 那还算简练。 num, err : strconv.Atoi("-42") str : strconv.Itoa(-42)转换换成bool类型. b, err : strconv.ParseBool("true&qu…

django配置templates、static、media和连接mysql数据库

1.模板文件 # templates配置 if os.path.exists(os.path.join(BASE_DIR, templates)) is False:os.mkdir(os.path.join(BASE_DIR, templates)) TEMPLATES [{# 模板引擎,内置的模板引擎有:# 1. django.template.backends.django.DjangoTemplates# 2. dj…

vue调用顺序(初学版) index.html → main.js → app.vue → index.js → components/组件 测试

关于它是怎么调用运作的:https://mp.csdn.net/postedit/86134414 一. 准备工作: 1.下载webstorm,安装vue。 2.创建项目,cd到要放项目的文件夹下 vue init webpack vue_test 3.安装各种包 npm install 4.运行 cd vue_test …

web开发:jquery之DOM

一、文档结构 二、文档操作 三、文档操作案例 四、form表单 五、正则 六、form案例 一、文档结构 jsvar $sup $(.sup);console.log($sup.children()); // 子们console.log($sup.parent()); // 父console.log($sup.prev()); // 上兄弟console.log($sup.next()); // 下兄弟c…

NO.8:自学python之路------并行socket网络编程

摘要 一到放假就杂事很多,这次的作业比较复杂,做了一个周,进度又拖了。不过结果还不错。 正文 粘包 在上一节中,如果连续发送过多数据,就可能发生粘包。粘包就是两次发送的数据粘在一起被接收,损坏了数据的…

vue项目中主要文件的加载顺序(index.html、App.vue、main.js)

先后顺序: index.html > App.vue的export外的js代码 > main.js > App.vue的export里面的js代码 > Index.vue的export外的js代码 测试的页面代码块: 文件的加载先后顺序: Index.vue的mounted()中的输出没有执行。why&#…

Http请求报头设置(C#)

1、添加一个SetHeaderValue方法: public static void SetHeaderValue(WebHeaderCollection header, string name, string value) { var property typeof(WebHeaderCollection).GetProperty("InnerCollection",BindingFlags.Instance | BindingFlags.NonP…

vue-cli3使用cdn引入

1. index.html引入&#xff1a; <script src"https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js"></script> <script src"https://cdn.bootcss.com/moment.js/2.20.1/locale/zh-cn.js"></script>2. vue.config.js配置&…

vue常用属性

Vue实例常用属性 1.数据 data:Vue 实例的数据对象 components&#xff1a;Vue实例配置局部注册组件 1.类方法 computed:计算属性 watch&#xff1a;侦听属性 filters&#xff1a;过滤器 methods:Vue实例方法 render&#xff1a;渲染函数&#xff0c;创建虚拟DOM 1.生命周期 c…

凸包算法

转载自&#xff1a;https://blog.csdn.net/bone_ace/article/details/46239187 凸包问题的五种解法 2015年05月29日 17:58:51 阅读数&#xff1a;33660前言&#xff1a; 首先&#xff0c;什么是凸包&#xff1f; 假设平面上有p0~p12共13个点&#xff0c;过某些点作一个多边形&a…

一个优雅的占位图解决方案。适用于 UITableView 和 UICollectionView。

FMListPlaceholder 项目地址&#xff1a;https://github.com/yfming93/FMListPlaceholder 一个优雅的占位图解决方案。适用于 UITableView 和 UICollectionView。 一行代码处理空列表占位图逻辑 0x001 与其他的同类三方库对比的优点&#xff1a; 首次进入列表占位图是不显示的。…

es7 async 前置依赖

https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined 移动端 px2rem-loader 转载于:https://www.cnblogs.com/smzd/p/10560176.html

vue中 关于$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运行 fn&#xff1b; 例如&#xff1a;子组件&#xff1a; <template><di…