在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在Nios II嵌入式平臺上uClinux的移植研究

電子工程師 ? 來源:微計算機信息 ? 作者:余臘生 洪飛 ? 2021-03-24 17:06 ? 次閱讀

1. Nios II嵌入式處理器

Nios II是運行在FPGA上的五級流水線、單指令的RISC處理器,它專門針對Altera的可編程邏輯器件及片上可編程的設計思想做了相應的優化。作為一種可配置的精減的RISC處理器,它可以與用戶自定義邏輯結合構成SOPC系統,并下載到Altera的可編程器件中。32位的Nios II軟核,結合外部閃存以及大容量存儲器,可以構成一個功能強大的32位嵌入式處理器系統。此外,利用Altera提供的IDE(Integrated development environment)開發工具 可以方便的在調試模式下調試處理器,提高開發的速度。

使用Cyclone II版Nios II應用開發板Nios-DEVKIT-2C35 作為移植實現的平臺,開發板主要包括Cyclone II EP2C35器件、EPM7128AE CPLD配置控制邏輯、存儲器、串行配置連接器、FPGA和CPLD的JTAG接口等。

2. 移植

2.1. uClinux嵌入式操作系統

uClinux是Linux的一個嵌入式版本,它經過小型化改造,形成了一個高度優化、代碼緊湊的嵌入式Linux,并保留了Linux的大多數優點。最新的2.6版本在內核主體中加入了提高中斷性能和調度響應時間的改進,其中有三個最顯著的改進:采用可搶占內核、更加有效的調度算法以及同步性的提高 。

2.1.1. uClinux操作系統的移植

uClinux源代碼絕大部分都是使用的C語言,只有那些直接與處理其硬件相關的代碼如開關CPU中斷等操作才采用匯編語言編寫,因此uClinux具有很好的移植性。一般來說,uClinux的移植大致分為三類:

1) 結構層次的移植。如果待移植的處理器結構不同于任何已經支持的處理器結構,則需要修改linux/arch目錄下的相關處理器結構的文件。uClinux內核代碼的大部分是獨立于處理器和其體系結構的,但是其最底層的代碼也是特定于各個系統的。他們的中斷處理上下文、內存維護、任務上下文和初始化過程都是獨特的。對一個新型的體系,其下層程序可以模仿與其相似的體系程序編寫。

2) 平臺層次的移植。待移植處理器是某種uClinux已支持體系的分支處理器,即如果待移植的處理器是基于Nios II內核的,而Nios II內核已經被uClinux支持,則需要在相關體系結構目錄platform下建立相應目錄并編寫相應代碼,這些代碼主要是跟蹤程序(實現用戶程序到內核函數的接口等功能)、中斷控制調度程序和內存初始化程序等。

3) 板級移植。如果所用處理器(如Cyclone II版本系列)已經被uClinux支持的話,就只需要板級移植了。板級移植需要修改或添加linux/arch/Nios2nommu/scripts目錄中的文件,該目錄中主要是與具體硬件平臺相關的配置,可以利用Nios II自帶的SOPC Builder軟件生成具體平臺對應的配置文件。

對于uClinux已經支持的硬件架構,移植的過程相對較為簡單,主要考慮修改與硬件開發平臺相關的具體因素,如內存大小、外圍設備的配置等。一般現在做的大部分移植都是平臺層次移植和板級移植。

2.1.2. initramfs文件系統

在uClinux 2.6操作系統中,用initramfs文件系統取代了以前的romfs文件系統。

1. romfs文件系統。romfs文件系統是在uClinux 2.4以及之前版本廣泛用到的文件系統,這種文件系統相對于一般的ext2/ext3文件系統要求更少的空間。romfs文件系統不支持動態擦寫保存,對于系統需要動態保存的數據采用虛擬RAM盤的方法進行處理(RAM盤采用ext2/ext3文件系統)。

