
- 嵌入式系統基礎教程
- 嵌入式系統 - 首頁
- 嵌入式系統 - 概述
- 嵌入式系統 - 處理器
- 嵌入式系統 - 架構
- 嵌入式系統 - 工具和外設
- 嵌入式系統 - 8051 微控制器
- 嵌入式系統 - I/O 程式設計
- 嵌入式系統 - 術語
- 嵌入式系統 - 組合語言
- 嵌入式系統 - 暫存器
- 嵌入式系統 - 暫存器組/堆疊
- 嵌入式系統 - 指令
- 嵌入式系統 -定址方式
- 嵌入式系統 - 特殊功能暫存器
- 嵌入式系統 - 定時器/計數器
- 嵌入式系統 - 中斷
- 嵌入式系統資源
- 嵌入式系統 - 快速指南
- 嵌入式系統 - 有用資源
- 嵌入式系統 - 討論
嵌入式系統 - 術語
程式計數器
程式計數器是一個 16 位或 32 位暫存器,它包含下一個要執行指令的地址。每次取指令時,程式計數器都會自動遞增到下一個連續的記憶體位置。分支、跳轉和中斷操作會將程式計數器載入到下一個連續位置以外的地址。
啟用上電覆位將導致暫存器中的所有值丟失。這意味著復位後程序計數器 (PC) 的值為 0,強制 CPU 從 ROM 記憶體位置 0000 獲取第一個操作碼。這意味著我們必須將第一個操作碼位元組放在 ROM 位置 0000,因為那是 CPU 期望找到第一條指令的地方。
復位向量
復位向量的意義在於它指向包含韌體第一條指令的記憶體地址。如果沒有復位向量,處理器將不知道從哪裡開始執行。復位時,處理器會從預定義的記憶體位置載入程式計數器 (PC) 與復位向量值。在 CPU08 架構中,此位置位於 $FFFE:$FFFF。
當不需要復位向量時,開發人員通常認為它理所當然,並且不會將其程式設計到最終映象中。結果,處理器不會在最終產品上啟動。這是除錯階段常犯的一個錯誤。
堆疊指標
堆疊在 RAM 中實現,並且使用稱為 SP(堆疊指標)暫存器的 CPU 暫存器來訪問它。SP 暫存器是一個 8 位暫存器,可以定址範圍為 00h 到 FFh 的記憶體地址。最初,SP 暫存器包含值 07,指向位置 08 作為 8051 使用的第一個堆疊位置。
當 CPU 暫存器的內容儲存在堆疊中時,稱為 PUSH 操作。當堆疊的內容儲存在 CPU 暫存器中時,稱為 POP 操作。換句話說,將暫存器壓入堆疊以儲存它,並從堆疊中彈出它以檢索它。
無限迴圈
無限迴圈或無休止迴圈可以識別為計算機程式中的一系列指令,由於以下原因,這些指令會在迴圈中無休止地執行:
- 沒有終止條件的迴圈。
- 終止條件永遠無法滿足的迴圈。
- 終止條件導致迴圈重新開始的迴圈。
這種無限迴圈通常會導致舊的作業系統無響應,因為無限迴圈會消耗所有可用的處理器時間。等待使用者輸入的 I/O 操作也稱為“無限迴圈”。計算機“凍結”的一個可能原因是無限迴圈;其他原因包括**死鎖**和**訪問衝突**。
與 PC 不同,嵌入式系統永遠不會“退出”應用程式。它們透過無限迴圈空閒,等待以中斷或**預定任務**的形式發生的事件。為了節省電力,一些處理器會進入特殊的**睡眠**或**等待模式**,而不是透過無限迴圈空閒,但它們將在計時器或外部中斷後退出此模式。
中斷
中斷大多是硬體機制,用於指示程式已發生事件。它們可能隨時發生,因此與程式流程是非同步的。它們需要處理器進行特殊處理,最終由相應的中斷服務例程 (ISR) 處理。中斷需要快速處理。如果處理中斷花費的時間太長,則可能會錯過另一箇中斷。
小端序與大端序
雖然數字始終以相同的方式顯示,但它們在記憶體中的儲存方式並不相同。大端序機器將資料的最高有效位元組儲存在最低記憶體地址中。大端序機器將 0x12345678 儲存為:
ADD+0: 0x12 ADD+1: 0x34 ADD+2: 0x56 ADD+3: 0x78
另一方面,小端序機器將資料的最低有效位元組儲存在最低記憶體地址中。小端序機器將 0x12345678 儲存為:
ADD+0: 0x78 ADD+1: 0x56 ADD+2: 0x34 ADD+3: 0x12