- 相關(guān)推薦
NIOS軟核處理器的Linux引導程序U-boot設計
摘要:針對將cClinux向Nios處理器移植過(guò)程中的啟動(dòng)加載程序U-boot bootloader進(jìn)行研究。首先介紹移植的步驟,然后利用bootloader的設計思想,著(zhù)重討論U-boot在Nios中的設計與實(shí)現,最后對U-boot在基于Linux的嵌入式系統 中的運用作了探索和展望。1 概述
1.1 Nios簡(jiǎn)介
Nios是Altera公司以RISC為基礎的可配置、可裁減軟核處理器。它具有16位指令集和16/32位數據通路,通過(guò)將包括16或32位高性能處理器在內的移種應用模塊嵌入到通用FPGA/CPLD內,實(shí)現完全可配置的嵌入式系統。其開(kāi)發(fā)套件包括:具有必要外圍內核的Nios處理器、C/C 編譯器、Cygnus的源級調試程序、Quartus編譯軟件、驗證工具和開(kāi)發(fā)板。
Nios軟核處理器主要特性包括:高效靈活的處理器模塊,可以通過(guò)軟件配置成16位或32位的中央處理單元(RISC結構),并可選擇不同的內部存儲器大小,其最高執行速度可達50MHz;具有多種其它功能模塊的選擇(SDRAM控制器、UART控制器、PCI接口模塊、LCD接口模塊、MAC接口模塊等多種功能模塊);具有完整、廉價(jià)、便捷的開(kāi)發(fā)系統。所有開(kāi)發(fā)(包括設計、調試)均通過(guò)軟件進(jìn)行,不再需要專(zhuān)門(mén)的硬件仿真器和編器,大大減少了開(kāi)發(fā)設備的成本。
1.2 向Nios移植uClinux需要做的工作和步驟
(1)硬件需求
需要一個(gè)Altera公司的開(kāi)發(fā)包,或者是下面三種之一:APEX board,STRATIX board,CYCLONE board。本文選用的是CYCLONAE board。
(2)軟件需求
下載一個(gè)最新版本的uClinux,并搭建一個(gè)Nios的GNU C編譯環(huán)境,準備好CDK4Nios開(kāi)發(fā)包。CDK4Nios開(kāi)發(fā)包是Nios的交叉開(kāi)發(fā)包。
(3)bootloader
需要編寫(xiě)或移植一個(gè)bootloader到Altara Nios board上。本文就是要設計一個(gè)用于Nios的U-boot bootloader。利用QUARTUS軟件為開(kāi)發(fā)板定義默認參數,然后在開(kāi)發(fā)板上測試U-boot。
(4)uClinux內核的編譯
將下載好的uClinux源泉代碼解壓到/home目錄下,會(huì )產(chǎn)生/home/uClinux-dist目錄,進(jìn)入該目錄,依次鍵入:
make menuconfig
make dep
make
在/home/uClinux-dist/image目錄中產(chǎn)生image.rom,image.ram,romfs.img,它們分別是內核的映像及文件系統的映像文件。鍵入make menuconfig時(shí),會(huì )出現開(kāi)發(fā)平臺及內核配置和文件系統應用程序的配置界面,可以根據需要配置。
(5)uClinux的根文件系統及其加載
uClinux系統采用romfs文件系統,這種文件系統相對于一般的ext2文件系統要求更少的空間。romfs文件系統不支持動(dòng)態(tài)擦寫(xiě)保存,對于需要系統動(dòng)態(tài)保存的數據,采用虛擬ram盤(pán)的方法進(jìn)行處理(ram盤(pán)將采用ext2文件系統)。同時(shí),uClinux內核也支持各種文件系統,例如,網(wǎng)絡(luò )文件系統,在需要時(shí)可以進(jìn)行mount。
解決了上述問(wèn)題以后,uClinux便可以成功地移植到Nios上。
1.3 U-boot介紹
U-boot是啟動(dòng)引導程序的一種,是一種通用的Linux bootloader。在做uClinux移植時(shí),碰到的第一個(gè)問(wèn)題就是移植bootloader或者自己編寫(xiě)bootloader程序。Linux內核啟動(dòng)部分的代碼需要判斷從bootloader傳遞過(guò)來(lái)的寄存器值。U-boot對Linux引導有特別的支持,如:
①SCC/FEC以太網(wǎng)支持;
②BOOTP/TFTP引導;
③IP,MAC預置能力和在線(xiàn)讀寫(xiě)Flash、DOC、IDE、IIC、EEROM、RTC;
④支持串行口kernit,S-record下載代碼;
⑤識別二進(jìn)制、ELF32、pImage格式的Image,對Linux引導有特別的支持;
⑥單軟件軟件運行環(huán)境(hello.c);
⑦監控(minitor)命令集有讀寫(xiě)I/O、內存、寄存器、外設測試功能等;
⑧腳本語(yǔ)言支持(類(lèi)似BASH腳本);
⑨支持watchDog,LCDlogo,狀態(tài)指示功能等。
本文著(zhù)重介紹uClinux向Nios軟核處理器移植過(guò)程中,U-boot的設計和實(shí)現。
2 U-boot的設計
2.1 bootloader的設計思想
bootloader的設計除了依賴(lài)于CPU的體系結構外,它實(shí)際上也依賴(lài)于具體的嵌入式板級設備的配置。也就是說(shuō),對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構建的,要想讓運行在一塊板子上的bootloader程序也能運行在另一塊板子上,通常也都需要修改bootloader的源程序。從本質(zhì)上講,它不屬于操作內核,它是針對不同的CPU體系結構的,這一部分代碼不具有可移植性。在移植操作系統時(shí),這部分代碼必須加以改寫(xiě)。
bootloader引導加載程序是系統加電后運行的第一段軟件代碼。通過(guò)這段小程序,可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以
【NIOS軟核處理器的Linux引導程序U-boot設計】相關(guān)文章:
基于A(yíng)RM7核處理器VxWorks系統BSP設計03-19
嵌入式Linux下CAN總線(xiàn)驅動(dòng)程序設計03-07
基于嵌入式Linux的MPC8271 ATM驅動(dòng)程序設計03-30
采用Nios定制指令的嵌入式系統優(yōu)化設計03-19
基于A(yíng)RM9微處理器與Linux操作系統的SD驅動(dòng)開(kāi)發(fā)03-07
ARM922T核ZCP320A處理器PCI總線(xiàn)操作12-07
軟巖回采巷道支護設計03-19