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

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

3天內不再提示

利用Nios-DEVKIT-2C35開發(fā)板實現uClinux嵌入式操作系統(tǒng)的移植

電子設計 ? 來源:微計算機信息 ? 作者:余臘生,洪飛 ? 2020-10-09 10:27 ? 次閱讀

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ā)工具 可以方便的在調試模式下調試處理器,提高開發(fā)的速度。

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

2. 移植

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

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

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

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

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

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

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

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

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)保存的數據采用虛擬RAM盤的方法進行處理(RAM盤采用ext2/ext3文件系統(tǒng))。

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

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

1. 建立交叉編譯環(huán)境??梢栽趗Clinux官方網站下載支持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. 內核的下載和燒寫。在最初的調試中,是通過JTAG把內核下載到開發(fā)板,Nios II平臺的硬件邏輯也是通過JTAG燒進開發(fā)板,等到最后硬件邏輯測試沒有問題,以及uClinux操作系統(tǒng)調試運行正常后,就可以制作帶bootloader的內核,燒入flash中。

2.3. 引導程序

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

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

1) 矢量表初始化。

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

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

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

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

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

圖1是作者的bootloader運行的主要流程:

利用Nios-DEVKIT-2C35開發(fā)板實現uClinux嵌入式操作系統(tǒng)的移植

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

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

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

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

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

圖2是正確配置uClinux內核后的操作系統(tǒng)啟動信息,打印信息是通過串口輸出到屏幕上的:

圖2uClinux啟動界面

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

3. 結束語

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

此嵌入式平臺最終應用于有線數字電視接收系統(tǒng),主要完成對加密數字電視傳輸流的實時接收和解擾工作,在實際的測試中,uClinux 2.6操作系統(tǒng)運行良好并且穩(wěn)定,完全能勝任此類工作。本項目產生經濟效益800萬元。

本文作者創(chuàng)新點:在Nios II嵌入式平臺上,實現了最新的uClinux 2.6嵌入式操作系統(tǒng)的移植,并對移植過程中的關鍵部分進行分析,對在Nios II嵌入式平臺上的嵌入式系統(tǒng)移植有一定的指導和參考價值。

責任編輯:gt

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

    關注

    5054

    文章

    18926

    瀏覽量

    301095
  • 操作系統(tǒng)

    關注

    37

    文章

    6627

    瀏覽量

    123060
  • Nios II
    +關注

    關注

    1

    文章

    65

    瀏覽量

    20883
  • 開發(fā)板
    +關注

    關注

    25

    文章

    4850

    瀏覽量

    96904
  • uClinux
    +關注

    關注

    3

    文章

    75

    瀏覽量

    42856
