• 沒有找到結果。

嵌入式微處理器

N/A
N/A
Protected

Academic year: 2022

Share "嵌入式微處理器"

Copied!
464
0
0

加載中.... (立即查看全文)

全文

(1)

19, Innovation First Road • Science Park • Hsin-Chu • Taiwan 300 • R.O.C.

Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com

嵌入式微處理器 SPCE3200 原理及應用

V1.1 - Aug 29, 2007

繁体版

(2)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 1 V1.1 - Agu 29, 2007

Important Notice

SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLOGY CO. is believed to be accurate and reliable. However, SUNPLUS TECHNOLOGY CO. makes no warranty for any errors which may appear in this document. Contact SUNPLUS TECHNOLOGY CO. to obtain the latest version of device specifications before placing your order. No responsibility is assumed by SUNPLUS TECHNOLOGY CO. for any infringement of patent or other rights of third parties which may result from its use. In addition, SUNPLUS products are not authorized for use as critical components in life support systems or aviation systems, where a malfunction or failure of the product may reasonably be expected to result in significant injury to the user, without the express written approval of Sunplus.

(3)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 2 V1.1 - Agu 29, 2007

修訂記錄

版本 日期 作者 修訂內容 對應頁碼

V1.1 2007/08/29 1. 增加序、前言;

2. 內容更正。

V0.8 2007/04/25 初始版本

(4)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 3 V1.1 - Agu 29, 2007

SPCE3200 是臺灣凌陽科技推出以 S+core7(凌陽科技自主研發)為內核的 32 位元嵌入式開發系統,

內嵌12 位 ADC、16 位 DAC;具有 UART、SPI、I2C、SIO、USB 等標準硬體控制器介面;具有 6 個 Timer、即時時鐘和時基;有 Nor 型 Flash、Nand 型 Flash、SD 卡控制器;具有 TFT、STN 型 LCD 控制器及TV 控制器介面;有 MPEG4 編碼譯碼器、CMOS 介面單元等資源。

SPCE3200 豐富的硬體資源及多媒體特性使其獨具特色,由於大部分的功能由硬體完成,所以實現功 能時軟體需要較少的工作;同時凌陽科技還研發了凌陽32 位集成開發環境 S+core IDE,此工具可在 Window 環境下操作,具有友好的操作介面,支援標準 C 語言、凌陽 32 位元嵌入式開發系統組合語言 等,集編輯、編程、仿真等功能於一體,使得SPCE3200 的開發更加容易方便。

本書主要介紹 SPCE3200 的內核 S+core7 體系結構、指令系統,SPCE3200 嵌入式開發系統插腳及 ADC、UART 等基礎功能模組的工作原理、操作暫存器及基本操作,SPCE3200 開發板系統及其集成 開發環境S+core IDE,最後以一個開發實例介紹了 SPCE3200 的開發方法。全書共分為 7 章:

第1 章介紹 S+core7 的體系結構,分別從處理器模式、內部暫存器、異常、緩存等方面介紹。

第2 章介紹 S+core7 的指令系統,介紹了 S+core7 處理器的指令結構和指令編碼,詳細介紹了 S+core7 處理器的兩種指令集:32 位元指令集和 16 位元指令集。

第3 章介紹 SPCE3200 的使用,介紹了 SPCE3200 的特性、插腳、結構、記憶體對映、中斷控制器、

APBDMA、啟動代碼等使用基礎知識。

第4 章介紹 SPCE3200 的 15 個基礎功能模組,包括 GPIO、TIMER、即時時鐘、時基、看門狗、睡眠 喚醒、ADC、UART、SPI、I2C、SIO、Nor 型 Flash、Nand 型 Flash、SD 卡控制器、TFT 型 LCD 控 制器的特性、工作原理、操作暫存器,並介紹了基本的操作方法。

第5 章介紹 SPCE3200 的開發板和集成開發環境 S+core IDE 的使用方法。

第6 章是一個開發實例,分別從軟硬體介紹 SPCE3200 的開發方法。

第7 章是附錄,包括常用術語、本書的縮寫和約定解釋、S+core7 內核暫存器速查表、SPCE3200 基 礎功能模組硬體暫存器速查表和S+core7 的虛擬指令速查表。

全書由北陽電子技術有限公司大學計畫處羅亞非處長統一審稿,由大學計畫處技術支持部劉學、封鴻 雁、李健編寫。在編寫過程中,臺灣凌陽科技Jacky Hsiao、Rex Wu 及相關人員給予技術支援和指導,

在此致以誠摯的謝意。

由於編者水準有限,書中難免錯誤紕漏,請廣大讀者批評指正。

編者

2007-5-31

(5)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 4 V1.1 - Agu 29, 2007

目錄

1.1 S+core7 簡介 ... 10

1.2 資料類型 ... 10

1.3 處理器模式...11

1.4 內部暫存器...11

1.4.1 概述...11

