<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于開(kāi)源微處理器OR1200的嵌入式SoC設計

基于開(kāi)源微處理器OR1200的嵌入式SoC設計

作者: 時(shí)間:2016-12-08 來(lái)源:網(wǎng)絡(luò ) 收藏

RISC是一種執行較少類(lèi)型計算機指令的微處理器,起源于80 年代的MIPS主機(即RISC 機),RISC機中采用的微處理器統稱(chēng)RISC處理器。這樣一來(lái),它能夠以更快的速度執行操作(每秒執行更多百萬(wàn)條指令,即MIPS)。因為計算機執行每個(gè)指令類(lèi)型都需要額外的晶體管和電路元件,計算機指令集越大就會(huì )使微處理器更復雜,執行操作也會(huì )更慢。RISC微處理器不僅精簡(jiǎn)了指令系統,采用超標量和超流水線(xiàn)結構;它們的指令數目只有幾十條,卻大大增強了并行處理能力。如:1987年Sun Microsystem公司推出的SPARC芯片就是一種超標量結構的RISC處理器。而SGI公司推出的MIPS處理器則采用超流水線(xiàn)結構,這些RISC處理器在構建并行精簡(jiǎn)指令系統多處理機中起著(zhù)核心的作用。

本文引用地址:http://dyxdggzs.com/article/201612/328022.htm

近年來(lái)開(kāi)放源代碼運動(dòng)迅速發(fā)展,開(kāi)放性源碼的概念已經(jīng)從軟件領(lǐng)域(如Linux,GCC等)擴展到了硬件領(lǐng)域,出現了專(zhuān)門(mén)發(fā)布免費的IP核源代碼的組織--OpenCores.OR1200以其完全開(kāi)放的源代碼和編譯器吸引了設計者。其結構簡(jiǎn)單、通用性和可移植性強,具備完整的開(kāi)發(fā)平臺,非常適合嵌入式SoC設計[1].關(guān)于OR1200的研究也受到學(xué)術(shù)界和工業(yè)界越來(lái)越多的關(guān)注。

1 32位開(kāi)放源代碼處理器核OpenRISC1200

OpenRISC1000系列處理器是開(kāi)放IP核源代碼組織OpenCores公布的32/64位處理器軟核。OpenRISC1200采用了自主設計的OpenRISC1000體系結構和自定義的ORBIS32 指令集。它是一種32位、標量、哈佛結構、5 級整數流水線(xiàn)的RISC,支持Cache、MMU和基本的DSP 功能。OR1200具有較好的可配置性, 使用者可以根據自己的需要定制自定義的指令,確定是否使用MMU,配置Cache 的大小(1 KB~64 KB之間)。OR1200同時(shí)還提供了1個(gè)用于降低功耗的電源管理單元和1個(gè)支持片內調試的調試單元[2].

OR1200有完善的軟件開(kāi)發(fā)環(huán)境和操作系統的支持。使用者可以通過(guò)包括GCC、Binutils和GDB等在內的GNU tool chains進(jìn)行基于OR1200內核的編譯和調試。同時(shí),OR1200擁有專(zhuān)門(mén)的仿真器Or1ksim,可以進(jìn)行指令集一級的仿真,并支持Linux,μClinux,μC/OS-Ⅱ等任何一種現代操作系統。

OR1200典型應用情況[3]:使用0.18 ?滋m和6層金屬工藝時(shí),主頻運行達到300 MHz,可以提供300Dhrystone、2.1MIPS和300 Hz的32 bit×32 bit的DSP乘加操作的能力。OR1200默認配置有100萬(wàn)個(gè)晶體管。

2 系統的總體方案

本文構建以OR1200微處理器為核心,包含軟硬件平臺的嵌入式SoC系統。硬件系統以開(kāi)源32位RISC核+Wishbone總線(xiàn)為主干,進(jìn)行增量迭代開(kāi)發(fā),將仿真驗證過(guò)的模塊逐個(gè)加入到OR1200嵌入式系統中,然后在FPGA上進(jìn)行驗證。軟件部分進(jìn)行交叉編譯環(huán)境的建立、操作系統的移植、應用程序開(kāi)發(fā)并利用驅動(dòng)程序、函數庫,經(jīng)交叉編譯工具最后生成可執行程序下載到內存中。最后在A(yíng)ltera的DE2-70開(kāi)發(fā)板上驗證系統能否穩定運行。系統開(kāi)發(fā)流程如圖1所示:

