91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 嵌入式系統

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

發布時間:2009/2/18 0:00:00 訪問次數:741

  1. nios ii嵌入式處理器

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

  作者使用cyclone ii版nios ii應用開發板nios-devkit-2c35 作為移植實現的平臺,開發板主要包括cyclone ii ep2c35器件、epm7128ae cpld配置控制邏輯、存儲器、串行配置連接器、fpga和cpld的jtag接口等。

  2. 移植

  2.1. uclinux嵌入式操作系統

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

  2.1.1. uclinux操作系統的移植

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

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

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

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

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

  2.1.2. initramfs文件系統

  作者使用的uclinux 2.6操作系統中,用initramfs文件系統取代了以前的romfs文件系統。

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

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

  2.2. 開發環境的建立

  1. 建立交叉編譯環境。可以在uclinux官方網站下載支持nios ii的交叉編譯開發工具包,包括nios2-linux-uclibc-gcc、nios2-linux-uclibc-ld、nios2-linux-uclibc-objdump等。

  安裝好交叉編譯工具包后,要在宿主pc上的linux系統的環境變量中(一般修改~/.bash_profile文件),添加對nios ii交叉編譯環境的支持,這樣在以后的開發中,就可以正常編譯在nios ii嵌入式平臺下運行的程序了。

  2. 內核的下載和燒寫。在最初的調試中,是通過jtag把內核下載到開發板,nios ii平臺的硬件邏輯也是通過jtag燒進開發板,等到最后硬件邏輯測試沒有問題,以及uclinux操作系統調試運行正常后,就可以制作帶bootloader的內核,燒入flash中。

  2

  1. nios ii嵌入式處理器

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

  作者使用cyclone ii版nios ii應用開發板nios-devkit-2c35 作為移植實現的平臺,開發板主要包括cyclone ii ep2c35器件、epm7128ae cpld配置控制邏輯、存儲器、串行配置連接器、fpga和cpld的jtag接口等。

  2. 移植

  2.1. uclinux嵌入式操作系統

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

  2.1.1. uclinux操作系統的移植

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

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

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

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

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

  2.1.2. initramfs文件系統

  作者使用的uclinux 2.6操作系統中,用initramfs文件系統取代了以前的romfs文件系統。

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

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

  2.2. 開發環境的建立

  1. 建立交叉編譯環境。可以在uclinux官方網站下載支持nios ii的交叉編譯開發工具包,包括nios2-linux-uclibc-gcc、nios2-linux-uclibc-ld、nios2-linux-uclibc-objdump等。

  安裝好交叉編譯工具包后,要在宿主pc上的linux系統的環境變量中(一般修改~/.bash_profile文件),添加對nios ii交叉編譯環境的支持,這樣在以后的開發中,就可以正常編譯在nios ii嵌入式平臺下運行的程序了。

  2. 內核的下載和燒寫。在最初的調試中,是通過jtag把內核下載到開發板,nios ii平臺的硬件邏輯也是通過jtag燒進開發板,等到最后硬件邏輯測試沒有問題,以及uclinux操作系統調試運行正常后,就可以制作帶bootloader的內核,燒入flash中。

  2

相關IC型號

熱門點擊

 

推薦技術資料

DFRobot—玩的就是
    如果說新車間的特點是“靈動”,FQPF12N60C那么... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
香格里拉县| 新野县| 安徽省| 海城市| 武隆县| 海晏县| 乐陵市| 鹿泉市| 宁明县| 偏关县| 涪陵区| 兰溪市| 贞丰县| 南陵县| 吴川市| 昌图县| 启东市| 祁阳县| 龙山县| 都匀市| 华阴市| 察哈| 和顺县| 长治县| 大连市| 成安县| 曲阳县| 土默特右旗| 同江市| 天门市| 德江县| 洪湖市| 论坛| 湘阴县| 莫力| 集贤县| 宽城| 长春市| 荆州市| 南郑县| 新疆|