1.4.2 通用暫存器(GPR... 12

1.4.3 Custom Engine 暫存器(CEH/CEL... 13

1.4.4 特殊功能暫存器(Srn... 13

1.4.5 控制暫存器(CR... 13

1.5 異常... 21

1.5.1 異常處理流程... 21

1.5.2 異常優先順序... 22

1.5.3 異常原因... 25

1.5.4 異常向量... 25

1.6 各種異常描述 ... 26

1.6.1 重設異常... 26

1.6.2 NMI中斷異常... 27

1.6.3 位址錯誤異常... 27

1.6.4 匯流排錯誤異常... 27

1.6.5 陷阱異常... 28

1.6.6 系統調用(SYSCALL)異常... 28

1.6.7 P-EL異常... 28

1.6.8 未定義指令(RI)異常... 28

1.6.9 控制器或協同處理器不可用(CCU)異常... 29

1.6.10 Custom Engine執行(CeE)異常(除0引起)... 29

1.6.11 協同處理器z執行(CpE)異常... 29

1.6.12 中斷異常... 30

1.6.13 Debug中斷異常... 30

1.6.14 單步除錯異常... 30

1.6.15 斷點除錯異常... 31

1.6.16 資料斷點除錯異常... 31

1.6.17 指令斷點除錯異常... 31

1.7 緩存簡介 ... 31

1.7.1 指令Cache... 33

1.7.2 資料Cache... 33

1.7.3 存儲一致性... 34

(6)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 5 V1.1 - Agu 29, 2007

1.8 LIM 和 LDM... 35

1.8.1 LIM-Local Instruction Memory ... 35

1.8.2 LDM-Local Data Memory ... 35

1.9 片上除錯 ... 35

2.1 概述... 37

2.2 指令格式與編碼... 37

2.3 32 位指令集 ... 41

2.3.1 裝載與存儲指令... 41

2.3.2 資料處理指令... 49

2.3.3 分支指令... 61

2.3.4 特殊指令... 63

2.3.5 協同處理器指令... 69

2.4 16 位指令集 ... 71

2.4.1 裝載與存儲指令... 72

2.4.2 資料處理指令... 73

2.4.3 跳越與分支指令... 75

2.4.4 特殊指令... 76

2.4.5 並行條件執行... 76

2.5 合成指令集... 76

2.6 S+core7 處理器的 GNU 編譯器 ... 81

2.6.1 S+core7 C編譯器參數... 81

2.6.2 S+core7 C編譯器的基本資料類型... 82

2.6.3 S+core7 C編譯器的函數調用約定... 83

2.7 S+core7 處理器的 GNU 組譯器 ... 85

2.7.1 S+core7 C組譯器參數... 85

2.7.2 組合语言語法... 86

2.7.3 組譯器偽指令... 86

2.7.4 區段及其重定位... 89

2.8 S+core7 處理器的 GNU 鏈接器 ... 90

3.1 SPCE3200 簡介... 91

3.1.1 概述... 91

3.1.2 特性... 91

3.2 SPCE3200 插腳信息 ... 92

3.2.1 插腳分佈... 92

3.2.2 插腳描述... 94

3.3 結構概述 ... 101

3.4 記憶體對映... 102

3.5 鎖相環 PLL 與時鐘發生器 CKG ... 104

3.5.1 鎖相環PLL ...104

(7)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 6 V1.1 - Agu 29, 2007

3.5.2 時鐘發生器CKG...106

3.5.3 暫存器描述...106

3.5.4 系統時鐘調整... 111

3.6 中斷控制器...115

3.6.1 概述...115

3.6.2 特性...116

3.6.3 中斷源...116

3.6.4 結構框圖...118

3.6.5 暫存器描述...119

3.6.6 中斷機制...127

3.6.7 應用舉例...135

3.7 記憶體介面單元——MIU... 136

3.8 APB 匯流排 DMA ... 141

3.9 啟動代碼 ... 151

3.9.1 檔組成...151

3.9.2 *_Prog.ld ...151

3.9.3 *_startup.s ...152

3.9.4 啟動代碼工作流程...154

4.1 通用 I/O 埠——GPIO ... 155

4.1.1 概述...155

4.1.2 插腳描述...159

4.1.3 結構...159

4.1.4 暫存器描述...160

4.1.5 基本操作...165

4.2 計時器——TIMER... 165

4.2.1 概述...165

4.2.2 特性...165

4.2.3 插腳描述...165

4.2.4 結構...166

4.2.5 暫存器描述...166

4.2.6 基本操作...174

4.2.7 注意事項...184

4.3 即時時鐘——RTC... 184

4.3.1 概述...184

4.3.2 特性...184

4.3.3 暫存器描述...184

4.3.4 基本操作...190

4.3.5 應用舉例...190

4.4 時基——Time Base ... 191

(8)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 7 V1.1 - Agu 29, 2007

4.4.1 概述...191

4.4.2 結構...191

4.4.3 暫存器描述...191

4.4.4 基本操作...196

4.4.5 應用舉例...196

4.5 看門狗——WDOG ... 197

4.5.1 概述...197

4.5.2 特性...197

4.5.3 結構...198

4.5.4 暫存器描述...198

4.5.5 基本操作...201

4.5.6 注意事項...202

4.6 睡眠與喚醒... 202

4.6.1 睡眠...202

4.6.2 睡眠相關暫存器...202

4.6.3 喚醒...204

4.6.4 鍵喚醒相關暫存器...208

4.6.5 應用舉例...209

4.7 ADC ...211

4.7.1 概述...211

4.7.2 特性...211

4.7.3 插腳描述...211

4.7.4 結構框圖...212

4.7.5 暫存器描述...213

4.7.6 基本操作...226

4.7.7 注意事項...231

4.8 UART ... 231

4.8.1 概述...231

4.8.2 特性...231

4.8.3 插腳描述...232

4.8.4 結構框圖...232

4.8.5 暫存器描述...233

4.8.6 基本操作...244

4.8.7 注意事項...250

4.9 SPI ... 250

4.9.1 概述...250

4.9.2 特性...250

4.9.3 插腳描述...251

4.9.4 結構框圖...251

(9)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 8 V1.1 - Agu 29, 2007

4.9.5 SPI描述...252

4.9.6 暫存器描述...255

4.9.7 基本操作...261

4.9.8 注意事項...264

4.10 I2C ... 264

4.10.1 概述...264

4.10.2 特性...264

4.10.3 插腳描述...265

4.10.4 I2C描述...266

4.10.5 暫存器描述...272

4.10.6 基本操作...280

4.10.7 注意事項...283

4.11 SIO 控制器 ... 283

4.11.1 概述...283

4.11.2 特性...284

4.11.3 插腳描述...284

4.11.4 結構...285

4.11.5 暫存器描述...285

4.11.6 基本操作...293

4.11.7 注意事項...299

4.12 Nor 型 Flash 控制器... 300

4.12.1 概述...300

4.12.2 特性...308

4.12.3 插腳描述...308

4.12.4 暫存器描述...310

4.12.5 基本操作...314

4.13 Nand 型 Flash 控制器 ... 319

4.13.1 概述...319

4.13.2 特性...322

4.13.3 插腳描述...322

4.13.4 結構...323

4.13.5 暫存器描述...323

4.13.6 基本操作...339

4.14 SD 卡控制器 ... 343

4.14.1 概述...343

4.14.2 特性...345

4.14.3 插腳描述...345

4.14.4 結構...346

4.14.5 暫存器描述...346

(10)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 9 V1.1 - Agu 29, 2007

4.14.6 基本操作...355

4.15 TFT LCD 控制器 ... 362

4.15.1 TFT LCD概述...362

4.15.2 特性...364

4.15.3 插腳描述...364

4.15.4 暫存器描述...365

4.15.5 基本操作...384

5.1.1 SPCE3200實驗儀...386

5.1.2 功能特點...386

5.1.3 硬體原理...387

5.2 S+core IDE 集成開發環境... 390

5.2.1 工程的編輯...391

5.2.2 工程的設置...402

5.2.3 工程的除錯...407

5.3 應用舉例 ... 420

6.1 原理概述 ... 428

6.2 應用分析 ... 428

6.3 硬體電路 ... 429

6.4 程式設計 ... 430

6.4.1 主程式...430

6.4.2 軟體FIFO管理程式...430

6.4.3 UART收發程式...431

6.4.4 RTC控制及日期計算程式...432

6.4.5 NorFlash操作程式...434

6.4.6 命令獲取和分配程式...435

6.4.7 命令處理程式...436

7.1 常用術語、縮寫和約定解釋 ... 440

7.1.1 術語...440

7.1.2 縮寫...442

7.1.3 約定...444

7.2 CPU 內核暫存器速查表 ... 445

7.3 硬體模組暫存器速查表... 447

7.4 S+core7 指令速查表 ... 457

7.4.1 32位指令速查表...457

7.4.2 16位指令速查表...461

7.5 偽指令速查表 ... 463

(11)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 10 V1.1 - Agu 29, 2007

1 S+core7 體系結構

1.1 S+core7 簡介

S+core7 微處理器是採用凌陽指令集架構(Sunplus ISA)的 32 位的 RISC 處理器,該微處 理器架構支援 32 位/16 位混合指令模式以及並行條件執行(正在申請專利保護),從而提高 了代碼密度、性能,使 S+core7 內核得到了廣泛的應用。在 S+core7 微處理器中採用了 AMBA 匯流排,為 SOC 集成、擴展協同處理器和用戶介面提供了靈活性,S+core7 使用 SJTAG 技 術使程式的測試和除錯更加有效。

S+core7 微處理器具有如下特徵:

支援 32 位與 16 位混合指令模式 支援並行條件執行

提供軟體安全設計

採用哈佛(Harvard)結構,包含 I-Cache(4K)和 D-Cache(4K)

採用 Fixed-MMU(固定對映模式)

採用 AMBA 匯流排規格,可以方便的實現 Soc 集成 63 個硬體中斷,2 個軟體中斷,中斷採用中斷向量 採用 SJTAG 協定

1.2 資料類型

S+core7 處理器支援以下幾種類型的資料:

位元組(Byte): 8 位 半字(Halfword): 16 位 字(Word): 32 位

表 1-1列出了以上各種資料類型對應的資料範圍。

表 1-1 資料類型

資料類型 範圍 備註

有符號數 -27~ + 27 - 1 位元組

無符號數 0~ +28 - 1

有符號數 -215~ + 215 - 1 必須半字邊界對齊 半字

無符號數 0~ +216 - 1

字 有符號數 -231~ + 231 - 1 必須字邊界對齊

(12)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 11 V1.1 - Agu 29, 2007

所有的資料處理操作都是以“字"為單位的,例如 ADD 操作。Load/Store 操作可在暫存器 和記憶體之間傳送位元組、半字和字的資料,但是當位元組或半字類型的資料被裝載時,會 自動進行零擴展或符號擴展。

32 位指令正好是一個字,是字(4 位元組)邊界對齊的,16 位指令正好是一個半字,是半字

(2 位元組)邊界對齊的。

1.3 處理器模式

當前,幾乎所有 32 位微處理器在實際應用中都要運行作業系統,為在內核級給作業系統提供 支援,微處理器可以在多種模式下運行。

S+core7 微處理器支援三種處理器模式:用戶模式(User Mode) 、核心模式(Kernel Mode)、

除錯模式(Debug Mode)。

1. 用戶模式

用於執行應用程式或作業系統程式。通常情況下,處理器均處於用戶模式,直到發生異常,

處理器切換到核心模式。處理器處於用戶模式時,用戶不能存取被系統保護的資源。

2. 核心模式

該模式是作業系統專用的模式。當處理器透過異常進入核心模式後將一直處於該模式,直 到一條從異常中返回的指令(RTE,Return From Exception)被執行。

3. 除錯模式

該模式用於用戶除錯階段。在該模式下,用戶程式可以完全存取用戶模式和核心模式下的 暫存器,以及其他一些除錯暫存器。

1.4 內部暫存器 1.4.1 概述

S+core7 處理器包含以下暫存器:

32 個通用暫存器(GPR)

2 個 Custom Engine 暫存器(CEH、CEL)

3 個特殊功能暫存器

• Sr0:迴圈計數暫存器(CNT)

• Sr1:裝載合併暫存器(LCR)

• Sr2:存儲合併暫存器(SCR)

19 個系統控制暫存器 3 個除錯控制暫存器

處理器運行在用戶模式下,用戶程式可以存取 32 個通用暫存器(GPR) 、 2 個 Custom Engine 暫存器(CEH、CEL)以及 3 個特殊功能暫存器(CNT、LCR、SCR)。處理器運行在核心 模式下,用戶程式除了可存取所有用戶模式下的暫存器外,還可存取 19 個系統控制暫存器。

處理器運行在除錯模式下,用戶程式除了可存取所有用戶模式下以及核心模式下的暫存器

(13)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 12 V1.1 - Agu 29, 2007

外,還可存取 3 個除錯模式下暫存器(DSAVE、DEPC、DREG)。各模式下可存取暫存器參 考圖 1-1所示:

CR5 CR4 CR3 CR2 CR1 CR0 CR11 CR10 CR9 CR8 CR7 CR6 CR17 CR16 CR15 CR14 CR13 CR12 CR18

r1 . . r31

r0

CEL

Sr0 Sr1 CEH

Sr2

除錯模式

核心模式

用戶模式 通用暫存器

Custom Engine 暫存器

特殊功能暫存器

CNT LCR SCR

系統控制暫存器 Prev

PSR Condition

ECR EXCPVec

CCR EPC EMA

CR31 CR30

CR29 DREG DEPC DSAVE 除錯控制暫存器

圖 1-1

S+core7 內核暫存器集

1.4.2 通用暫存器(GPR)

S+core7 處理器有 32 個 32 位的通用暫存器(r0~r31)。32 位指令模式下,所有這些通用暫

存器均可以被存取。由於指令編碼的限制,16 位指令模式下,只有 r0~r15 可以被存取。在

跳越/分支或鏈接指令中,r3 暫存器被用作鏈接暫存器,用於保存下一條指令位址。如圖 1-2

所示:

(14)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 13 V1.1 - Agu 29, 2007

圖 1-2

通用暫存器

1.4.3 Custom Engine 暫存器(CEH/CEL)

Custom Engine 暫存器包括 CEH 和 CEL 兩個暫存器,用來存儲乘法/除法的運算結果。乘法 運算完成後,雙字的運算結果的高字被放到 CEH 暫存器中,低字被放到 CEL 暫存器中。除 法運算完成後,餘數放到 CEH 暫存器中,商放到 CEL 暫存器中。

透過 MFCEH、MFCEL、MFCEHL、MTCEH、MTCEL 或 MTCEHL 指令,可實現這兩個暫 存器與通用暫存器之間的資料傳送。詳細請參考指令系統一章。

1.4.4 特殊功能暫存器(Srn)

S+core7 處理器有 3 個特殊功能暫存器:CNT(Sr0)、LCR(Sr1)、SCR(Sr2)。CNT 暫 存器是一個 32 位暫存器,可用來作迴圈計數。當執行特定的分支指令時,計數減一。例如,

執行 bcnz 分支指令時,如果 CNT 暫存器中的值不為零,CNT 暫存器中的值將減 1,程式跳 越到目標位址;如果 CNT 暫存器中的值為零,則 bcnz 指令將被視為 nop 指令,CNT 暫存器 中的值保持不變。

LCR 暫存器和 SCR 暫存器則是用於存取不對齊的 Load 和 Store 指令操作的。

1.4.5 控制暫存器(CR)

處理器運行在核心模式下有 19 個系統控制暫存器,在除錯模式下有 3 個除錯控制暫存器。

其中有些暫存器沒有被定義,參考表 1-2。

(15)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 14 V1.1 - Agu 29, 2007

表 1-2 控制暫存器

暫存器名稱 助記符 暫存器編號

程式狀態暫存器 PSR CR0

條件暫存器 Condition CR1

異常原因暫存器 ECR CR2

異常向量暫存器 EXCPVec CR3

Cache 控制暫存器 CCR CR4

異常程式計數器 EPC CR5

異常記憶體位址暫存器 EMA CR6

- - -

LIM 實體框號 LIMPFN CR15

LDM 實體框號 LDMPFN CR16

- - -

Prev 暫存器 Prev CR18

Debug 暫存器 DREG CR29

Debug 異常程式計數暫存器 DEPC CR30

Debug 異常內容保存暫存器 DSAVE CR31

程式狀態暫存器(PSR)

程式狀態暫存器用於指示協同處理器是否可用,中斷遮罩位、大小端及保存處理器的模式等。

表 1-3 程式狀態暫存器(PSR)

b31~b29 b28 b27~b24 b23~b18 b17~b16 b15

讀/寫 R/W R/W R/W R/W R/W R

預設值 0 0 0 0 0 1

名稱 CU[2:0] CRA - IM_H[5:0] IM_S[1:0] Endian

b5 b4 b3 b2 b1 b0

讀/寫 R/W R/W R/W R/W R/W R/W

預設值 0 0 0 0 0 0

(16)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 15 V1.1 - Agu 29, 2007

名稱 UMb IEb UMs IEs UMc IEc

CU[2:0] b31~b29 CU[n] = 1:協同處理器 n+1 是可用的,協同處理器指令可 以被執行

CU[n] = 0:協同處理器 n+1 是不可用的,協同處理器指令 不可以被執行

CRA b28 0:控制暫存器在用戶模式下是不可存取的,控制暫存器指 令在用戶模式下不可以被執行

1:控制暫存器在用戶模式下是可存取的,控制暫存器指令 在用戶模式下可以被執行

- b27~b24 保留。讀操作時,返回0;寫操作時,只能寫 0

IM_H[5:0]○1 b23~b18 中斷遮罩位元(根據中斷優先順序),對應63 個硬體中斷 IM_S[1:0]○1 b17~b16 中斷遮罩位元(根據中斷優先順序),對應2 個軟體中斷 Endian b15 位元組排列方式:

0:小端方式(Little Endian)

1:大端方式(Big Endian)

- b14~b6 保留。讀操作時,返回0;寫操作時,只能寫 0。

UMb○2 b5 前一次處理器模式的備份:

0:核心模式 1:用戶模式

IEb○2 b4 前一次中斷使能位的備份:

0:63 個硬體中斷及 2 個軟體中斷被禁止 1:63 個硬體中斷及 2 個軟體中斷被允許 UMs○2 b3 前一次處理器模式:

0:核心模式 1:用戶模式 IEs○2 b2 前一次中斷使能位:

0:63 個硬體中斷及 2 個軟體中斷被禁止 1:63 個硬體中斷及 2 個軟體中斷被允許

(17)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 16 V1.1 - Agu 29, 2007

UMc○2 b1 當前的處理器模式:

0:核心模式 1:用戶模式 IEc○2 b0 當前的中斷使能位:

0:63 個硬體中斷及 2 個軟體中斷被禁止 1:63 個硬體中斷及 2 個軟體中斷被允許

注解:

○1 :IM[7:2]是一個 6 位元的代碼,可編碼成 0,1,…,63(26 - 1)的數值。0 表示所有硬體中斷請求 都被允許。n(1~63)表明優先順序為 n 的以及低於 n 的硬體中斷請求均被遮罩。IM[1:0]是軟體中斷遮 罩位元,IM[1]或 IM[0] = 1 表明軟體中斷 1 或 0 的請求被遮罩。

○2 :UMb、IEb、UMs、IEs、UMc 以及 IEc 六位形成了一個三級的硬體堆疊,用來保存處理器模式(UM)

和中斷使能(IE)的資訊。UMc 和 IEc 保存當前的 UM 和 IE 值;UMs 和 IEs 保存發生異常前的 UMc 和 IEc 值;UMb 和 IEb 是 UMs 和 IEb 的一個備份。例如,異常發生時,硬體先把當前的 UMc 和 IEc 值保存在 UMs 和 IEs 中,然後再重新設置 UMc 和 IEc;執行異常返回指令 RTE 時,UMs 和 IEs 中的值 自動拷貝回 UMc 和 IEc。

條件暫存器(Condition)

條件暫存器指示當前程式運行是否出現溢出、進位(借位) 、零旗標、負旗標及並行條件執行 旗標(T),分支跳越指令就是根據這些旗標位元判斷程式的流向。

表 1-4 條件暫存器(Condition)

b31~b15 b14 b13 b12 b11 b10 b9 b8

讀/寫 R/W R/W R/W R/W R/W R/W R/W R/W

預設值 0 0 0 0 0 0 0 0

名稱 - Tb Nb Zb Cb Vb Ts Ns

b7 b6 b5 b4 b3 b2 b1 b0 讀/寫 R/W R/W R/W R/W R/W R/W R/W R/W

預設值 0 0 0 0 0 0 0 0

名稱 Zs Cs Vs Tc Nc Zc Cc Vc

- b31~b15 保留。讀操作時,返回0;寫操作時,只能寫 0 Tb b14 前一次的條件並行執行旗標位元 T 的備份

(18)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 17 V1.1 - Agu 29, 2007

Nb b13 前一次的負旗標位元 N 的備份 Zb b12 前一次的零旗標位元 Z 的備份

Cb b11 前一次的進位元/借位/擴展旗標位元 C 的備份 Vb b10 前一次的溢出旗標位元 V 的備份

Ts b9 前一次的條件並行執行旗標位元 T Ns b8 前一次的負旗標位元 N

Zs b7 前一次的零旗標位元 Z

Cs b6 前一次的進位/借位/擴展旗標位元 C Vs b5 前一次的溢出旗標位元 V

Tc b4 當前的條件並行執行旗標位元 T Nc b3 當前的負旗標位元 N

Zc b2 當前的零旗標位元 Z

Cc b1 當前的進位元/借位/擴展旗標位元 C Vc b0 當前的溢出旗標位元

Tb、Nb、Zb、Cb、Vb、Ts、Ns、Zs、Cs、Vs、Tc、Nc、Zc、Cc 以及 Vc 形成了一個三級 的硬體堆疊,用來保存 T、N、Z、C、V 旗標位元資訊。Tc、Nc、Zc、Cc、Vc 保存當前的 各旗標位元資訊;Ts、Ns、Zs、Cs、Vs 保存前一次的各旗標位元資訊;Tb、Nb、Zb、Cb、

Vb 保存前一次的各旗標位元資訊的備份。

異常原因暫存器(ECR - Exception Cause Register)

異常原因暫存器指示了引起異常的原因。

表 1-5 異常原因暫存器(ECR - Exception Cause Register)

b31~b24 b23~b18 b17~b16 b15~b8 b7~b6 b5 b4~b0

讀/寫 R/W R R/W R/W R R/W R

預設值 0 0 0 0 0 0 0

名稱 - IP_H[5:0] IP_S[1:0] - CE[1:0] - Exc_code

- b31~b24 保留。讀操作時,返回0;寫操作時,只能寫 0 IP_H[5:0] ○1 b23~b18 63 個硬體中斷的中斷請求向量

IP_S[1:0] b17~b16 2 個軟體中斷的中斷請求向量

(19)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 18 V1.1 - Agu 29, 2007

- b15~b8 保留。讀操作時,返回0;寫操作時,只能寫 0 CE[1:0] b7~b6 當控制器或協同處理器不可用異常發生時,這幾位

表明了異常發生的原因:

00:控制暫存器存取異常 01:協同處理器 1 不可用異常 10:協同處理器 2 不可用異常 11:協同處理器 3 不可用異常

- b5 保留。讀操作時,返回 0;寫操作時,只能寫 0 Exc_code b4~b0 當中斷發生時,Exc_code 為異常發生原因編碼

注解:

○1 :IP_H[5:2]是一個 6 位元編碼,指示中斷請求。0 表示沒有中斷請求,n(1~63)表明優先順序為 n 的中斷請求。IP[1:0]對應軟體中斷,用來設置或取消軟體中斷。

異常向量暫存器(EXCPVec - Exception Vector Register)

異常向量暫存器保存有所有異常向量位址的基底位址,b0 位指示向量位址的偏移模式選擇 位,選擇偏移 0x04 還是 0x10,可以計算出異常向量的位址。

表 1-6 異常向量暫存器(EXCPVec - Exception Vector Register)

b31~b16 b15~b1 b0

讀/寫 R/W R/W R/W

預設值 0x9F00 0 0

名稱 EXCPVec_Base - VO

EXCPVec_Base b31~b16 所有異常向量位址的基底位址(第 31 位至第 16 位)

- b15~b1 保留。讀操作時,返回0;寫操作時,只能寫 0 VO b0 向量位址的偏移模式選擇位:

0:偏移 0x04 1:偏移 0x10

(20)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 19 V1.1 - Agu 29, 2007

Cache 控制暫存器(CCR - Cache Control Register)

Cache 控制器控制 Cache 的相關操作。

表 1-7 Cache 控制暫存器(CCR - Cache Control Register)

b16 b9 b8 b7 b6

讀/寫 R/W R R R R/W

預設值 0 0 0 0 0

名稱 LDMLP DPFB IPFB W-Back RbBpDis

b5 b4 b3 b2 b0

讀/寫 R/W R/W R/W R/W R

預設值 0 0 0 0 0

名稱 NOP BTEN LDM LIM WB

- b31~b17 保留。讀操作時,返回0;寫操作時,只能寫 0 LDMLP b16 LDM 低功耗(LDM Low power)使能位:

0:禁止(預設)

1:使能

- b15~b10 保留。讀操作時,返回0;寫操作時,只能寫 0 DPFB b9 資料預取暫存器使能位:

0:禁止 1:使能

IPFB b8 指令預取暫存器使能位:

0:禁止 1:使能

W-Back b7 資料Cache 的寫回(Write-Back)模式使能位:

0:禁止 1:使能

RbBpDis b6 寫暫存器的資料讀操作越過寫操作模式的禁止位:

0:禁止 1:使能

(21)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 20 V1.1 - Agu 29, 2007

NOP b5 NOP 指令的處理選擇位:

0:NOP(空操作)指令正常處理

1:NOP 指令在管線(Pipe Line)中充當“氣泡"

BTEN b4 AMBA 匯流排設備支援突發傳輸提前終止(burst early terminate)

的功能使能位:

0:禁止 1:允許

LDM b3 LDM 介面使能位:

0:禁止 Local 資料記憶體(LDM,Local Data Memory)介面 1:允許 Local 資料記憶體(LDM,Local Data Memory)介面 LIM b2 LIM 介面使能位:

0:禁止 Local 指令記憶體(LIM,Local Instruction Memory)介面 1:允許 Local 指令記憶體(LIM,Local Instruction Memory)介面 - b1 保留。讀操作時,返回0;寫操作時,只能寫 0

WB b0 寫緩衝使能位:

0:禁止(預設)

1:使能

異常程式計數器(EPC - Exception Program Counter)

異常程式計數器保存程式發生異常時的 PC 程式指標及發生異常時的指令模式。

表 1-8 異常程式計數器(EPC - Exception Program Counter)

b31~b1 b0

讀/寫 R/W R

預設值 0 0

名稱 EPC M

EPC b31~b1 異常發生時,程式計數器(PC)的高 31 位有效位元被記錄在此欄 位中。執行RTE 指令後,此欄位中的值將被重載到程式計數器 PC 中

(22)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 21 V1.1 - Agu 29, 2007

M b0 對於在管線 D 階段(D Stage)後產生的異常,該位元表明發生異 常的指令模式(32 位或 16 位):

0:32 位指令模式

1:PCE 指令或 16 位指令模式

對於在管線D 階段(D Stage)前產生的異常,該位無意義

引起中斷或異常發生的指令的位址保存在 EPC 暫存器中。其中,Bit0(M)表明引起異常發 生指令的模式:為 1 表示 PCE 指令或 16 位指令模式;為 0 表示 32 位指令模式。Bit1(EPC[1])

表明具體的發生異常的指令位置:為 1 表示低位址的 16 位指令;為 0 表示高位址的 16 位指 令或 32 位指令。執行 RTE 指令後,EPC[31:1]的值將被重載到 PC 中,Bit0 忽略。

其他控制暫存器與用戶編寫程式應用關係不大,感興趣的讀者請參考 S+core7 內核資料。

1.5 異常

S+core7 內核最多可以處理 80 個異常,以 S+core7 內核構成的晶片具有強大的中斷處理能 力。

1.5.1 異常處理流程

S+core7 微處理器在每執行一條程式前先判斷是否有重設請求,如果有重設請求,會初始化 程式狀態暫存器(PSR)、條件暫存器(Condition)、異常向量暫存器(EXCPvec)、CCR 暫 存器以及程式計數暫存器 PC;如果沒有重設請求,會執行下一條指令,如果有異常請求,會 將相關暫存器進行保存後轉入異常程式處理;如果沒有異常請求,處理器直接判斷是否有重 設請求等重複這個過程。

根據異常的優先順序,所有異常均在管線的 M 階段(Memory Stage)被識別處理。在執行

異常處理後,執行 RTE 指令可以使程式從異常處理中返回。執行 RTE 指令後,PC 指標將指

向 EPC 暫存器中保存的位址,且部分 PSR 暫存器或條件暫存器的內容將被右移(彈出堆疊) ,

CPU 即從 EPC 暫存器保存的位址處執行程式。參考圖 1-3所示:

(23)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 22 V1.1 - Agu 29, 2007

是否有重設請求?

執行下一條指令

是否有異常請求?

Y

Y N

N

各系統控制寄存器恢復重設值

PSR=0x00008000 Condition=0x0000000 EXCPVec=0x9f000000 PC=0x9f000000 PSR:

UMb = UMs Ieb = Ies Ums = Umc Ies = Iec Umc = 0 Iec = 0 Condition:

Tb = Ts Nb = Ns Zb = Zs Cb = Cs Vb = Vs Ts = Tc Ns = Nc Zs = Zc Cs = Cc Vs = Vc Tc = 0 Nc = 0 Zc = 0 Cc = 0 Vc = 0 EPC = PCexception PC = 中斷向量位址 備份系統控制寄存器

轉向異常處理

暫存器推入堆疊保護

進行異常處理

暫存器爆出堆疊

異常處理返回

系統控制暫存器備份值 拷貝到當前旗標位元

r0~r31,CEH\CEL,Sr0~Sr2,

及一些可能會用到的系統控制暫存器 PSR:

UMb = UMb IEb = IEb UMs = UMb IEs = IEb UMc = UMs IEc = IEs Condition:

Tb = Tb Nb = Nb Zb = Zb Cb = Cb Vb = Vb Ts = Tb Ns = Nb Zs = Zb Cs = Cb Vs = Vb Tc = Ts Nc = Ns Zc = Zs Cc = Cs Vc = Vs PC = EPC

流程圖 操作暫存器

圖 1-3 異常處理流程

1.5.2 異常優先順序

正常模式下,在一條指令執行過程中,可能有多個異常發生,但是根據異常優先順序只能有

一個異常向 CPU 發出申請。

(24)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 23 V1.1 - Agu 29, 2007

表 1-9 異常優先順序

優先順序 異常 描述

1 最高 Reset 重設異常

2 DSS 單步除錯異常(Debug Single Step)

3 DINT Debug 匯流排異常或 JTAG 中斷異常

4 DDBLV 執行Load 操作時發生的資料斷點除錯異常(位址資料均匹配)

5 NMI 不可遮罩中斷(Non-maskable Interrupt)

6 Interrupt[63] 外部硬體中斷異常

: : :

: : :

68 Interrupt[1] 外部硬體中斷異常 69 DIB 指令斷點除錯異常 70 AdEL-instruction 取指位址錯誤異常 71 BusEL-instruction 取指匯流排錯誤異常 72 P-EL 指令中的P 位檢查錯誤異常 73 DBP 除錯斷點異常(SDBBP)

73 SYSCALL 系統調用陷阱異常

73 CCU 控制器或協同處理器不可用異常

73 RI 未定義指令異常

73 Trap 條件陷阱異常

74 DDBLA 執行Load 操作時發生的資料斷點除錯異常 75 DDBS 執行Store 操作時發生的資料斷點除錯異常 76 AdEL-Data 資料裝載位址錯誤異常

77 AdES 資料存儲位址錯誤異常

78 CeE Custom Engine 執行異常(除 0 引起的)

78 CpE 協同處理器執行異常 79 BusEL-data 資料存取匯流排錯誤異常 80 最低 SWI[1] 內部軟體中斷異常1 80 最低 SWI[2] 內部軟體中斷異常2

(25)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 24 V1.1 - Agu 29, 2007

在 Debug 模式下,Debug 異常指令以及與中斷相關的指令將被禁止。表 1-10列出了 Debug 模式下各種異常會引起的處理器行為。其中有些異常將導致系統再進入 Debug 模式(可以根 據 DExcCode 來判斷異常原因)

表 1-10 Debug 模式下異常及其優先順序

優先順序 異常 處理器行為

1 最高 重設異常 系統重設

2 單步除錯異常(DSS) 被禁止

3 Debug 中斷異常(DINT) 被禁止 4 執行Load 操作時發生的資料斷點調

試異常(DDBLV)位址資料均匹配

被禁止

5 不可遮罩中斷異常(NMI) 被禁止 6 外部硬體中斷異常(Interrupt) 被禁止 7 指令斷點除錯異常(DIB) 被禁止

8 取指位址錯誤異常 再進入Debug 模式 9 取指匯流排錯誤異常 再進入Debug 模式 10 指令中的P 位檢查錯誤異常 再進入Debug 模式 11 斷點除錯異常(SDBBP) 被禁止

12 條件陷阱異常 再進入Debug 模式 13 系統調用陷阱異常 再進入Debug 模式 14 控制器或協同處理器不可用異常 再進入Debug 模式 15 未定義指令異常 再進入Debug 模式 16 執行Load 操作時發生的資料斷

點除錯異常(DDBLA),僅位址匹配

被禁止

17 執行Store 操作時發生的資料 斷點除錯異常(DDBS)

被禁止

18 資料裝載位址錯誤異常 再進入Debug 模式 19 資料存儲位址錯誤異常 再進入Debug 模式 20 Custom Engine 執行異常 再進入Debug 模式 21 協同處理器執行異常 再進入Debug 模式

(26)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 25 V1.1 - Agu 29, 2007

優先順序 異常 處理器行為

22 資料存取匯流排錯誤異常(精確的) 再進入Debug 模式 23 資料存取匯流排錯誤異常(不精確的) 被禁止

24 最低 內部軟體中斷異常 被禁止

1.5.3 異常原因

引起異常可以有各種原因,如硬體中斷、軟體中斷、重設、匯流排異常等。引起異常的原因 對應的編碼,參考表 1-11。

表 1-11 異常原因編碼

異常 編碼 異常 編碼

Reset 0 AdEL-Data 11

NMI 1 AdES 12

AdEL-Instruction 2 - 13

- 3 - 14 - 4 - 15

BusEL-Instruction 5 CeE 16

P-EL 6 CpE 17

SYSCALL 7 BusEL-Data 18

CCU 8 SWI 19

RI 9 Interrupt 20

Trap 10

1.5.4 異常向量

表 1-12 異常向量表 向量位址

異常類型

VO = 0 VO = 1

異常

重設異常 0x9F00_0000 0x9F00_0000 重設異常 Debug 異常 Badr + 0x1FC Badr + 0x1FC Debug 異常

(27)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 26 V1.1 - Agu 29, 2007

向量位址 異常類型

VO = 0 VO = 1

異常

不可遮罩中斷異常(NMI)

取指位址錯誤異常(AdEL-Instruction)

取指匯流排錯誤異常(BusEL-Instruction)

P 位元錯誤異常(P-EL)

系統調用異常(SYSCALL)

控制器或協同處理器不可用異常(CCU)

未定義指令異常(RI)

陷阱異常(Trap)

資料裝載位址錯誤異常(AdEL-Data)

資料存儲位址錯誤異常(AdES)

Custom Engine 執行異常(CeE)

協同處理器執行異常(CpE)

資料存取匯流排錯誤異常(BusEL-Data)

內部軟體中斷異常(SWI1)

一般異常 Badr + 0x200 Badr + 0x200

內部軟體中斷異常(SWI2)

中斷異常 Badr + 0x204 Badr + 0x210 外部硬體中斷[1]

. . .

. . .

Badr + 0x2FC Badr + 0x5F0 外部硬體中斷[63]

1.6 各種異常描述

1.6.1 重設異常

起因:一旦重設信號產生,總是會發生重設異常。重設異常是不可遮罩的。

CPU 為重設異常提供一個特殊的重設向量(0x9F00_0000),此向量處於非 Cache 區。進入 重設異常處理後,CPU 將處於固定對映(Fixed Mapping)模式。

重設異常發生後:

程式狀態暫存器(PSR)中的 IEc 與 UMc 被置 0;

(28)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 27 V1.1 - Agu 29, 2007

CCR 暫存器中的 WB 欄位被置 0;

ECR 暫存器中的 Exc_code 欄位被置 0;

EXCVEC 暫存器中的 EXCVec_Base 欄位被置為 0x9F00_0000。

其他暫存器的值均未作定義。

1.6.2 NMI 中斷異常

起因:NMI 插腳電平處於下降沿時,會發生 NMI 中斷(Non-Maskable Interrupt)異常,而 不管 PSR 暫存器中的 IEc 位是否被置 1。NMI 中斷異常是不可恢復的異常。

NMI 中斷異常方生後:

PSR 暫存器中的 IEc 與 UMc 位的值將分別壓入 IEs 與 Ums 位中;

條件暫存器的 Tc、Nc、Zc、Cc、及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 1;

EPC 暫存器指向引起發生 NMI 中斷異常的指令。

其他暫存器的值均不會改變。

1.6.3 位址錯誤異常

起因:裝載或存儲記憶體中的一個字時,不是字邊界對齊的;裝載或存儲記憶體中的一個半 字時,不是半字邊界對齊的;指令位址不是半字邊界對齊的(指令位址的最低位是+1);用戶 模式下存取了核心模式下的位址;用戶模式或核心模式下存取了 Debug 模式的位址。

位址錯誤異常發生後:

PSR 暫存器中的 IEc 與 UMc 位被壓入 IEs 與 Ums;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位為 2(AdEL-Instruction 異常)、11(AdEL-Data 異常)

或者 12(AdES-data 異常);

EPC 暫存器指向引起位址錯誤異常的指令;

異常存儲位址(EMA)暫存器保存沒有正確對齊的或者被保護的位址空間的虛擬位址;

EMA 暫存器和 PEVN 暫存器保存沒有正確轉換的虛擬位址。

其他暫存器的值均不會改變。

1.6.4 匯流排錯誤異常

起因:當實體電路產生 Event(例如,匯流排存取超時、背板匯流排(backplane bus)P 位 元錯誤、無效的實體存儲位址或者無效的存取類型信號時,會引起匯流排錯誤異常。

匯流排錯誤異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位元為 5(取指令時發生的異常)或者 18(取資料時發生

的異常);

(29)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 28 V1.1 - Agu 29, 2007

EPC 暫 存 器 指 向 引 起 匯 流 排 錯 誤 異 常 的 指 令 。 注 意 : 如 果 處 理 器 中 有 寫 暫 存 器

(Write-Buffer)並已將其使能,那麼,資料匯流排錯誤異常發生時,EPC 暫存器將不能 正確地保存指令指標,從而該異常將不能被恢復。

其他暫存器的值均不會改變。

1.6.5 陷阱異常

起因:執行 Trap 指令,會引起陷阱異常。

陷阱異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 10;

EPC 暫存器指向 Trap 指令。

其他暫存器的值均不會改變。

1.6.6 系統調用(SYSCALL)異常

起因:執行 SYSCALL 指令,會引起系統調用陷阱異常。

SYSCALL 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 7;

EPC 暫存器指向 SYSCALL 指令。

其他暫存器的值均不會改變。

1.6.7 P-EL 異常

起因:執行一條 P 位元檢查錯誤指令,會引起 P-EL 異常;指令位址(如分支目標位址)指 向一個 32 位指令字的低半字,但其是一條 32 位指令,即指令位址字對齊錯誤(Bit1 = 1)。

P-EL 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 6;

EMA 暫存器指向引起 P-EL 中斷異常的指令;

EPC 暫存器指向引起 P-EL 中斷異常的指令。

其他暫存器的值均不會改變。

1.6.8 未定義指令(RI)異常

起因:執行一條操作碼(Opcode)未被定義的指令,會引起 RI 異常。

(30)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 29 V1.1 - Agu 29, 2007

RI 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 9;

EPC 暫存器指向引起該異常的指令。

其他暫存器的值均不會改變。

1.6.9 控制器或協同處理器不可用(CCU)異常

起因:執行如下指令操作中的任一種時,會引起 CCU 異常。

在用戶模式下,執行控制暫存器指令,但控制暫存器沒有旗標為可用狀態(PSR 暫存器 CRA 位元為 0) ;執行協同處理器指令,但該協同處理器沒有標識為可用狀態(PSR 暫存器 CU 位 元為 0)。

CCU 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 8;

ECR 暫存器中的 CE 欄位表明具體是哪個協同處理器或控制器不可用;

EPC 暫存器指向引起 CCU 異常的指令。

其他暫存器的值均不會改變。

1.6.10 Custom Engine 執行(CeE)異常(除 0 引起)

起因:Custom Engine 執行一條擴展指令時,執行結果可能會引起 CeE 異常。例如,除 0、

乘累加溢出。這裏,定義除 0 引起的異常為預設的 CeE 異常。

CeE 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 16;

EPC 暫存器指向引起 CeE 異常的指令。

其他暫存器的值均不會改變。

1.6.11 協同處理器 z 執行(CpE)異常

起因:協同處理器 z 試圖執行一條協同處理器操作指令時,執行結果可能會引起 CpE 異常。

例如,浮點除 0、浮點乘累加溢出。

CpE 異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位被置 17;

(31)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 30 V1.1 - Agu 29, 2007

ECR 暫存器中的 CE 欄位表明具體是哪個協同處理器引起的異常;

EPC 暫存器指向引起 CeE 異常的指令。

其他暫存器的值均不會改變。

1.6.12 中斷異常

起因:當 65 個中斷中的任一個發生時,會引起中斷異常。

中斷異常發生後:

PSR 暫存器中的 IEc 與 UMc 位的值被分別壓入 IEs 與 UMs 位;

條件暫存器的 Tc、Nc、Zc、Cc 及 Vc 位的值分別壓入 Ts、Ns、Zs、Cs 及 Vs 位;

ECR 暫存器中的 Exc_code 欄位為 19(表明是軟體中斷引起的異常)或 20(表明是硬體 中斷引起的異常);

EPC 暫存器指向引起中斷異常的指令。運行完中斷服務程式後,程式會返回到 EPC 暫存 器所指的位址。

其他暫存器的值均不會改變。

注意:

在分配外部中斷(63 個)優先順序之前,中斷控制器必須先利用處理器時鐘去擷取外部中斷信號並將 其雜訊信號去抖,否則這些雜訊信號可能會引發處理器錯誤地識別中斷。

1.6.13 Debug 中斷異常

起因:非 Debug 模式下,Debug 中斷會引發該異常。

Debug 中斷異常發生後:

DREG 暫存器(CR29)中的 DINT 以及 DM 位被置位;

DEPC 暫存器(CR30)保存異常處理完成後需要恢復的位址。執行 DRTE 指令,可使程 式跳越到該暫存器中所指的位址。

其他暫存器的值均不會改變。

1.6.14 單步除錯異常

起因:非 Debug 模式下,當一條指令單步執行完並且 Debug 暫存器中的 SSEn 位被置位後,

會發生單步除錯異常。

單步除錯異常發生後:

DREG 暫存器(CR29)中的 DSS 以及 DM 位被置位;

DEPC 暫存器(CR30)保存異常處理完成後需要恢復的位址。執行 DRTE 指令,可使程 式跳越到該暫存器中所指的位址。

其他暫存器的值均不會改變。

(32)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 31 V1.1 - Agu 29, 2007

1.6.15 斷點除錯異常

起因:執行 SDBBP(Software Debug Breakpoint)指令後,會發生斷點除錯異常。

斷點除錯異常發生後:

如果該異常發生在非 Debug 模式下,DREG 暫存器(CR29)中的 DBP 位被置位;

如果該異常發生在 Debug 模式下,DSS、DBP、DDBL、DDBS、DIB、DDB 和 DINT 這 些位被清除,在 CR29 暫存器中 DexcCode 被設置成 SDBBP;

DREG 暫存器(CR29)中的 DM 位被置位;

DEPC 暫存器(CR30)保存異常處理完成後需要恢復的位址。執行 DRTE 指令,可使程 式跳越到該暫存器中所指的位址。

其他暫存器的值均不會改變。

1.6.16 資料斷點除錯異常

起因:非 Debug 模式下,執行裝載或存儲指令時,若被存取的資料的位址匹配,則會發生資 料斷點除錯異常。

資料斷點除錯異常發生後:

DREG 暫存器(CR29)中的 DDBLA、DDBLV 或 DDBS 位被置位;

DREG 暫存器(CR29)中的 DM 位被置位,其他暫存器的值均不會改變。

DEPC 暫存器(CR30)保存異常處理完成後需要恢復的位址。執行 DRTE 指令,可使程 式跳越到該暫存器中所指的位址。

1.6.17 指令斷點除錯異常

起因:非 Debug 模式下,若指令的位址匹配,則會發生指令斷點除錯異常。

指令斷點異常發生後:

DREG 暫存器(CR29)中的 DIB 以及 DM 位被置位;

DEPC 暫存器(CR30)保存異常處理完成後需要恢復的位址。執行 DRTE 指令,可使程 式跳越到該暫存器中所指的位址。

其他暫存器的值均不會改變。

1.7 緩存簡介

S+core77 處理器的主頻最高達到 162MHz,而主記憶體操作用動態記憶體(DRAM),其存

儲週期僅為 100ns~200ns。這樣,如果指令和資料都存儲在主記憶體中,主記憶體的速度將

會嚴重制約整個系統的性能。高速緩衝記憶體(Cache)和寫緩衝區(Write buffers)位於主

記憶體和 CPU 之間,可以大大提高存儲系統的性能。Cache 是一塊位址可以改變的高速的

記憶體空間,目的在於加快記憶體存取的速度。將 Cache 分成若干塊,Cache-line 是使用

Cache 的最小存儲單元。當 CPU 讀取資料或者指令時,如果當前 cache line 中沒有保存這

些資料,cache line 會將這些資料載入。如果在 cache line 載入其他位址的資料之前,CPU

存取相同的資料,那麼 cache 可以提供記憶體存取。

(33)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 32 V1.1 - Agu 29, 2007

S+core7 處理器支援 2 種獨立的 Cache,指令 Cache(I-Cache)和資料 Cache(D-Cache)。

這種獨立的 Cache 結構可使指令和資料同時得到處理。而 I-Cache 和 D-Cache 均是使用虛 擬位址來索引的(virtual indexed),用實體位址來標識的(physically tagged)。

表 1-13 S+core7 處理器 Cache 規格

規格 I-Cache D-Cache

Cache 大小 4Kbytes 4Kbytes

組相連 2 2

Cache-line 大小 4Words 4Words

寫策略 NA 寫入(Write Through)或寫回

(Write Back)

分配策略 讀分配策略(Read Allocate) 讀分配策略(Read Allocate)

替換策略 最近最少使用策略(LRU) 最近最少使用策略(LRU)

預取一個Cache-line 虛擬位址模式 虛擬位址模式 預取並鎖定一個Cache-line 虛擬位址模式 虛擬位址模式 使一個Cache-line 無效 虛擬位址模式 虛擬位址模式

使整個Cache 無效 可以 可以

清空寫緩衝區 NA 可以

寫緩衝區 NA 4 words

S+core7 處理器中,Tag 存儲陳列是以 Cache-line 為單位標記資料的;資料是以 Word 為單

位存儲的。I-Cache 和 D-Cache 均是 2 路組相連的結構,大小均為 4K Bytes。

(34)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 33 V1.1 - Agu 29, 2007

Way-0

Way-0

Way-1

Way-1 Set-0

Set-127

Word-0 Word-1 Word-2 Word-3

Word-511

Set-0 Way-0

Word-0 Word-1 Word-2 Word-3

Word-511

Set-0 Way-1 Addr[10:2]

Addr[10:4]

I-Tag/D-Tag I-Data/D-Data

圖 1-4 S+core7 Cache 存儲陣列

1.7.1 指令 Cache

I-Cache 控制器是一個獨立於處理器內核之外的設備。在內核與 I-Cache 控制器之間有兩條 請求匯流排:一條是指令匯流排(I-Bus),另一條是 I-Cache 指令匯流排。I-Cache 控制器需 要處理來自這兩條匯流排的請求。若它不能在下一個 Cycle 處理完請求,I-Cache 控制器將 阻塞管線(pipeline)去繼續處理請求。

I-Cache 特性:

2 路組相聯的 Cache 結構 Cache 的大小是 4K bytes Cache-line 的大小是 4Words 採用讀操作分配策略

提供使一個 Cache-line 無效的命令(虛擬位址模式下)

提供使整個 Cache 內容無效的命令(虛擬位址模式下)

提供預取一個 Cache-line 的命令(虛擬位址模式下)

提供預取和“Lock"一個 Cache-line 的命令(虛擬位址模式下)

在內核和 I-Cache 控制器之間有指令預取請求匯流排和 I-Cache 請求匯流排 取指操作時提供精確匯流排錯誤異常(precise bus error exception)

處理器內核可以拒絕 I-Cache 設備的當前和前一指令請求 1.7.2 資料 Cache

D-Cache 控制器也是一個獨立於處理器內核之外的設備。在內核與 D-Cache 控制器之間也有

兩條請求匯流排(Request Bus):一條是用於 Load 或 Store 指令的匯流排(D-Bus),另一

條是 D-Cache 指令匯流排。D-Cache 控制器需要處理來自這兩條匯流排的請求。若 D-Cache

控制器不能在下一個 Cycle 處理完請求,它將阻塞管線(pipeline)。

(35)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 34 V1.1 - Agu 29, 2007

D-Cache 特性:

2 路組相聯的 Cache 結構 4K bytes 的 Cache 大小 4 Words 的 Cache line 大小 讀操作分配策略

提供使 Cache line 無效的命令 提供預取 Cache line 的命令 提供預取並鎖定 Cache line 的命令

Load 操作時提供精確的匯流排異常;若寫緩衝器是禁用的,Store 操作時也提供精確的 匯流排異常

若寫緩衝器是允許的,Store 操作時則提供不精確的匯流排異常 1.7.3 存儲一致性

系統設計時必須考慮存儲一致性問題。因為 Cache 中保存的是主記憶体資料的一塊拷貝,而 當 Cache 中資料正被使用時,其他存儲設備可能去修改主記憶体中的那塊資料,從而使 Cache 中的資料與主記憶体中的不一致。記憶體一致性問題必須透過系統設計或軟體來解決。下面 是 4 種典型的存儲一致性問題:

寫指令操作

當處理器內核存儲指令到主記憶体中以待後續執行時,必須保證這些指令被寫到主記憶体 中,並且保證 I-Cache 中的相應位置上的內容是無效的。S+core7 處理器中,D-Cache 與 I-Cache 是獨立的。

寫回 Cache 操作

當一個 DMA 設備直接從主記憶体中移出資料時,能獲得正確的資料是至關重要的。如果 D-Cache 使用的是寫回策略,且程式最近曾執行寫資料操作,那麼,要移出的正確資料 可能還保存在 D-Cache 中,未被寫入主記憶体。而內核是不清楚這種情況的。因此,必 要的話,在 DMA 設備開始從主記憶体中讀資料之前,必須將還保存在 D-Cache 中的正 確資料寫入主記憶体中。

從 DMA 設備裝載資料到主記憶体

當從一個 DMA 設備中裝載資料到主記憶体中時,使 Cache 中在位址範圍內的所有 Cache line 無效是至關重要的。否則,當內核從 DMA 設備中讀資料時,會讀到保存在 Cache 中 的舊的資料。因此,在內核從 DMA 設備中讀資料之前,必須使相應得 Cache line 無效。

寫緩衝器

當寫緩衝器被允許且其中已有一些資料時,主記憶体中內容或 IO 暫存器值可能是不正確

的。為達到存儲資料的一致性,應該透過 Cache 指令將寫緩衝器清空。

(36)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 35 V1.1 - Agu 29, 2007

1.8 LIM 和 LDM

1.8.1 LIM-Local Instruction Memory

LIM(指令記憶體)系統包括位於 I-Cache 控制器中的 SRAM(Synchronous RAM)。SRAM 提供了存取存儲塊的快速介面。用戶可以透過 CCR 控制暫存器的 Bit2 來使能 LIM。注意,

LIM 設備被允許並使用之前,必須正確初始化。S+core7 處理器提供了可以初始化 SRAM 或 向 SRAM 填充內容的 Cache 指令。

1.8.2 LDM-Local Data Memory

LDM(資料記憶體)系統也包括 SRAM(Synchronous RAM)。SRAM 提供了存取存儲塊的 快速介面。用戶可以透過 CCR 控制暫存器的 Bit3 來使能 LDM。注意,LDM 設備被允許並使 用之前,必須正確初始化。S+core7 處理器提供了可以初始化 SRAM 或向 SRAM 填充內容 的 Cache 指令。

LDM 的位址範圍可以透過 Cache 指令(填充 LDM)來配置,當執行“填充 LDM"指令時,

D-Cache 控制器可以記錄 LDM 設備的實體位址。

1.9 片上除錯

S+core7 處理器的 Debug 機制具備如下特徵:

片外 Debug Memory 存取

SJTAG 允許處理器在 Debug 模式下存取片外的指令或資料。處理器發出的存取申請經 JTAG 協議解析後發送到由 Debug Host PC 控制的 Debug Probe 中。然後,Debug Probe 再將要存取的位址重定位到 Probe Memory 的位址。接下來,對應位址中的資料就會再 經過 JTAG 然後被讀到處理器中。

透過這種機制,不需要晶片具備 Debug ROM 就可以進行系統除錯,從而實現了處理器 與 Debug Host PC 間的通信。

硬體斷點

提供兩種硬體斷點。用戶可配置這兩種硬體斷點,以便在下列情況時發生 Debug 異常:

• 從特定位址中取指令(Breakpoint)

• 從特定位址中取資料與存取資料(Watchpoint)

軟體斷點指令

提供兩個輔助的指令,這兩個指令可輔助系統除錯。

• 軟體斷點除錯(SDBBP,Software Debug Breakpoint)

• 從 Debug 異常返回(DRET,Debug Exception Return)。

(37)

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 36 V1.1 - Agu 29, 2007

單步執行

透過處理器提供的單步異常機制,可實現一條指令一條指令地執行程式,從而進行程式除 錯。

Debug 中斷

Debug 中斷用於強制處理器在任何時候進入 Debug 模式 DMA 存取

由 SJTAG 直接控制 DMA 通道是透過 BIU 來存取系統匯流排的。當用戶需要直接下載代

碼到系統記憶體中時,這一特性很有用。

參考文獻

相關文件

使用木工機器、手提電動工具及手工具,將 選用的實木材依據競賽規定的尺寸大小自行在家

則察看自己的 cache 是否有紀錄,若否才前往 root(.)3. DNS 主機會先將該查詢記錄記憶在自己的

[r]

‡ Verio 提供網站代管公司完整的軟體、運算 與網路資源,也提供網路零售業者開發電子 商務及網站代管的服務 V i 也提供小型 商務及網站代管的服務。

New: Overall correct % for each dimension in Maths and presented in a bar

The Model-Driven Simulation (MDS) derives performance information based on the application model by analyzing the data flow, working set, cache utilization, work- load, degree

– For each k, the faster, smaller device at level k serves as a cache for the larger, slower device at level k+1. • Why do memory

定義: 供應商按貨品定價提供的 折扣2. 供應商按貨品的淨發票價所提