主函數中3個(gè)任務(wù)函數非常簡(jiǎn)單,優(yōu)先級從高到底分別為1、2、3,系統提供的函數OSTimeDly()分別為10、20、30,OsTimeDly()是將1個(gè)任務(wù)掛起,延時(shí)若干個(gè)時(shí)鐘節拍,CPU可以去執行其它任務(wù)。

圖4給出的是通過(guò)串口工具輸出μC/OS-II多任務(wù)調度的信息,3個(gè)任務(wù)根據優(yōu)先級和延遲時(shí)間正確執行并打印出執行信息,測試證明OR1200嵌入式SoC系統能夠穩定的運行μC/OS-II.

3 硬件平臺的構建

OR1200Q嵌入式SoC系統組件包括:OR1200、Wishbone互聯(lián)模塊、Memory Controller、Flash、SDRAM、UART、GPIO、DM9000A接口模塊以及DM9000A控制器。圖2所示系統的硬件架構。

系統外接50 MHz的時(shí)鐘,經(jīng)過(guò)PLL分頻,系統工作在25 MHz頻率。由于OR1200的可配置性,配置了硬件乘法功能,選擇8 KB的IC(指令緩存)、8 KB的DC(數據緩存),選擇NO_DMMU,NO_IMMU,即未加內存管理單元。起始地址設為0x100,對系統做了硬件映射,復位時(shí),0x04000000地址映射到0x0地址,所以系統可以從Flash啟動(dòng)。Memory Control為統一的存儲控制器模塊,控制著(zhù)SDRAM和Flash 2種存儲器。本系統針對AlteraDE2-70開(kāi)發(fā)板硬件配置選擇64 MB的SDRAM和8 MB的Flash.Flash用于存儲壓縮的內存映像文件及啟動(dòng)程序Bootloder.Bootloder把壓縮的內存映像文件從Flash復制到SDRAM中,并跳到起始位置解壓執行可執行文件、啟動(dòng)操作系統。UART是嵌入式中重要的I/O設備,本系統選擇由OpenCores組織維護的UART16550 IP核,它與國家工業(yè)標準兼容并且可配置。UART通信協(xié)議的要求是:波特率9600 b/s、8個(gè)數據位、1個(gè)停止位、無(wú)奇偶校驗位。GPIO在系統中主要用于控制LED顯示狀態(tài)。DM9000A支持8 bit和16 bit數據接口以適用于不同的微處理器,但是沒(méi)有合適的開(kāi)源IP模塊來(lái)連接DM9000A和Wishbone.因此需要開(kāi)發(fā)1個(gè)IP接口模塊能將Wishbone從設備信號轉換為DM9000A控制信號。這個(gè)接口模塊有2個(gè)接口:1個(gè)連接在Wishbone從設備上;1個(gè)連接DM9000A控制器。DM9000A本身是little-endian,OR1200是big-endian,所以數據線(xiàn)接法應該做交叉接法。

Wishbone互聯(lián)模塊有很多種,比如Wishbone Conbuse、Wishbone Traffic Cop、Wishbone Interconnect Matrix.鑒于本系統外設不多,選擇Wishbone Traffic Cop,它有8個(gè)主設備、9個(gè)從設備。系統2個(gè)主設備即指令總線(xiàn)主設備、數據總線(xiàn)主設備,主設備通過(guò)Wishbone 的總線(xiàn)譯碼器和仲裁器與從設備進(jìn)行數據通信,總線(xiàn)仲裁器選擇控制總線(xiàn)的主設備,保證每個(gè)周期最多只有1個(gè)主設備獲得總線(xiàn)控制權。系統有4個(gè)從設備,分別是UART、Flash、SDRAM和DM9000A.每個(gè)從設備都由32 bit地址線(xiàn)的最高8 bit來(lái)編址,總線(xiàn)譯碼器對主設備發(fā)出的地址的最高3 bit進(jìn)行譯碼來(lái)決定訪(fǎng)問(wèn)哪個(gè)從設備。

4 系統的軟件開(kāi)發(fā)

軟件開(kāi)發(fā)過(guò)程包括交叉編譯環(huán)境的搭建,Bootloader的設計、μC/OS-II的移植和應用程序開(kāi)發(fā)等。

4.1 GNU交叉編譯環(huán)境的構建

