第三章 硬體架構與單元設計
3.2 嵌入式系統架構
3.2.3 軟體介面與流程規劃
硬體電路裝置,若能搭配具有彈性優勢的軟體程式,必能提升其執行的效 率,電腦端使用者操作介面與嵌入式系統內部軟體程式的規劃,將於此一節做說 明:
1. 資料傳輸規劃
電腦端與實驗板之間採用半雙工(Half-Duplex)的工作模式,透過 RS-232 進行
資料傳輸,所謂半雙工,即是一次僅能有一方傳輸資料,另一方須等到對方傳送 完後才能傳送。因此我們先定義出之間的通訊格式,如圖3-8 與圖 3-9 所示,電 腦端發出命令(CMMAND)與 FLASH 區塊(SECTOR)代號後,進入等待狀態,待 實驗板收到命令並準備妥當後,產生回應(RESPONSE)訊號,開始進行資料區 (DATA BLOCK)的傳送或接收;資料區的緩衝區(BUFFER)大小為 256 個位元組。
SECTOR
COMMAND BUFFERN
電腦端
實驗板 RESPONSE
DATA BLOCK
RESPONSEN
圖3-8 電腦端資料傳送資料示意圖
SECTOR COMMAND
BUFFERN
電腦端
實驗板 RESPONSE
DATA BLOCK
RESPONSEN
圖3-9 電腦端資料接收資料示意圖
所有的命令皆從電腦端所發出,其功能對照如表3-1 所示;而為了讓命令與 封包的關係能更加明確,採用封包的第一個英文字母來表示,將各命令執行時的 示意圖依序畫出,如圖3-10、圖 3-11、圖 3-12、圖 3-13 與圖 3-14 所示。
舉例來說,若要執行 Stroe_Image 命令,則由電腦端先發出 C=01 與 S(Ori) 的位置,等到取得實驗板回應後,再將影像資料分為225 次(160×120×3÷256)依序 的傳送出去,如圖3-10 所示;Display_Image 命令類似於 Store_Image 命令,純粹
命令執行流程很相似,但執行的內容不同,如圖3-12 與圖 3-13 所示。若要加密 影像,首先從電腦端發出 C=03 與 S(Ori)的位置,等到取得實驗板回應後,再將 原始金鑰資料(16 Byte)傳送出去,待實驗板軟體金鑰擴展後,啟動 AES IP 執行影 像加密,並回傳加密金鑰(11×16 Byte),Decrypt_Image 命令可以依此類推。
表3-1 命令與功能對照表
COMMAND BUFFER 功能描述
Store_Image(01) IMAGE DATA 接收電腦影像資料(B1~B225)並存入記憶體 Display_Image(02) IMAGE DATA 讀取記憶體影像資料(B1~B225)並回傳電腦
Encrypt_Image(03) KEY DATA 接收電腦原始金鑰(B1)後,
產生加密金鑰(B2)並回傳、執行影像加密
Decrypt_Image(04) KEY DATA 接收電腦原始金鑰(B1)後,
產生解密金鑰(B2)並回傳、執行影像解密 Read_Time(05) TIME DATA 回傳執行時間(B1)
圖3-10 執行 Store_Image 命令的封包示意圖
圖3-11 執行 Display_Image 命令的封包示意圖
圖3-12 執行 Encrypt_Image 命令的封包示意圖
圖3-13 執行 Display_Image 命令的封包示意圖
圖3-14 執行 Read_Time 命令的封包示意圖
2. 使用者操作介面
如圖3-15 之規劃,實際畫面可與圖 4-3 實驗結果對照,分為 A~D 四種區域:
z A 區為金鑰區:在 A-1 區供使用者輸入金鑰,最大輸入字元數量為 16 個 字元;A-2 區為 11 組金鑰擴展後的結果,顯示格式以 16 進制表示法。
z B 區為影像區:影像大小皆為 160×120 彩色圖片,在 B-1 區供使用者挑 選欲處理之圖片;B-2 區為影像加密後的顯示區;B-3 區為影像解密後的 顯示區。
z C 區為按鈕區:依據先前規劃之封包格式,讓使用者選擇所要發送的命 令至嵌入式平台上。
與其耗費之時間。
圖3-15 使用者操作介面規劃圖
3. 嵌入式系統程式流程
在嵌入式系統上建立的軟體程式流程如圖 3-16 所示,程式會先進行 UART 初始化設定,設定項目與數值如下:
z 傳送鮑率(Baud):115,200 bps(bit per second)。
z 資料位元:8 位元。
z 同位檢查:沒有同位檢查。
z 停止位元:1 位元。
接著便是針對命令的判斷與執行其副程式:
z CMD 值為 01:如圖 3-7 的 Store_Image,首先抹除所規劃的 Original 空 間等待寫入,接著接收電腦端傳輸的影像資料並寫入Original 空間。
z CMD 值為 02:如圖 3-7 的 Display_Image,選擇 Encrypted_Image 或 Decrypted_Image 空間的影像資料,並讀出傳回至電腦端顯示。
z CMD 值為 03:如圖 3-7 的 Encrypt_Image,首先接收電腦端傳輸的原始 金鑰並將其經過軟體擴展(KeyExpansion),而後控制 AES IP 將擴展後之 金鑰存入內部的Key RAM,接著抹除所規劃的 Encrypted_Image 空間等 待寫入。上述步驟完成後,即可將影像資料從Original 空間讀出經由 AES IP 進行加密處理後寫入 Encrypted_Image 空間。
z CMD 值為 04:如圖 3-7 的 Decrypt_Image,首先接收電腦端傳輸的原始 金鑰並將其經過軟體擴展(InvKeyExpansion),而後控制 AES IP 將擴展後 之金鑰存入內部的Key RAM,接著抹除所規劃的 Decrypted_Image 空間 等待寫入。上述步驟完成後,即可將影像資料從Encrypted_Image 空間讀 出經由AES IP 進行解密處理後寫入 Decrypted_Image 空間。
z CMD 值為 05:Read_Time,讀取前次所下命令的流程執行時間。
UART INIT START
CMD = ?
01 03
Send to PC for Display Write_Original
Read PC image via RS232
KeyExpansion and store
Do_ Encryption
02 04 Read key via RS232
Read key via RS232
InvKeyExpansion and store
Read_Encrypted
Write_Decryption
Send time to RS232
05
Erase Flash
Erase Flash Erase Flash
圖3-16 嵌入式系統程式流程圖
由於採用 RS-232 與 SPI 介面的記憶體,所以本系統耗費最多時間的地方,
分別是電腦端與實驗板系統之間的資料傳輸與存取快閃記憶體的資料,若要減少 時間的耗費,讓整體的執行速度能有提升,改選用其他傳輸介面與記憶體是個直 接的方法,亦是本研究所提出的第二種架構,將在第3.3 節詳細說明。