2. initramfs文件系統。initramfs是在2.5版本內核中引入的技術,它的基本思想是:在內核鏡像中附加一個cpio包,cpio包中包含了一個小型的文件系統,當內核啟動時,內核將cpio包解開,并且將其中包含的文件系統作為初始的根文件系統,內核中的一部分初始化代碼會放到這個文件系統中作為用戶層進程來執行。這樣帶來的明顯的好處是精簡了內核的初始化代碼,例如尋找真正的啟動盤、啟動時的網絡安裝、ACPI的安裝等,這些代碼都可以從內核中移出,把它們都轉移到用戶空間完成,這樣使得開發者在用戶層就可以定制自己的啟動過程,而不需要去修改內核代碼,使定制啟動過程變得更加容易。

2.2. 開發環境的建立

1. 建立交叉編譯環境。可以在uClinux官方網站下載支持Nios II的交叉編譯開發工具包,包括Nios2-linux-uclibc-gcc、Nios2-linux-uclibc-ld、Nios2-linux-uclibc-objdump等。

安裝好交叉編譯工具包后,要在宿主PC上的Linux系統的環境變量中(一般修改~/.bash_profile文件),添加對Nios II交叉編譯環境的支持,這樣在以后的開發中,就可以正常編譯在Nios II嵌入式平臺下運行的程序了。

2. 內核的下載和燒寫。在最初的調試中,是通過JTAG把內核下載到開發板,Nios II平臺的硬件邏輯也是通過JTAG燒進開發板,等到最后硬件邏輯測試沒有問題,以及uClinux操作系統調試運行正常后,就可以制作帶bootloader的內核,燒入flash中。

2.3. 引導程序

引導程序(即bootloader)就是在操作系統內核運行之前運行的一段小程序,它在硬件復位后首先被執行。主要工作是初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬環境帶到一個合適的狀態,以便為最終調用操作系統內核準備合適的環境。通常引導程序嚴重地依賴于硬件,每種CPU體系結構都用不同的啟動代碼。此外,引導程序還依賴于具體的嵌入式板級設備的配置,如硬件地址分配,RAM芯片類型等。bootloader擔負著初始化硬件和引導操作系統的雙重責任,也是在特定硬件平臺操作系統移植至關重要的一步。

對于作者使用的Nios II應用開發板,引導程序主要完成以下幾項工作:

1) 矢量表初始化。

2) 初始化硬件(I/O口和控制器、存儲器、時鐘)。

3) 將操作系統內核從Flash指定位置拷貝到RAM中。

4) 軟件初始化:建立堆棧和初始化數據段,建立C的運行環境。

5) 讓CPU轉入RAM中指定的位置(即操作系統內核)開始執行。

其中,第二步主要初始化處理器的一些控制或狀態寄存器、時鐘、I/O口、RAM等這些內核必須用到的設備。第三步中uClinux內核加載可以直接從flash某個地址開始逐句執行或者加載到內存中運行。作者采用的是后一種方法,即先把flash中的操作系統內核全部復制到內存中,再從內存中運行操作系統,因為內核大小一共不到1.5M字節,從flash復制到RAM中花的時間很少(幾百毫秒),很快就會完成,該方法也比較容易實現。

2.4 uClinux操作系統映像的構建

引導程序執行完畢后,處理器就開始執行真正的操作系統,操作系統內核的運行跟開發板的硬件配置有著緊密的聯系。只有正確的配置操作系統內核,它才會正確利用硬件資源。由于2.6版本的uClinux已經支持了Nios II處理器,所以移植過程主要是板級移植。

首先,利用Nios II的配套開發軟件Quartus II新建一個工程,用SOPC builder設計好自己的硬件邏輯,編譯后會生成兩個跟硬件平臺相對應的硬件邏輯的文件,其中,*.sof文件是燒入開發板中并運行于其中的硬件邏輯,另外一個*.ptf文件是用于生成跟硬件平臺相適應的uClinux內核。

然后,在宿主PC的Linux環境下,把*.ptf文件通過相關命令導入內核配置中,硬件平臺的配置內容就會在linux/arch/Nios2nommu/scripts文件夾下生成,接著就可以通過make menuconfig 命令配置uClinux操作系統內核,具體相關選項的選擇,要跟自己的硬件平臺相同。

