亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

3天內(nèi)不再提示

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

電子工程師 ? 來源:微計算機信息 ? 作者:余臘生 洪飛 ? 2021-03-24 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. Nios II嵌入式處理器

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

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

2. 移植

2.1. uClinux嵌入式操作系統(tǒng)

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

2.1.1. uClinux操作系統(tǒng)的移植

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

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

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

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

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

2.1.2. initramfs文件系統(tǒng)

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

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

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

2.2. 開發(fā)環(huán)境的建立

1. 建立交叉編譯環(huán)境??梢栽趗Clinux官方網(wǎng)站下載支持Nios II的交叉編譯開發(fā)工具包,包括Nios2-linux-uclibc-gcc、Nios2-linux-uclibc-ld、Nios2-linux-uclibc-objdump等。

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

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

2.3. 引導程序

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

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

1) 矢量表初始化。

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

3) 將操作系統(tǒng)內(nèi)核從Flash指定位置拷貝到RAM中。

4) 軟件初始化:建立堆棧和初始化數(shù)據(jù)段,建立C的運行環(huán)境。

5) 讓CPU轉(zhuǎn)入RAM中指定的位置(即操作系統(tǒng)內(nèi)核)開始執(zhí)行。

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

2.4 uClinux操作系統(tǒng)映像的構建

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

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

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

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

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

3. 結束語

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

責任編輯:lq6

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

    關注

    68

    文章

    20113

    瀏覽量

    244517
  • 存儲器
    +關注

    關注

    39

    文章

    7700

    瀏覽量

    170497
  • 可編程邏輯
    +關注

    關注

    7

    文章

    526

    瀏覽量

    45263
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    新一代嵌入式開發(fā)平臺 AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    搶先體驗 SHEL 流程簡化所有 AMD 嵌入式開發(fā)平臺上的軟件項目生成過程 Zephyr RTOS 兼容性已擴展至第二代 AMD Versal AI Edge 系列、Kria SOM
    的頭像 發(fā)表于 08-20 09:15 ?3457次閱讀

    AMD 2025.1版嵌入式軟件和工具的新增功能

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺,全面加速概念構想到部署落地。
    的頭像 發(fā)表于 08-15 15:32 ?923次閱讀

    嵌入式工程師為什么要學QT?

    Qt對嵌入式工程師來說,真的很重要嗎? Qt是一個跨平臺的C++應用程序開發(fā)框架,非常適合嵌入式系統(tǒng)的開發(fā),Qt嵌入式開發(fā)中具有很重要的作
    發(fā)表于 08-14 15:15

    嵌入式力矩電機的設計方法研究

    ~~~*附件:嵌入式力矩電機的設計方法研究.pdf【免責聲明】本文系網(wǎng)絡轉(zhuǎn)載,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 06-11 15:08

    如何在嵌入式平臺上部署高光譜相機

    高光譜成像技術廣泛應用于農(nóng)業(yè)、環(huán)境監(jiān)測、工業(yè)檢測等領域。友思特eBUS軟件為嵌入式分選和檢測成像平臺搭建提供專屬解決方案,如自定義的分選系統(tǒng)、實時數(shù)據(jù)采集、高性能處理平臺和實時通信協(xié)議等。
    的頭像 發(fā)表于 06-03 13:39 ?446次閱讀
    如何在<b class='flag-5'>嵌入式</b><b class='flag-5'>平臺上</b>部署高光譜相機

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot

    架構的嵌入式平臺,如PowerPC、ARM、MIPS。本手冊將U-Boot簡寫為uboot,所以本手冊中的uboot即為U-Boot。uboot是遵循GPL條款的開放源碼項目,是PPCBoot以及
    發(fā)表于 05-22 10:44

    嵌入式開發(fā)入門指南:從零開始學習嵌入式

    開發(fā)(設備驅(qū)動、內(nèi)核編譯) 4. 推薦的學習資源書籍:《嵌入式系統(tǒng)軟件設計基礎》《ARM Cortex-M系列嵌入式開發(fā)》在線課程:慕課網(wǎng)、B站嵌入式教學視頻實踐平臺:Arduino、
    發(fā)表于 05-15 09:29

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

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

    嵌入式去哪個城市好?

    對于嵌入式技術從業(yè)者來說,選擇哪個城市發(fā)展是一個重要的決策。以下是一些建議: 一線城市 北京作為中國的首都和科技中心,北京擁有眾多頂尖的高校和研究機構,以及大量的高科技企業(yè),為嵌入式開發(fā)和應用提供了
    發(fā)表于 04-02 10:12

    Python嵌入式系統(tǒng)中的應用場景

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

    BlackBerry QNX推出通用嵌入式開發(fā)平臺

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

    嵌入式主板的概述與發(fā)展

    隨著科技的迅猛發(fā)展,嵌入式系統(tǒng)現(xiàn)代電子產(chǎn)品中扮演著越來越重要的角色。嵌入式主板作為嵌入式系統(tǒng)的核心組件之一,承擔著控制、處理和通訊等多種功能。本文將對
    的頭像 發(fā)表于 01-13 16:30 ?1042次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    嵌入式系統(tǒng)開發(fā)與硬件的關系 嵌入式系統(tǒng)開發(fā)常見問題解決

    嵌入式系統(tǒng)開發(fā)與硬件的關系 嵌入式系統(tǒng)是專為特定應用設計的計算機系統(tǒng),它們通常嵌入在所控制的設備中。這些系統(tǒng)的關鍵特點是它們與硬件的緊密集成,這意味著軟件必須為特定的硬件平臺量身定制。
    的頭像 發(fā)表于 12-09 09:38 ?1342次閱讀

    HAL庫Arduino平臺上的使用

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

    HAL庫嵌入式系統(tǒng)中的應用

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