OR1200系統使用的是OR32工具鏈,它由GCC, GNU Binutils和GDB組成,另外還提供了OR32模擬仿真工具。gcc-3.4.4用于程序的編譯;Binutils-2.16.1提供了鏈接等各種工具;gdb-5.3用于程序的調試。OR32模擬仿真工具or1ksim工具可以模擬OR1200處理器的行為,讓程序脫離處理器在模擬工具上運行,從而實(shí)現OR1200與程序并行開(kāi)發(fā)。OR32可從opencores網(wǎng)站上下載。

4.2 啟動(dòng)代碼Bootloder的設計

Boot Loader 是在操作系統內核運行之前運行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調用操作系統內核準備好正確的環(huán)境。通常,Boot Loader 是嚴重地依賴(lài)于硬件而實(shí)現的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的 Boot Loader 幾乎是不可能的。盡管如此,我們仍然可以對 Boot Loader 歸納出一些通用的概念來(lái),以指導用戶(hù)特定的 Boot Loader 設計與實(shí)現。

4.2.1 移植分析

對于計算機系統來(lái)說(shuō),從開(kāi)機到操作系統啟動(dòng)需要一個(gè)引導過(guò)程,嵌入式系統同樣離不開(kāi)引導程序,這個(gè)引導程序就是Bootloader.通過(guò)這段小程序,可以初始化硬件設備、建立內存空間的映射表,從而建立適當的系統軟硬件環(huán)境,為最終調用操作系統內核做好準備。

結合前面構建的OR1200嵌入式SoC系統,具體的移植過(guò)程中需要修改或編寫(xiě)以下代碼:

spr_defs.h OR1200相關(guān)寄存器的設置;

board.h系統驗證所用的DE2-70開(kāi)發(fā)板的定義,啟動(dòng)參數等;

flash_boot.S,修改初始化代碼和入口;

flash.ld,代碼在flash中的地址空間安排;

mc.h存儲控制器的初始化;

uart.h UART的初始化;

copier.c下載的程序從Flash拷貝到SDRAM執行的拷貝代碼;

在Makefile中添加Bootloder的編譯支持。

4.2.2 啟動(dòng)分析

0x100處是復位入口地址,但是Flash的初始地址為0x04000000,通過(guò)設置寄存器對系統做了硬件映射。復位時(shí),0x04000000地址映射到0x0地址,所以可從Flash啟動(dòng)。系統加電后,CPU從該地址開(kāi)始執行。該地址也就是系統異常處理向量表第1項(復位)。跳到了init_mc 中,此時(shí)完成了系統的大部分初始化,例如設置寄存器、CPU、SDRAM、Flash.然后把Flash中的拷貝代碼(copier)拷貝到SDRAM,跳到SDRAM中的Copier處,copier負責把Flash中的用戶(hù)程序(userprog.bin)拷貝到SDRAM中去,并跳到0x100處,解壓執行用戶(hù)程序,啟動(dòng)操作系統。此時(shí)的內存映射為:SDRAM為0x00000000~0x04000000, Flash還是0x04000000~0x08000000.Bootloader的啟動(dòng)如圖3所示。

4.3 實(shí)時(shí)操作系統μC/OS-II的移植

μC/OS-II 是一種基于優(yōu)先級的搶占式多任務(wù)實(shí)時(shí)操作系統,包含了實(shí)時(shí)內核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號量,郵箱,消息 隊列)和內存管理等功能。它可以使各個(gè)任務(wù)獨立工作,互不干涉,很容易實(shí)現準時(shí)而且無(wú)誤執行,使實(shí)時(shí)應用程序的設計和擴展變得容易,使應用程序的設計過(guò)程大為減化。μC /OS-II是一個(gè)完整的、可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)內核。μC/OS-II絕大部分的代碼是用ANSI的C語(yǔ)言編寫(xiě)的,包含一小部分匯編代碼,使之可供不同架構的微處理器使用。

μC/OS-II是一個(gè)代碼公開(kāi)、內核精簡(jiǎn)、實(shí)時(shí)性強、支持多任務(wù)的操作系統,非常適合嵌入式系統開(kāi)發(fā)。μC/OS-II 是由與處理器相關(guān)的代碼,與處理器無(wú)關(guān)的代碼及與應用程序相關(guān)的代碼組成。它在設計之初就已經(jīng)充分考慮了可移植性,所以μC/OS-II在不同處理器上的移植是比較容易的,


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 開(kāi)源微處理器OR120

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>