📜  嵌入式系统-术语

📅  最后修改于: 2021-01-07 05:45:41             🧑  作者: Mango


程序计数器

程序计数器是一个16位或32位寄存器,其中包含要执行的下一条指令的地址。每次获取指令时,PC都会自动递增到下一个顺序存储器位置。分支,跳转和中断操作将使用下一个顺序位置以外的地址向程序计数器加载。

激活上电复位将导致寄存器中的所有值丢失。这意味着复位后PC(程序计数器)的值为0,迫使CPU从ROM存储器0000中提取第一个操作码。这意味着我们必须将上码的第一个字节放入ROM 0000中,因为CPU希望找到第一条指令

重置向量

复位向量的意义在于它将处理器指向包含固件第一条指令的存储器地址。没有复位向量,处理器将不知道从哪里开始执行。复位后,处理器会从预定义的内存位置向程序计数器(PC)加载复位向量值。在CPU08架构上,它位于$ FFFE:$ FFFF位置。

当不需要重置向量时,开发人员通常将其视为理所当然,并且不编程到最终映像中。结果,处理器无法在最终产品上启动。这是在调试阶段发生的常见错误。

堆栈指针

堆栈是在RAM中实现的,并且使用一个CPU寄存器来访问它,称为SP(堆栈指针)寄存器。 SP寄存器是一个8位寄存器,可以寻址范围为00h至FFh的存储器地址。最初,SP寄存器包含值07,以指向位置08,这是8051用于堆栈的第一个位置。

将CPU寄存器的内容存储在堆栈中时,称为PUSH操作。当堆栈的内容存储在CPU寄存器中时,称为POP操作。换句话说,将寄存器压入堆栈以保存它,然后从堆栈弹出以取回它。

无限循环

由于以下原因,可以将无限循环或无限循环标识为在循环中无限执行的计算机程序中的指令序列:

  • 没有终止条件的循环。
  • 以永远无法满足的终止条件循环。
  • 终止条件导致循环重新开始。

这样的无限循环通常会导致较旧的操作系统变得无响应,因为无限循环会消耗所有可用的处理器时间。等待用户输入的I / O操作也称为“无限循环”。计算机“冻结”的一个可能原因是无限循环。其他原因包括死锁访问冲突

与PC不同,嵌入式系统从不“退出”应用程序。他们在无限循环中闲置,等待事件以中断或预定任务的形式发生。为了节省功率,某些处理器进入特殊的睡眠等待模式,而不是通过无限循环空闲,但是它们将在定时器或外部中断时退出此模式。

中断

中断主要是通过硬件机制来指示程序已发生事件。它们可能随时发生,因此与程序流异步。它们需要处理器进行特殊处理,并最终由相应的中断服务程序(ISR)处理。中断需要快速处理。如果您花费太多时间为中断服务,那么您可能会错过另一个中断。

小端对大端

尽管数字始终以相同的方式显示,但它们并非以相同的方式存储在内存中。 Big-Endian机器将最高有效字节的数据存储在最低内存地址中。一台Big-Endian机器将0x12345678存储为-

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

另一方面,Little-Endian机器将最低有效字节的数据存储在最低内存地址中。 Little-Endian机器将0x12345678存储为-

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12