从内部来进一步解释什么是固件。
固件是在非常特定的硬件上执行的代码,这意味着它的操作码特定于为其编写的硬件,它可以是一系列芯片或接口,也可以仅用于一项。
从本质上讲,固件会执行此操作;
具有给定处理器执行和执行的硬连线指令,这称为“引导程序”。哪些最可引导的计算机在其BIOS中具有此功能。
通过固件中的指令初始化所述硬件。
加载/加载跳转表。
使对给定设备上的寄存器的访问可访问。
在冷(掉电状态)或热启动(已使用正常重启或复位引脚)之后使用BIOS后,将控制权移交给退出例程。
大多数BIOS(固件)是为特定的芯片组而设计的,并根除了这些芯片的所有功能,并充实了可以连接到计算机或嵌入式设备中给定总线上的某些数据。
硬盘是存储解决方案的一个很好的例子,该存储解决方案本身就是嵌入式设备,它上面也有BIOS,并且在芯片上有某种形式的固件。
从本质上讲,所有固件都是一串指令,另一个处理器会执行该指令以使所述设备发挥功能。它是一种加载到物理设备中的软件,一旦断电,设备恢复供电后即会存在。
从技术上讲,您可以使用任何编程或脚本语言来创建二进制文件。您只需要知道将要定位的处理器的工作方式,实际的操作码,内部寄存器(更不用说它们的作用),学习二进制和十六进制数系统以及如何创建可以保存的汇编程序即可。您的汇编语言代码。完成后,您可以任务另一个程序将其转换为二进制文件,然后将其另存为.bin或.hex文件。
如果您想知道Ada,C,C ++,D和其他编程语言是如何将其“令牌”转换为原始代码的,这些原始代码会被切成伪操作码并转换为机器语言。我建议您阅读几本书,其中有些是基本的书,并且围绕非常特定的处理器而著,但值得学习。我暂时不会给您一本书,因为我不想淹没您或阅读此信息的任何人。
- Charles N. Fischer和Richard J. LeBlanc,Jr.用C编写编译器。
- 请访问该站点,它基于IBM PC中的x86芯片组;
http://www.laynetworks.com/assembly%20tutorials.htm
那是一开始对PC上的汇编语言编程的介绍。它讨论了有关处理中断(硬件和软件中断)以及许多其他主题的内容,并且更深入地介绍了BIOS的实际功能以及如何使用它。
与汇编语言和机器语言不同,如果您不了解硬件特性,则可以在Ada,C,C ++,D中获得更多知识。在汇编语言和机器语言中,如果您不知道自己在做什么,则可能会发生不好的事情,或者代码将无法正常工作。我更喜欢后一种情况,而不是坏事。
注意:关于以上答案,关于闪存RAM,没有这样的东西,有闪存ROM但没有闪存。闪存ROM中包含固件,由电池或电容器支持的RAM,或另一个闪存ROM,其中包含用于您所设置的BIOS选项的参数。
如果是闪存ROM或RAM芯片,则固件中包含有关如何存储或清除数据存储器(而不是程序存储器/固件本身)的代码。在PC上,如果您的BIOS密码出现乱码或不记得(或者有人在惹您),您可以打开机箱并找到两个销子,分别为“ CMOS CLR / CMOS CLEAR / BIOS RESET / BIOS RST”,将这两个引脚短路在一起也会清除内存,这之后您需要做的就是在两个引脚仍短路的情况下按下复位按钮。这将清除密码,并允许您完全访问PC BIOS(假设您有一台1990年代以后的新计算机)。
在新的PC上,您具有用于固件的闪存,并且具有电池后备的SRAM(并不需要像DRAM芯片那样不断刷新,它是基于较旧的技术)。