女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

在Nios II嵌入式平臺(tái)上uClinux的移植研究

電子工程師 ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:余臘生 洪飛 ? 2021-03-24 17:06 ? 次閱讀

1. Nios II嵌入式處理器

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

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

2. 移植

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

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

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

uClinux源代碼絕大部分都是使用的C語(yǔ)言,只有那些直接與處理其硬件相關(guān)的代碼如開(kāi)關(guān)CPU中斷等操作才采用匯編語(yǔ)言編寫(xiě),因此uClinux具有很好的移植性。一般來(lái)說(shuō),uClinux的移植大致分為三類(lèi):

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

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

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

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

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)相對(duì)于一般的ext2/ext3文件系統(tǒng)要求更少的空間。romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫(xiě)保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬RAM盤(pán)的方法進(jìn)行處理(RAM盤(pán)采用ext2/ext3文件系統(tǒng))。

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

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

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

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

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

2.3. 引導(dǎo)程序

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

對(duì)于作者使用的Nios II應(yīng)用開(kāi)發(fā)板,引導(dǎo)程序主要完成以下幾項(xiàng)工作:

1) 矢量表初始化。

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

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

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

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

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

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

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

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

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

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

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

3. 結(jié)束語(yǔ)

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

責(zé)任編輯:lq6

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

    關(guān)注

    68

    文章

    19799

    瀏覽量

    233500
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7632

    瀏覽量

    166381
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    526

    瀏覽量

    44561
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在任何平臺(tái)上使用PetaLinux的先決條件

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

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

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

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

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

    HAL庫(kù)Arduino平臺(tái)上的使用

    ,適合于快速原型開(kāi)發(fā)和教育。HAL(硬件抽象層)庫(kù)是一種Arduino平臺(tái)上使用的軟件庫(kù),它提供了一種標(biāo)準(zhǔn)化的方式來(lái)訪問(wèn)硬件功能,使得開(kāi)發(fā)者可以編寫(xiě)更通用、更可移植的代碼。 1. 什么是HAL庫(kù) HAL庫(kù)是硬件抽象層庫(kù)的簡(jiǎn)稱(chēng),
    的頭像 發(fā)表于 12-02 14:04 ?1427次閱讀

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

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

    【北京迅為】i.mx8mm嵌入式linux開(kāi)發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

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

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

    現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運(yùn)行的核心力量。那么,究竟什么是嵌入式嵌入式系統(tǒng),顧名思義,是將計(jì)算機(jī)的硬件和軟件嵌入
    的頭像 發(fā)表于 10-16 10:14 ?2442次閱讀

    【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗(yàn)】+全文學(xué)習(xí)心得

    Hypervisor是一種嵌入式系統(tǒng)中實(shí)現(xiàn)虛擬化技術(shù)的關(guān)鍵組件,它能夠同一硬件平臺(tái)上并行運(yùn)行多個(gè)操作系統(tǒng)或應(yīng)用程序,提供資源隔離、管理和優(yōu)化。通過(guò)引入時(shí)空域隔離的虛擬機(jī),
    發(fā)表于 10-09 19:11

    七大嵌入式GUI盤(pán)點(diǎn)

    特點(diǎn)是支持跨平臺(tái)同步開(kāi)發(fā),一次編程,到處編譯,跨平臺(tái)使用。 GUIX 是微軟的高級(jí)工業(yè)級(jí)GUI解決方案,專(zhuān)門(mén)針對(duì)深度嵌入式,實(shí)時(shí)和IoT應(yīng)用程序而設(shè)計(jì)。微軟還提供了名為GUIX Studio
    發(fā)表于 09-02 10:58

    嵌入式linux開(kāi)發(fā)的基本步驟有哪些?

    嵌入式Linux開(kāi)發(fā)是一個(gè)復(fù)雜的過(guò)程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動(dòng)開(kāi)發(fā)、應(yīng)用程序開(kāi)發(fā)等多個(gè)方面。以下是嵌入式Linux開(kāi)發(fā)的基本步驟,以及每個(gè)步驟的說(shuō)明。 硬件選擇 開(kāi)始
    的頭像 發(fā)表于 09-02 09:11 ?1059次閱讀

    MK米客方德SD NAND:STM32平臺(tái)上的存儲(chǔ)方案

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

    嵌入式系統(tǒng)中的實(shí)時(shí)操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運(yùn)行、相互交互和與外界通信的底層軟件機(jī)制。本節(jié)中,您將了解嵌入式軟件開(kāi)發(fā)人員使用哪些流行RTOS以及它們運(yùn)行的嵌入式
    的頭像 發(fā)表于 08-20 11:28 ?769次閱讀

    節(jié)點(diǎn)、跨平臺(tái)開(kāi)發(fā),AWFlow讓嵌入式開(kāi)發(fā)變得更簡(jiǎn)單

    國(guó)產(chǎn)化趨勢(shì)對(duì)嵌入式軟件開(kāi)發(fā)構(gòu)成挑戰(zhàn),導(dǎo)致軟件移植和適配需求激增,影響開(kāi)發(fā)效率。AWFlow軟件通過(guò)節(jié)點(diǎn)化和跨平臺(tái)開(kāi)發(fā),簡(jiǎn)化了開(kāi)發(fā)流程,提升了軟件復(fù)用性,降低了開(kāi)發(fā)成本。當(dāng)前國(guó)產(chǎn)化浪潮對(duì)傳統(tǒng)嵌入
    的頭像 發(fā)表于 08-02 08:25 ?633次閱讀
    節(jié)點(diǎn)<b class='flag-5'>式</b>、跨<b class='flag-5'>平臺(tái)</b>開(kāi)發(fā),AWFlow讓<b class='flag-5'>嵌入式</b>開(kāi)發(fā)變得更簡(jiǎn)單

    深度學(xué)習(xí)算法嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺(tái)上,仍然是一個(gè)具有挑戰(zhàn)性的任務(wù)。本文將從嵌入式
    的頭像 發(fā)表于 07-15 10:03 ?2731次閱讀

    Altera SOPC 嵌入式系統(tǒng)設(shè)計(jì)(一)

    ) 內(nèi)核(這為開(kāi)發(fā)者提供了強(qiáng)大的調(diào)試功能)。Nios II 植入 FPGA 前,用戶(hù)可以根據(jù)設(shè)計(jì)要求,利用 Quartus II 和 Qsys,對(duì)
    發(fā)表于 06-25 20:39