資料介紹
隨著物聯網技術的不斷發展,嵌入式科技得到更為廣泛的應用,其中FPGA和嵌入式操作系統的組合前景良好,它們的應用極大的改變了嵌入式開發的效率。為使得Nios II軟核和RTEMS嵌入式系統相結合,首先介紹了Nios II的軟件開發環境,然后詳細闡述如何在Nios II平臺下搭建RTEMS嵌入式開發環境。
1.引言
隨著技術的不斷發展,嵌入式技術逐漸成為計算機技術的一個重要分支。由于嵌入式產品所運用場合多種多樣,不同應用場景對嵌入式實時響應、成本都有著不同的需求。嵌入式開發涉及硬件和軟件設計,其中硬件開發包括板級開發;而軟件開發則需要在硬件開發完成后才能開始,且與硬件有著緊密的關系。但FPGA的出現將徹底改變傳統嵌入式開發模式,使得嵌入式開發工程師可以像PC端軟件開發一樣開發嵌入式軟件,降低嵌入式開發的成本。
RTEMS(Real - Time Executivefor Multiprocessor Systems)是一個開放源代碼的實時嵌入式操作系統,對各類主流的嵌入式平臺都有良好的支持,同時其也有著良好的開發軟件。目前無論是航空航天、軍工,還是民用領域RTEMS都有著極為廣泛的應用。
Nios II由美國Altera公司推出的基于Nios的第二代32位RISC軟核,基于FPGA平臺,其性能可達200MIPS,是一款可定制的高性能嵌入式軟核,配合Altera官方提供的開發者套件,嵌入式工程師可以快捷、高效的進行硬件、軟件的開發。
2.基于Nios II的SOPC開發環境
2.1 Altera SOPC Builder
SOPC Builder是一個全自動的SOPC硬件開發環境,設計者可以通過Altera提供的IP宏選擇適合自己應用的外圍功能模塊,并進行內存基地址的分配、中斷請求線和內部總線的適配。與此同時,還可以通過HDL文件來自定義外設模塊,比如DM9000A以太網控制器。SOPCBuilder使得可以在短暫的時間內完成一個完整的硬件開發系統。
2.2 SOPC硬件系統
通過Altera提供的Quartus II和SOPCBuilder可以快速自定應硬件系統,圖1是針對Altera颶風III代EP3C16Q器件定制的硬件系統nios2rtems示例圖。
圖1 nios2rtems示例圖
硬件系統nios2rtems采用Nios II快速型軟核,為加快其運行速率,系統時鐘為100MHz,外圍模塊有jtag-uart、sdram、epcsflash、interval timer等,使用Avalon總線作為數據及控制總線。
2.3 SOPC軟件系統
通過使用Nios II IDE添加軟件工程,編譯即可生成與硬件相關聯的描述性文件,其中最為重要的是system.h文件以及HAL驅動。
system.h文件提供nios2rtems硬件的描述,包含各個模塊的基址、模塊所使用的中斷號和中斷優先級及外設模塊的符號名。它同SOPCBuilder提供的各個外設模塊的寄存器描述構成了HAL庫的基礎,同時也是驅動開發的基礎。而HAL作為硬件抽象層,通過函數封裝為上層應用提供統一的調用API接口。
3.RTEMS開發環境搭建
3.1 Nios II交叉編譯工具
有兩種方式完成交叉編譯工具的安裝,其一是通過官方提供的定制腳本來安裝;其二就是通過獲得各個組件的源代碼、補丁來手動編譯安裝。由于手動編譯安裝可能由于某個版本的錯誤選擇而使得編譯失敗,這里我們采用定制腳本來進行安裝。
3.1.1設置
為獲得支持Nios II平臺的嵌入式開發環境,需要準備工具包的源碼和定制腳本,以及工程目錄。
首先,為nios2rtems設置工作目錄:
mkdir-p nios2rtems/rtems/src
然后,獲得RTEMS源碼構建套件,其大部分是由python所寫的腳本文件。由于托管在git倉庫,所以必須有git工具并通過下面代碼獲得工具套件源碼:
$git clone git://git.rtems.org/rtemssource-builder.git
3.1.2檢查
RTEMS源碼構建套件為檢查編譯環境是否已經就緒提供了相應的工具sb-check:
$source-builder/sb-check
RTEMS Source Builder environment is ok
顯示編譯環境已經準備就緒3.1.3編譯
源碼構建套件中提供了若干平臺的支持,在編譯之前可以通過sb-set-builder命令的list-bsets選項查看其支持的平臺。
$/source-builder/sb-set-builder-list-bsets
…
4.10/rtems-nios2.bset
4.11/rtems-nios2.bset
…
從輸出結果可以知道,RTEMS在4.10版本就已經支持nios2平臺了,這里我們選擇最新的4.11版本。通過如下命令可以開啟nios2平臺的交叉編譯工具的構建:
$sb-set-builder-log=l-nios2.txt\-prefix=$HOME/nios2rtems/rtems/4.11\4.11/rtems-sparc由于構建過程中需要對所缺文件進行在線的下載,整個過程可能持續非常長在$HOME/nios2rtems/rtems/4.11目錄下的bin/文件夾下可以看到已安裝的nios2-rtems4.11-gcc等工具。
3.2 BSP支持包構建
3.2.1 RTEMS BSP結構
RTEMS下關于nios2平臺的主要部分有:第一,CPU相關,該部分包含和CPU功能相關的代碼,主要涉及CPU上下文切換以及CPU中斷異常處理等代碼;第二,外設相關,該部分包含外設硬件的寄存器信息等和CPU內部功能相關功能代碼;第三,BSP相關,該部分包含硬件系統中外設相關代碼,例如console、timer以及硬件初始化等[5]。
3.2.2 Nios II BSP構建
Nios II的驅動實現較為簡單,對硬件的操作主要涉及對外設硬件所在地址的讀寫操作[6]。
在RTEMS中添加Nios II支持可以分為以下三個步驟。
首先,構建cpu對Nios II支持,主要是提供CPU進程上下文切換和中斷異常處理相關代碼,具體需要實現以下功能:
1)_CPU_Context_switch()以及_CPU_Context_restore(),函數主要功能用于保存和恢復當前上下文相關的寄存器值。
2)_exception_vector(),處理CPU異常函數,用于檢查硬件當前狀態,并根據異常類型跳轉至異常處理服務程序或者中斷處理程序中。
3)_Exception_Handler(),異常處理服務程序。
4)_ISR_Handler(),中斷服務程序。
5)其它輔助函數,例如中斷注冊、使能及禁止中斷等功能。
其次,添加外設對Nios II支持,主要是提供與CPU異常等相關的代碼,具體需要實現以下功能:
1)中斷的管理,包括中斷的注冊、中斷使能以及中斷禁止等功能,這是對cpu的進一步封裝(可選)。
2)Timer和Clock的等驅動服務程序。
3)外圍設備的寄存器相關信息,都可以在SOPC Builder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,將所有外設的寄存器相關頭文件信息放入c\src\lib\libcpu目錄中。
4)添加其他可能需要的Cache操作相關代碼。
最后,添加BSP對Nios II支持,該部分以RTEMS中nios2_iss為模板,提供基本的驅動程序,一般包括以下基本內容:
1)Clock驅動,Timer驅動,jtag-uart驅動。這一部分代碼涉及對底層硬件的讀寫操作,非常依賴于Nios2eds生成的system.h文件及相關寄存器頭文件。
2)start.S及bspstart.c,操作系統啟動文件。文件start.S包含RTEMS的啟動代碼,包括初始化處理器和單板,為之后的C程序運行提供棧空間,使之可以進入bspstart.c進一步初始化BSP.
3)其他外設驅動,網絡驅動,攝像頭驅動等都在此處添加。
3.2.3編譯下載
準備好Nios II的BSP之后既可以按照RTEMS官方提供的內核編譯流程編譯,之后即可編譯鏈接用戶應用程序。通過命令行的nios2-download即可實現程序下載。
4.結論
本文首先介紹了如何使用Quartus II、SOPC Builder工具進行系統開發的一般流程,并簡要分析NiosII硬件系統及其軟件系統的架構。接著詳細講述如何為RTEMS構建支持NiosII的板級支持包以及使用Nios2eds進行應用軟件的開發。全文從底層硬件到上層軟件,詳細描述了如何為基于NiosII軟核構建基于RTEMS的板級支持包。本文同時給出了基于Nios II軟核的RTEMS移植方法和實驗平臺構建的一般方法。
12閱讀更多
?
1.引言
隨著技術的不斷發展,嵌入式技術逐漸成為計算機技術的一個重要分支。由于嵌入式產品所運用場合多種多樣,不同應用場景對嵌入式實時響應、成本都有著不同的需求。嵌入式開發涉及硬件和軟件設計,其中硬件開發包括板級開發;而軟件開發則需要在硬件開發完成后才能開始,且與硬件有著緊密的關系。但FPGA的出現將徹底改變傳統嵌入式開發模式,使得嵌入式開發工程師可以像PC端軟件開發一樣開發嵌入式軟件,降低嵌入式開發的成本。
RTEMS(Real - Time Executivefor Multiprocessor Systems)是一個開放源代碼的實時嵌入式操作系統,對各類主流的嵌入式平臺都有良好的支持,同時其也有著良好的開發軟件。目前無論是航空航天、軍工,還是民用領域RTEMS都有著極為廣泛的應用。
Nios II由美國Altera公司推出的基于Nios的第二代32位RISC軟核,基于FPGA平臺,其性能可達200MIPS,是一款可定制的高性能嵌入式軟核,配合Altera官方提供的開發者套件,嵌入式工程師可以快捷、高效的進行硬件、軟件的開發。
2.基于Nios II的SOPC開發環境
2.1 Altera SOPC Builder
SOPC Builder是一個全自動的SOPC硬件開發環境,設計者可以通過Altera提供的IP宏選擇適合自己應用的外圍功能模塊,并進行內存基地址的分配、中斷請求線和內部總線的適配。與此同時,還可以通過HDL文件來自定義外設模塊,比如DM9000A以太網控制器。SOPCBuilder使得可以在短暫的時間內完成一個完整的硬件開發系統。
2.2 SOPC硬件系統
通過Altera提供的Quartus II和SOPCBuilder可以快速自定應硬件系統,圖1是針對Altera颶風III代EP3C16Q器件定制的硬件系統nios2rtems示例圖。
圖1 nios2rtems示例圖
硬件系統nios2rtems采用Nios II快速型軟核,為加快其運行速率,系統時鐘為100MHz,外圍模塊有jtag-uart、sdram、epcsflash、interval timer等,使用Avalon總線作為數據及控制總線。
2.3 SOPC軟件系統
通過使用Nios II IDE添加軟件工程,編譯即可生成與硬件相關聯的描述性文件,其中最為重要的是system.h文件以及HAL驅動。
system.h文件提供nios2rtems硬件的描述,包含各個模塊的基址、模塊所使用的中斷號和中斷優先級及外設模塊的符號名。它同SOPCBuilder提供的各個外設模塊的寄存器描述構成了HAL庫的基礎,同時也是驅動開發的基礎。而HAL作為硬件抽象層,通過函數封裝為上層應用提供統一的調用API接口。
3.RTEMS開發環境搭建
3.1 Nios II交叉編譯工具
有兩種方式完成交叉編譯工具的安裝,其一是通過官方提供的定制腳本來安裝;其二就是通過獲得各個組件的源代碼、補丁來手動編譯安裝。由于手動編譯安裝可能由于某個版本的錯誤選擇而使得編譯失敗,這里我們采用定制腳本來進行安裝。
3.1.1設置
為獲得支持Nios II平臺的嵌入式開發環境,需要準備工具包的源碼和定制腳本,以及工程目錄。
首先,為nios2rtems設置工作目錄:
mkdir-p nios2rtems/rtems/src
然后,獲得RTEMS源碼構建套件,其大部分是由python所寫的腳本文件。由于托管在git倉庫,所以必須有git工具并通過下面代碼獲得工具套件源碼:
$git clone git://git.rtems.org/rtemssource-builder.git
3.1.2檢查
RTEMS源碼構建套件為檢查編譯環境是否已經就緒提供了相應的工具sb-check:
$source-builder/sb-check
RTEMS Source Builder environment is ok
顯示編譯環境已經準備就緒3.1.3編譯
源碼構建套件中提供了若干平臺的支持,在編譯之前可以通過sb-set-builder命令的list-bsets選項查看其支持的平臺。
$/source-builder/sb-set-builder-list-bsets
…
4.10/rtems-nios2.bset
4.11/rtems-nios2.bset
…
從輸出結果可以知道,RTEMS在4.10版本就已經支持nios2平臺了,這里我們選擇最新的4.11版本。通過如下命令可以開啟nios2平臺的交叉編譯工具的構建:
$sb-set-builder-log=l-nios2.txt\-prefix=$HOME/nios2rtems/rtems/4.11\4.11/rtems-sparc由于構建過程中需要對所缺文件進行在線的下載,整個過程可能持續非常長在$HOME/nios2rtems/rtems/4.11目錄下的bin/文件夾下可以看到已安裝的nios2-rtems4.11-gcc等工具。
3.2 BSP支持包構建
3.2.1 RTEMS BSP結構
RTEMS下關于nios2平臺的主要部分有:第一,CPU相關,該部分包含和CPU功能相關的代碼,主要涉及CPU上下文切換以及CPU中斷異常處理等代碼;第二,外設相關,該部分包含外設硬件的寄存器信息等和CPU內部功能相關功能代碼;第三,BSP相關,該部分包含硬件系統中外設相關代碼,例如console、timer以及硬件初始化等[5]。
3.2.2 Nios II BSP構建
Nios II的驅動實現較為簡單,對硬件的操作主要涉及對外設硬件所在地址的讀寫操作[6]。
在RTEMS中添加Nios II支持可以分為以下三個步驟。
首先,構建cpu對Nios II支持,主要是提供CPU進程上下文切換和中斷異常處理相關代碼,具體需要實現以下功能:
1)_CPU_Context_switch()以及_CPU_Context_restore(),函數主要功能用于保存和恢復當前上下文相關的寄存器值。
2)_exception_vector(),處理CPU異常函數,用于檢查硬件當前狀態,并根據異常類型跳轉至異常處理服務程序或者中斷處理程序中。
3)_Exception_Handler(),異常處理服務程序。
4)_ISR_Handler(),中斷服務程序。
5)其它輔助函數,例如中斷注冊、使能及禁止中斷等功能。
其次,添加外設對Nios II支持,主要是提供與CPU異常等相關的代碼,具體需要實現以下功能:
1)中斷的管理,包括中斷的注冊、中斷使能以及中斷禁止等功能,這是對cpu的進一步封裝(可選)。
2)Timer和Clock的等驅動服務程序。
3)外圍設備的寄存器相關信息,都可以在SOPC Builder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,將所有外設的寄存器相關頭文件信息放入c\src\lib\libcpu目錄中。
4)添加其他可能需要的Cache操作相關代碼。
最后,添加BSP對Nios II支持,該部分以RTEMS中nios2_iss為模板,提供基本的驅動程序,一般包括以下基本內容:
1)Clock驅動,Timer驅動,jtag-uart驅動。這一部分代碼涉及對底層硬件的讀寫操作,非常依賴于Nios2eds生成的system.h文件及相關寄存器頭文件。
2)start.S及bspstart.c,操作系統啟動文件。文件start.S包含RTEMS的啟動代碼,包括初始化處理器和單板,為之后的C程序運行提供棧空間,使之可以進入bspstart.c進一步初始化BSP.
3)其他外設驅動,網絡驅動,攝像頭驅動等都在此處添加。
3.2.3編譯下載
準備好Nios II的BSP之后既可以按照RTEMS官方提供的內核編譯流程編譯,之后即可編譯鏈接用戶應用程序。通過命令行的nios2-download即可實現程序下載。
4.結論
本文首先介紹了如何使用Quartus II、SOPC Builder工具進行系統開發的一般流程,并簡要分析NiosII硬件系統及其軟件系統的架構。接著詳細講述如何為RTEMS構建支持NiosII的板級支持包以及使用Nios2eds進行應用軟件的開發。全文從底層硬件到上層軟件,詳細描述了如何為基于NiosII軟核構建基于RTEMS的板級支持包。本文同時給出了基于Nios II軟核的RTEMS移植方法和實驗平臺構建的一般方法。
12閱讀更多
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- VScode嵌入式開發之入門教程
- python做嵌入式開發_Python和嵌入式的區別是什么?可以做嵌入式開發嗎?
- 嵌入式開發(一):嵌入式開發新手入門(轉載后續需要修改補充)
- 嵌入式開發資料免費分享
- 嵌入式系統移植-01嵌入式基本概念,嵌入式開發環境搭建,目標機搭建,TFTP服務搭建,NFS服務搭建
- 嵌入式開發(一):嵌入式開發新手入門
- 如何快速熟練掌握嵌入式開發嵌入式開發工程師需要做哪些事情
- FPGA視頻教程之NIOS II開發流程的詳細資料說明 11次下載
- 基于嵌入式開發平臺的搭建與軟件移植 7次下載
- 嵌入式開發平臺的搭建與軟件移植 67次下載
- Nios II入門起步-創建一個嵌入式處理器系統 87次下載
- Nios II 嵌入式處理器 7.1 的新特性
- 基于Nios II和eCos的串口通信程序開發
- 基于ARM的嵌入式開發
- 嵌入式開發圣經
- fpga是嵌入式開發嗎 698次閱讀
- STM32嵌入式開發中的RTOS,你用過哪些? 1683次閱讀
- 嵌入式開發中串口通訊方案 2249次閱讀
- 嵌入式開發的產品有哪些_嵌入式開發的流程 1w次閱讀
- 基于Nios II和uClinux實現遠程測控服務器的設計 653次閱讀
- 基于Mac上做嵌入式開發簡析 3829次閱讀
- 解析嵌入式開發中的一些硬件相關概念 856次閱讀
- 在Nios II平臺下搭建RTEMS嵌入式開發簡析 1510次閱讀
- 嵌入式開發好學嗎_嵌入式開發職業發展方向是什么 8950次閱讀
- 什么是嵌入式開發板_學嵌入式用什么開發板 6944次閱讀
- 嵌入式開發和單片機開發有什么區別和聯系 3.5w次閱讀
- 嵌入式開發工具有哪些_五款嵌入式開發工具推薦 4w次閱讀
- 學嵌入式開發入門_學嵌入式開發需要看哪些書籍 2.4w次閱讀
- 嵌入式開發環境的搭建 8304次閱讀
- 嵌入式開發就業前景分析_嵌入式領域的職業發展方向 1.8w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多