几乎所有电子设备都带有固件。我知道它存储在 ROM(只读存储器)中,因此它变得非易失性(不需要电源来保持内容不被擦除,就像 RAM 一样)

我想知道的是“公司如何与电子设备进行操作?”假设有一个小辊。按下按钮时,它如何使其移动?有人可以解释一下背后的原因,以使其发生吗?我认为可能需要一些简短的解释才能解开它。

另外,用于编码固件的最流行的语言是什么?

有帮助吗?

解决方案

像您所描述的现代硬件有一个存储在 ROM 中的程序和一个执行该程序的通用微型计算机 (CPU)。

CPU 通过在其地址总线上设置地址来从 ROM 读取信息,然后要求 ROM 告诉它存储在该位置的值。有一些类似读取脉冲(在单独的线路上)上升的方式来告诉 ROM 使数据总线线路上的值可访问。简而言之,这就是阅读。

为了让硬件执行某些操作,CPU 基本上会执行一种写操作。它放置了一个值,如果您想以这种方式查看,它只是一堆位,在地址总线上选择某个设备,并在该设备上运行,然后提出另一个信号线,说“写!”识别地址总线上地址的设备通过接受数据总线中的数据,然后执行其功能的任何功能来响应该信号。通常,数据总线位之一将在输出设备内连接到功率输出级,即比仅用于计算的晶体管更强大的晶体管,并且该晶体管将一些电气设备连接到足以使其移动/发光/任何东西的电流。

微型、廉价的设备采用汇编语言编码,以节省 ROM 成本;在工业量中,即使是少量的内存也会影响价格。汇编语言是CPU特定的;一些名为“8051”、“6502”和“Atmel(某种或其他)”的芯片很受欢迎。具有更复杂要求的更大设备可能会用 C 或类似 C 的方言编写固件,这使得编程比汇编程序更容易一些。最重要的甚至可以运行 C++ 代码。当然是编译了。

其他提示

在大多数系统中,有其用于I / O特殊存储器地址。阅读和这样的地址写只执行走动数据的一些函数。在x86系统也有特殊的I / O指令的IN和OUT为

在简单的情况下被称为通用并行I / O(GPIO),在这里可以读取或从/到设备上的外部电引脚直接写入数据。有几种存储地址,被称为寄存器,其中可以从该端口读取的数据(电压接近0 = 0,近电源电压= 1),其中可以将数据写入到该端口,并且其中可以定义一个特定的销是否是输入(相应的比特通常是0)或输出(该位为1)。每个微控制器具有GPIO。

因此,在你例如按钮可以连接到设置为输入的销,其中所述软件可以感觉到。它通常会做到这一点每10ms和才反应过来,如果它有一个稳定值数读,这就是所谓的反跳。然后它将写1到一些输出,其通过一些晶体管用于扩增可以驱动电动机。如果它感觉,你通过写0等等再次关闭释放它可以把电机开关,直到你关闭设备此程序将运行。

有很多用于其它目的与通常数百寄存器,用于控制它们的其他I / O设备的。如果你想看到更多的你可以看看一些单片机的数据手册。例如,这里是 ATtiny4的数据片/ 5/9/10 ,一个非常小的控制器从爱特梅尔AVR家族

今天最固件被写入C,除了最小的装置和用于处理复位和中断有点特殊码,这是用汇编语言编写。

scroll top