嵌入式處理器基於SPI引導的RAM 自檢論文

嵌入式處理器基於SPI引導的RAM 自檢論文

  0 引言

  隨著全球網路進一步擴充套件到新終端裝置和以前未連線的行業中,網路安全對消費者、企業和其他機構變得越來越重要。人們越來越需要效能安全、價格便宜的裝置裝置。為了降低成本, 往往需要簡化電路設計。例如,採用SPI 方式引導硬體,使用SPI Flash 作為儲存媒介,減少匯流排的佈線,是簡化硬體電路的較好的方法。但採用SPI 方式引導硬體,需要將程式引導到DDR 記憶體中,同時又需要對DDR 記憶體進行檢查,這就出現了矛盾。

  1 基於SPI 的硬體引導

  本文以一個例項,對嵌入式處理器基於SPI 引導硬體時如何進行RAM 檢查進行詳細的介紹。是嵌入式處理器使用SPI 引導的硬體框圖。硬體載入程式和系統程式放在SPI Flash 中,在上電引導後,系統程式會被搬移到DDR 空間,在D DR 空間執行起來。現在以U-Boot 硬體載入程式為例, 介紹以SPI 引導模式引導系統硬體的情況。U-Boot 是德國DENX 小組的開發用於多種嵌入式CPU 的Bootloader 程式, 可以支援多種嵌入作業系統和多種處理器。編譯的U-Boot 程式, 往往是執行在NOR Flash 或DDR 中的。但在基於SPI 引導時, 需要先從SPI Flash 往片內RAM 裡執行一段程式, 將DDR 記憶體檢查一遍, 然後再將U-Boot 引導到DDR 記憶體中去執行。

  2 SPI 引導採用的資料格式

  在TI 公司的DSP 及ARM 處理器,飛思卡爾公司POWERPC 及ARM 處理器, 都支援基於SPI 的引導模式。在這些處理器的片內ROM 都包含基本的SPI 引導驅動程式。本文以飛思卡爾公司的QorIQ P1010 處理器為例介紹其引導過程。P1010 片內的SPI 驅動程式能夠把SPI 介面Flash 中的程式複製到DDR 記憶體或片內RAM 中。不過,在複製之前,需要先對DDR 控制器或片內RAM 進行配置。這就需要定義一個特定的資料結構,完成載入程式所需要的環境配置。對於不同的處理器,生產廠家定義的引導資料結構是不同的。在P1010 處理器完成復位序列後,透過選擇使用處理器片內ROM 的`SPI 引導配置程式,而後處理器核心開始執行該片內ROM 程式, 配置SPI 控制器,並與外部的SPI Flash 通訊,將程式複製出來並跳到指定的位置執行時配置資料寫入此地址。當最低位為1 時,配置地址域高30 bit 代表的是指令,此時配置資料寫入此地址。這樣的結構讓使用者可以方便地配置4 B 對齊的記憶體,完成控制指令操作,或定義程式配置階段的結束

  當CNT ( 最低位)=0 時, 則高30 bit 用作要寫入資料的地址,配置資料包含要寫入的資料。

  當CNT=1 時, 則高30 bit 用作控制指令。

  當EC=1 時, 代表配置階段結束指令。

  當DLY=1 時, 代表延時一定時間指令。

  當CF=1 時, 代表更改SPI 頻率的指令。

  CNT 表示地址模式與指令模式的切換。

  當處理器核心開始複製程式時, 先判斷0X40 位置的標誌是否正確, 如果正確, 先根據配置的地址/資料對的個數N 來配置一些外圍暫存器,然後從0X50 處指示的Flash 地址搬移使用者程式碼資料到0X58 指示的地址。搬移完成後,從0X60 指示的地址開始執行。將片內執行的這一段程式叫TPL 程式。

  3 片內RAM 執行的TPL 程式

  P1010 包含256 KB 的L2CACHE, 也可以當片內RAM 使用。要檢查DDR 記憶體, 要先在片內RAM 裡執行一小段TPL 程式。這一段程式是對基於DDR 載入程式U-Boot 的一個裁剪, 主要完成核心的配置,初始化串列埠終端, 初始化DDR 記憶體控制器, 然後檢查DDR 記憶體。在這裡不需要設定U-Boot 的環境變數,不需要配置乙太網等其他的外圍器件。編譯後的TPL 目標檔案為uboot-tpl.bin 。TPL 程式的編譯按RAM 引導的方式處理。程式的開始地址設為:0xc0030000~0xc0038800 。現在需要對編譯後的uboot-tpl.bin 進行格式處理, 在其前面加上SPI 引導的可以識別的資料表頭,是按照(SPI 引導模式的資料結構) 和( 配置地址域的資料格式) 完成的一個SPI 引導配置例項。在這個例項中, 將L2CACHE 設為片內RAM, 開始地址設為0xc0000000 。這一部分空間在處理器核心引導時已經透過TLB 對映, 可以直接使用。

  4 結論

  嵌入式處理器在使用SPI 引導硬體時,先透過片內RAM 執行一段程式,對DDR 記憶體進行自檢,而後再將U-Boot 程式及環境變數引導到DDR 空間,把硬體系統引導起來。透過例項化的應用,證明這在高性價比的嵌入式應用中是一個不錯的選擇,不僅能提高系統的可靠性,而且簡單易行。

最近訪問