最后,在配置好內核后,就可以直接編譯生成uClinux操作系統內核映像文件,把*.sof文件通過JTAG燒入開發板中,把內核映像文件通過JTAG燒入SDRAM中,一個uClinux操作系統就可以在Nios II開發板上運行起來了。

至此,一個簡單的uClinux操作系統在Nios II嵌入式平臺上移植完成,這個操作系統經過裁減,去掉了Linux內核中一些不是必須的功能,但是具有一個Linux操作系統的幾乎所有的特征。接下來,就可以在建好的開發環境中,開發在此平臺上運行的程序了。

3. 結束語

Altera的Nios II軟核處理器性能超過200DMIPS,在Altera FPGA中實現僅需35美分,并且開發者能從無限的系統配置組合中選擇滿足性能和成本目標的方案,而不必為系統級設計考慮采用ASIC。并且,Nios II處理器還具有完善的軟件開發套件。

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19723

    瀏覽量

    232743
  • 存儲器
    +關注

    關注

    38

    文章

    7610

    瀏覽量

    165864
  • 可編程邏輯
    +關注

    關注

    7

    文章

    523

    瀏覽量

    44463
收藏 人收藏

    評論

    相關推薦

    在任何平臺上使用PetaLinux的先決條件

    本篇文章介紹了在任何平臺上使用 PetaLinux 的先決條件。PetaLinux 是一種嵌入式 Linux 軟件開發套件 (SDK),主要用于基于 FPGA 的系統級芯片 (SoC) 設計或 FPGA 設計。
    的頭像 發表于 04-24 10:40 ?221次閱讀
    在任何<b class='flag-5'>平臺上</b>使用PetaLinux的先決條件

    Python嵌入式系統中的應用場景

    你想把你的職業生涯提升到一個新的水平?Python嵌入式系統中正在成為一股不可缺少的新力量。盡管傳統上嵌入式開發更多地依賴于C和C++語言,Python的優勢在于其簡潔的語法、豐富的庫和快速的開發周期,這使得它在某些
    的頭像 發表于 03-19 14:10 ?366次閱讀

    BlackBerry QNX推出通用嵌入式開發平臺

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發平臺(General Embedded Development
    的頭像 發表于 03-11 16:04 ?448次閱讀

    HAL庫Arduino平臺上的使用

    ,適合于快速原型開發和教育。HAL(硬件抽象層)庫是一種Arduino平臺上使用的軟件庫,它提供了一種標準化的方式來訪問硬件功能,使得開發者可以編寫更通用、更可移植的代碼。 1. 什么是HAL庫 HAL庫是硬件抽象層庫的簡稱,
    的頭像 發表于 12-02 14:04 ?1166次閱讀

    HAL庫嵌入式系統中的應用

    HAL庫是一種嵌入式開發中用于屏蔽底層硬件細節、提供統一接口的軟件層。它允許開發者在編寫應用程序時無需關心具體的硬件實現,從而提高了代碼的可移植性和復用性。HAL庫的主要目的是將硬件相關的代碼與應用程序代碼分離,使得開發者能
    的頭像 發表于 12-02 11:32 ?1585次閱讀

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植
    的頭像 發表于 10-22 14:46 ?1004次閱讀
    【北京迅為】i.mx8mm<b class='flag-5'>嵌入式</b>linux開發指南第四篇 <b class='flag-5'>嵌入式</b>Linux系統<b class='flag-5'>移植</b>篇第六十九章uboot<b class='flag-5'>移植</b>

    什么是嵌入式?一文讀懂嵌入式主板

    現代科技浪潮中,嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式系統,顧名思義,是將計算機的硬件和軟件嵌入
    的頭像 發表于 10-16 10:14 ?2288次閱讀

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+全文學習心得

    Hypervisor是一種嵌入式系統中實現虛擬化技術的關鍵組件,它能夠同一硬件平臺上并行運行多個操作系統或應用程序,提供資源隔離、管理和優化。通過引入時空域隔離的虛擬機,
    發表于 10-09 19:11

    七大嵌入式GUI盤點

    特點是支持跨平臺同步開發,一次編程,到處編譯,跨平臺使用。 GUIX 是微軟的高級工業級GUI解決方案,專門針對深度嵌入式,實時和IoT應用程序而設計。微軟還提供了名為GUIX Studio
    發表于 09-02 10:58

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式Linux開發的基本步驟,以及每個步驟的說明。 硬件選擇 開始
    的頭像 發表于 09-02 09:11 ?914次閱讀

    MK米客方德SD NAND:STM32平臺上的存儲方案

    STM32平臺上,SD卡的重要性不言而喻,它為嵌入式系統提供了必要的數據存儲和讀寫能力。MK米客方德SD作為市場上的一種選擇,因其耐用性、較小的體積以及高速的傳輸性能,STM32
    的頭像 發表于 08-26 10:23 ?938次閱讀
    MK米客方德SD NAND:STM32<b class='flag-5'>平臺上</b>的存儲方案

    嵌入式系統中的實時操作系統

    嵌入式RTOS是嵌入式應用程序運行、相互交互和與外界通信的底層軟件機制。本節中,您將了解嵌入式軟件開發人員使用哪些流行RTOS以及它們運行的嵌入式
    的頭像 發表于 08-20 11:28 ?683次閱讀

    節點、跨平臺開發,AWFlow讓嵌入式開發變得更簡單

    國產化趨勢對嵌入式軟件開發構成挑戰,導致軟件移植和適配需求激增,影響開發效率。AWFlow軟件通過節點化和跨平臺開發,簡化了開發流程,提升了軟件復用性,降低了開發成本。當前國產化浪潮對傳統嵌入
    的頭像 發表于 08-02 08:25 ?567次閱讀
    節點<b class='flag-5'>式</b>、跨<b class='flag-5'>平臺</b>開發,AWFlow讓<b class='flag-5'>嵌入式</b>開發變得更簡單

    深度學習算法嵌入式平臺上的部署

    隨著人工智能技術的飛速發展,深度學習算法各個領域的應用日益廣泛。然而,將深度學習算法部署到資源受限的嵌入式平臺上,仍然是一個具有挑戰性的任務。本文將從嵌入式
    的頭像 發表于 07-15 10:03 ?2409次閱讀

    Altera SOPC 嵌入式系統設計(一)

    ) 內核(這為開發者提供了強大的調試功能)。Nios II 植入 FPGA 前,用戶可以根據設計要求,利用 Quartus II 和 Qsys,對
    發表于 06-25 20:39
    主站蜘蛛池模板: 亚洲精品一区二区中文 | 伊人www| 成人网在线看 | 国产婷婷| 国产日韩精品一区二区在线观看 | 免费能直接在线观看黄的视频 | 亚洲一区二区三区高清视频 | 激情综合网色播五月 | 国产三级三级三级 | 性过程很黄的小说男男 | 福利视频一区二区微拍堂 | 欧美成年性色mmm | 日韩三级中文字幕 | 亚洲国产精品日韩专区avtube | 清纯漂亮小美女准备啪啪 | 久久国产精品自在自线 | 午夜精品国产 | 成人观看天堂在线影片 | 中文字幕777 | 日韩免费三级 | 羞羞色院91精品网站 | 国产精品毛片一区二区三区 | 午夜欧美性视频在线播放 | 午夜性刺激免费视频观看不卡专区 | 秋霞一级特黄真人毛片 | 欧美a在线播放 | bt在线天堂| 日本口工全彩无遮拦漫画大 | 国产在线视频网站 | 极品国产一区二区三区 | 高清视频免费观看 | 免费一看一级毛片全播放 | 日本www在线观看 | 国产午夜精品理论片在线 | 女同久久| 特级aaaaaaaaa毛片免费视频 | 成人淫片| 日本免费不卡视频 | 日韩中文视频 | 亚洲一区在线播放 | 午夜男人天堂 |