嵌入式系统 - 术语

  • 程序计数器

    程序计数器是一个 16 位或 32 位寄存器,其中包含要执行的下一条指令的地址。每次获取指令时,PC 都会自动递增到下一个连续的内存位置。分支、跳转和中断操作将下一个顺序位置以外的地址加载到程序计数器中。
    激活上电复位将导致寄存器中的所有值丢失。这意味着 PC(程序计数器)的值在复位时为 0,迫使 CPU 从 ROM 内存位置 0000 获取第一个操作码。这意味着我们必须将 upcode 的第一个字节放在 ROM 位置 0000 中,因为这是CPU 期望找到第一条指令
  • 重置向量

    复位向量的意义在于它将处理器指向包含固件第一条指令的内存地址。如果没有复位向量,处理器将不知道从哪里开始执行。复位后,处理器将来自预定义存储位置的复位向量值加载到程序计数器 (PC)。在 CPU08 架构上,它位于 $FFFE:$FFFF 位置。
    当不需要重置向量时,开发人员通常认为它是理所当然的,不会编程到最终图像中。因此,处理器不会在最终产品上启动。这是在调试阶段发生的常见错误。
  • 堆栈指针

    堆栈在 RAM 中实现,CPU 寄存器用于访问它,称为 SP(堆栈指针)寄存器。SP 寄存器是一个 8 位寄存器,可以寻址范围为 00h 到 FFh 的存储器地址。最初,SP 寄存器包含值 07 以指向位置 08,作为 8051 用于堆栈的第一个位置。
    当 CPU 寄存器的内容存储在堆栈中时,称为 PUSH 操作。当堆栈的内容存储在 CPU 寄存器中时,称为 POP 操作。换句话说,一个寄存器被压入堆栈以保存它并从堆栈中弹出以检索它。
  • 无限循环

    由于以下原因,无限循环或无限循环可以识别为在循环中无限执行的计算机程序中的指令序列 -
    • 没有终止条件的循环。
    • 带有永远无法满足的终止条件的循环。
    • 带有导致循环重新开始的终止条件的循环。
    这种无限循环通常会导致较旧的操作系统无响应,因为无限循环会消耗所有可用的处理器时间。等待用户输入的 I/O 操作也称为“无限循环”。计算机“死机”的一个可能原因是无限循环;其他原因包括deadlockaccess violations.
    与 PC 不同,嵌入式系统永远不会“退出”应用程序。它们在无限循环中空闲,等待以中断或中断形式发生的事件pre-scheduled task. 为了省电,一些处理器进入特殊sleep 要么 wait modes 而不是通过无限循环空闲,但它们会在定时器或外部中断时退出这种模式。
  • 中断

    中断主要是指示程序发生事件的硬件机制。它们可能随时发生,因此与程序流异步。它们需要处理器进行特殊处理,并最终由相应的中断服务程序 (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