chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

1. Nios II嵌入式處理器

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

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

2. 移植

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

uClinux是Linux的一個(gè)嵌入式版本,它經(jīng)過小型化改造,形成了一個(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語言,只有那些直接與處理其硬件相關(guān)的代碼如開關(guān)CPU中斷等操作才采用匯編語言編寫,因此uClinux具有很好的移植性。一般來說,uClinux的移植大致分為三類:

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ù)上下文和初始化過程都是獨(dú)特的。對一個(gè)新型的體系,其下層程序可以模仿與其相似的體系程序編寫。

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

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

對于uClinux已經(jīng)支持的硬件架構(gòu),移植的過程相對較為簡單,主要考慮修改與硬件開發(fā)平臺相關(guān)的具體因素,如內(nèi)存大小、外圍設(shè)備的配置等。一般現(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)不支持動(dòng)態(tài)擦寫保存,對于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬RAM盤的方法進(jìn)行處理(RAM盤采用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包解開,并且將其中包含的文件系統(tǒng)作為初始的根文件系統(tǒng),內(nèi)核中的一部分初始化代碼會放到這個(gè)文件系統(tǒng)中作為用戶層進(jìn)程來執(zhí)行。這樣帶來的明顯的好處是精簡了內(nèi)核的初始化代碼,例如尋找真正的啟動(dòng)盤、啟動(dòng)時(shí)的網(wǎng)絡(luò)安裝、ACPI的安裝等,這些代碼都可以從內(nèi)核中移出,把它們都轉(zhuǎn)移到用戶空間完成,這樣使得開發(fā)者在用戶層就可以定制自己的啟動(dòng)過程,而不需要去修改內(nèi)核代碼,使定制啟動(dòng)過程變得更加容易。

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嵌入式平臺下運(yùn)行的程序了。

2. 內(nèi)核的下載和燒寫。在最初的調(diào)試中,是通過JTAG把內(nèi)核下載到開發(fā)板,Nios II平臺的硬件邏輯也是通過JTAG燒進(jìn)開發(fā)板,等到最后硬件邏輯測試沒有問題,以及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)重地依賴于硬件,每種CPU體系結(jié)構(gòu)都用不同的啟動(dòng)代碼。此外,引導(dǎo)程序還依賴于具體的嵌入式板級設(shè)備的配置,如硬件地址分配,RAM芯片類型等。bootloader擔(dān)負(fù)著初始化硬件和引導(dǎo)操作系統(tǒng)的雙重責(zé)任,也是在特定硬件平臺操作系統(tǒng)移植至關(guān)重要的一步。

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

1) 矢量表初始化。

2) 初始化硬件(I/O口和控制器、存儲器、時(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)核)開始執(zhí)行。

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

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

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

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

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

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

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

3. 結(jié)束語

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

責(zé)任編輯:lq6

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

    關(guān)注

    68

    文章

    20069

    瀏覽量

    242720
  • 存儲器
    +關(guān)注

    關(guān)注

    39

    文章

    7692

    瀏覽量

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

    關(guān)注

    7

    文章

    526

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    嵌入式工程師為什么要學(xué)QT?

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

    嵌入式力矩電機(jī)的設(shè)計(jì)方法研究

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

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

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

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

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

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

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

    嵌入式去哪個(gè)城市好?

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

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

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

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

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

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

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

    HAL庫Arduino平臺上的使用

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

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

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

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

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