收藏 人收藏

    評論

    相關推薦

    基于FPGA的uClinux系統(tǒng)移植實現web-server[1]

    web-server的實現   一.NIOS2 IDE下實現 uClinux嵌入 引言:1.為
    發(fā)表于 08-20 16:57

    μC/OS-II 在Nios上的移植

    首先介紹嵌入式實時操作系統(tǒng)μC/OS-II 和Nios 嵌入式處理器, 分析μC/O
    發(fā)表于 03-08 09:31 ?90次下載

    μC OS-II 在Nios 上的移植1

    首先介紹嵌入式實時操作系統(tǒng)μC/OS-II 和Nios 嵌入式處理器, 分析μC/OS-II
    發(fā)表于 05-16 14:32 ?28次下載

    嵌入式OS-uClinux軟件開發(fā)環(huán)境的建立及應用程序開發(fā)

    本文介紹了在mcf5272嵌入式硬件開發(fā)板基礎上如何移植uClinux操作系統(tǒng)以及開發(fā)用戶應用程
    發(fā)表于 07-30 13:45 ?26次下載

    基于NIOS軟核處理器的uClinux移植

    本文介紹基于 NIOS開發(fā)過程,以及詳細介紹向該開發(fā)板移植uClinux 操作系統(tǒng)和引導代碼
    發(fā)表于 08-24 09:11 ?25次下載

    嵌入式操作系統(tǒng)uClinux和eCos的比較

    uClinux和eCos操作系統(tǒng)是兩種性能優(yōu)良、源碼公開且被廣泛應用的免費嵌入式操作系統(tǒng)。本文通過對uclinux和eCos的對比,分析和總
    發(fā)表于 04-18 08:36 ?1675次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>uClinux</b>和eCos的比較

    基于Chirp函數的Nios嵌入式實現

    分析Chirp函數在頻域上的一般特性,提出利用FPGA的嵌入式軟核NiosⅡ處理器在嵌入式操作系統(tǒng)μC
    發(fā)表于 06-15 11:02 ?1136次閱讀
    基于Chirp函數的<b class='flag-5'>Nios</b> Ⅱ<b class='flag-5'>嵌入式</b><b class='flag-5'>實現</b>

    嵌入式操作系統(tǒng)移植

    嵌入式操作系統(tǒng)移植,感興趣的小伙伴們可以看看。
    發(fā)表于 11-08 18:13 ?3次下載

    嵌入式操作系統(tǒng)uCLinux詳解

    1 引言 嵌入式操作系統(tǒng)嵌入式系統(tǒng)的靈魂,而且在同一個硬件平臺上可以嵌入不同的嵌入式
    發(fā)表于 11-02 10:42 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>uCLinux</b>詳解

    uClinux嵌入式系統(tǒng)中的移植

    1 引言 uClinux作為Linux衍生操作系統(tǒng),具有支持多任務、內核精簡、高效、穩(wěn)定和源代碼開放等優(yōu)點,專門應用于無MMU微處理器的嵌入式系統(tǒng)[1]。將
    發(fā)表于 11-06 10:30 ?5次下載
    <b class='flag-5'>uClinux</b>在<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>中的<b class='flag-5'>移植</b>

    嵌入式操作系統(tǒng)uClinux和eCos的比較

    1 兩種開源嵌入式操作系統(tǒng)介紹 uClinux是一種優(yōu)秀的嵌入式Linux版本。uClinux是micro-Conrol-linux的縮寫。
    發(fā)表于 12-01 17:12 ?506次閱讀
     <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>uClinux</b>和eCos的比較

    嵌入式操作系統(tǒng)FREERTOS的移植.

    嵌入式操作系統(tǒng)FREERTOS的移植.(濟南嵌入式開發(fā)招聘)-嵌入式操作系統(tǒng)FREERTOS
    發(fā)表于 07-30 12:01 ?15次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b>FREERTOS的<b class='flag-5'>移植</b>.

    嵌入式實時操作系統(tǒng)FreeRTOS在ARM7上移植實現

    嵌入式實時操作系統(tǒng)FreeRTOS在ARM7上移植實現(嵌入式開發(fā)工程師待遇)-嵌入式實時
    發(fā)表于 07-30 12:05 ?20次下載
    <b class='flag-5'>嵌入式</b>實時<b class='flag-5'>操作系統(tǒng)</b>FreeRTOS在ARM7上<b class='flag-5'>移植</b><b class='flag-5'>實現</b>

    嵌入式操作系統(tǒng)FreeRTOS的原理與移植實現

    嵌入式操作系統(tǒng)FreeRTOS的原理與移植實現(嵌入式開發(fā)真的很難嗎)-隨著嵌入式技術的不斷發(fā)展
    發(fā)表于 08-04 13:50 ?16次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b>FreeRTOS的原理與<b class='flag-5'>移植</b><b class='flag-5'>實現</b>

    課堂筆記之嵌入式Linux操作系統(tǒng)

    嵌入式操作系統(tǒng)、開發(fā)工具、系統(tǒng)應用開發(fā)(&GUI)、系統(tǒng)
    發(fā)表于 11-02 09:51 ?15次下載
    課堂筆記之<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>操作系統(tǒng)</b>