SOPC 系統建立及uClinux 移植實現
摘要:本文通過具體實現一個可以運行uClinux操作系統的最小SOPC系統,較為完整地介紹了構建SOPC系統以及構建NiosII軟核處理器的方法及步驟,并詳細描述了uCLinux操作系統在該SOPC系統上的移植方法。此外,還進行了基于NiosII處理器uClinux操作系統下應用程序的開發,以從總體上完成實用性的驗證。
本文引用地址:http://www.104case.com/article/149190.htm引言隨著大規模集成電路技術的進步和制造工藝水平的提高,嵌入式系統的開發變得日益復雜。傳統的嵌入式系統設計方法已經不能適應當前嵌入式系統設計的需要。單個芯片容量的增大、功能的增加、體積的減小使得設計變得更加便利,同時也為嵌入式系統設計開發開辟了新的天地,即出現了可編程片上系統(SystemOnProgrammableChip,SOPC)技術。SOPC技術大大促進了軟硬件協同設計及計算機系統設計自動化的發展,并具有可裁剪、可擴充、可升級的靈活設計方式及在系統可編程功能。
通常,嵌入式系統的軟件部分主要基于實時操作系統(簡稱RTOS),在特定的RTOS之上開發應用軟件。通過屏蔽掉許多底層硬件細節的方法,可以使得程序開發人員改進軟件功能、提高設計效率、降低開發難度,同時使得程序調試方便、移植簡單、容易維護,大大縮短了開發周期。uClinux是一種廣泛應用于嵌入式設備中的實時操作系統,針對微控制器領域而設計。它的特點是較好的穩定性、出色的網絡功能和高效的文件系統支持等。最大特征就是不使用內存管理單元模塊(MMU:MemoryManagementUnit),很適合那些沒有MMU的處理器。如把uClinux操作系統移植于SOPC系統,便可以使得此類系統大大縮短軟硬件開發的時間,并可進一步增強整體功能。
1SOPC硬件系統的建立1。1硬件系統架構不同于許多基于微處理器的嵌入式系統,基于SOPC的嵌入式系統具有可配置的特點,可根據需要靈活地在一片FPGA中構造外設接口。本文構建的最小系統可運行uClinux,采用Altera公司的CycloneⅡ芯片EP2C35及相關外圍電路組成。其中,外圍電路包括1片16MB的DDRSDRAM、l片16MB的Flash、RS232、串行配置芯片EPCS64以及供電系統。系統體系架構如圖1所示。

1。2SOPC硬件開發NiosⅡ系列嵌入式處理器是一款采用流水線技術、單指令流的RISCCPU,廣泛應用于嵌入式系統。NiosⅡ包括3種內核:快速的F(最高性能的優化)內核、經濟的E(最小邏輯占用的優化)內核以及標準的S(平衡于性能和尺寸)內核,每種內核根據不同的性能而優化。NiosⅡ嵌入式CPU支持32位指令集、32位數據線寬度、32個通用寄存器、32個外部中斷源、2GB尋址空間,包含高達256個用戶自定義的CPU定制指令。NI0SⅡCPU的所有數據、程序都是通過Avalon總線傳輸的,通過使用Altera的QuartusⅡ軟件以及SOPCBuilder工具可以輕松地將NiosⅡ內核嵌入到系統里。
SOPC硬件開發主要使用QuartusⅡ和SOPCBuilder。由于本系統中使用到DDRSDRAM,所以在系統開發前必須安裝與QuartusⅡ版本相兼容的Megacore程序以提供DDRSDRAMIP核。硬件設計主要工作有以下兩步:(1)定制NiosⅡ處理器軟核。用SOPCBuilder軟件從NiosⅡ處理器內核和NiosⅡ開發套件提供的外設列表中選取合適的CPU、存儲器以及各外圍器件(如片內存儲器、PIO、定時器、UART、片外存儲器接口等),并定制和配置它們的功能、分配外設地址及中斷號、設定復位地址、最后生成系統。用戶也可以添加用戶自身定制指令邏輯到NiosⅡ內核以加速CPU性能,或添加用戶外設以減輕CPU的任務。定制好的NiosⅡ處理器軟核如圖2所示。
(2)建立完善頂層模塊。使用SOPCBuilder生成NiosⅡ系統后,將其集成到整個QuartusⅡ工程中。根據需要在工程中加入NiosⅡ系統以外的邏輯,用戶也可以集成自身定制的硬件模塊到SOPC設計之中,或集成從Altera或第3方IP供應商得到的其它現成的知識產權設計模塊。頂層模塊主要包括DDRSDRAM模塊、FLASH模塊、UART模塊以及PIO模塊。
2裁剪和移植uClinux操作系統本系統使用的是Microtronix公司負責維護和發行的NiosⅡuClinux版本。該版本uClinux是2。6。11的內核,目前在NiosⅡ上運行最為穩定。在NiosⅡ上實現uClinux操作系統環境主要包括兩個部分,一是針對NiosⅡ處理器移植的uClinux內核,二是建立一個包含基本系統工具和應用程序的根文件系統。

2。1建立uClinux內核該項工作主要需在NiosIIIDE環境中利用MicrotronixDevice欄中選擇uClinux內核上傳的位置(FLASH)以及內核運行的位置(SDRAM),完成生成內核的配置。回到NiosIIIDE主窗口界面后,在ProjectNavigator窗口中可以看到uClinux_kernel工程已經建立好。此時在uClinux_kernel上點擊右鍵選擇ConfigureKernel,進入uClinux內核配置界面,并根據硬件系統進行uClinux內核配置。需配置的主要選項及相關描述如下:(1)Processertypeandfeature--->Platform。項選擇AlteraCycloneDevelopmentBoardSupport;(2)DeviceDrivers--->ATA/ATAPI/MFM/RLLsupport選項關掉,我們所建立的NiosII系統沒有外部IDE接口外設;(3)DeviceDrivers--->Characterdevices--->NiosPIObuttonssupport選項關掉,因為系統中沒有buttonsPIO,若選擇則會編譯出錯;(4)DeviceDrivers->Characterdevices--->Serialdrivers--->AlteraJTAGUARTsupport選項選中,為控制臺選擇JTAG下載方式;(5)DeviceDrivers->Characterdevices--->Serialdrivers--->Niosserialsupport選項選中,通過RS232串口與系統進行通信交流;(6)其余配置不需要改變。
配置完成后予以保存并回到NiosIIIDE主窗口界面。在ProjectNavigator窗口中右鍵點擊uClinux_kernel選擇BuildProject編譯內核。編譯完成后,在ProjectNavigator窗口中展開uClinux_kernel工程。可以看到,在uClinux_kernel的目錄中,已經生成了vmlinux。bin文件。在該文件上點擊右鍵選擇Upload即可啟動燒寫程序,將生成的內核二進制文件vmlinux。bin寫入Flash芯片中。
2。2建立uClinux文件系統uClinux文件系統的建立與uClinux內核的建立方法類似,也是在NiosIIIDE環境中利用MicrotronixInstallMinimal按鈕,只選擇必須的工具和應用程序。這種情況下生成的基本文件系統僅為872K,很適合資源緊湊的開發平臺。
評論