<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于eCos在基于A(yíng)RM7硬件平臺上的應用

基于eCos在基于A(yíng)RM7硬件平臺上的應用

作者: 時(shí)間:2010-07-27 來(lái)源:網(wǎng)絡(luò ) 收藏

  3 在系統上的移植與軟件編寫(xiě)

  3.1 內核的移植

  由于內核采用了可配置的模塊化設計思想,因此只要修改抽象層HAL的代碼和CDL腳本并且在ecos.db中注冊就可以于新的目標系統。HAL又可以細分為3個(gè)層次: ① 體系結構抽象層。eCos是可以于多種體系結構上的操作系統,如ARM、MIPS、POWERPC等,在eCos發(fā)布時(shí)已經(jīng)將這些體系結構層的移植包一同發(fā)布了出來(lái)。本系統的體系結構抽象層是體系結構抽象層。② 變體抽象層。對于同一種體系結構的處理器,各生產(chǎn)廠(chǎng)家會(huì )有不同的系列和型號(如Atmel的AT91系列、Philips的LPC系列等),雖然它們都采用體系結構,但是不同的寄存器配置模式和中斷處理方法也會(huì )影響到eCos的移植。本系統所使用的處理器AT91M55800使用較為普遍,在eCos開(kāi)源社區已經(jīng)有移植好的AT91M55800變體抽象層的代碼和CDL腳本,只需作系統啟動(dòng)后對I/O口的賦值情況等少許的改動(dòng)即可完成對變體抽象層的移植。③ 抽象層。抽象層是對目標系統的整個(gè)平臺進(jìn)行抽象,包括平臺的啟動(dòng)、芯片配置、定時(shí)、I/O寄存器及中斷寄存等等。

移植工作主要是平臺抽象層的移植,而平臺抽象層中最重要的是Flash驅動(dòng)包和內存布局文件的移植。主要的步驟為:

 ?、?安裝AT91M55800變體抽象層包。從eCos開(kāi)源社區下載好的變體抽象層包在一個(gè)名為eb55的文件夾中,在這個(gè)文件夾中還有cdl、include、src等子文件夾分別包含了CDL腳本、頭文件,源文件。由于eCos的軟件包有嚴格的層次結構,所以在安裝軟件包時(shí)應遵循這一結構以便于維護。AT91M55800屬于的一個(gè)變體,同AT91系列的其他CPU處于同一層次,所以變體抽象層軟件包文件夾eb55的具體路徑應為/hal/arm/at91/eb55。接下來(lái)還應在ecos.db中注冊變體抽象層包,以package關(guān)鍵字注冊名為CYGPKG_HAL_ARM_AT91_EB55的包,這個(gè)名字必須和包中CDL文件hal_arm_at91_eb55.cdl中的所定義的包名完全一致。在包名后面的花括號中登記hal_arm_at91_eb55.cdl文件的路徑及文件名,以及對該包的簡(jiǎn)單文字說(shuō)明。

 ?、?編寫(xiě)Flash的底層驅動(dòng)軟件包,以便能夠操作目標系統的Flash存儲器。由于本系統在前期調試和代碼固化時(shí)利用了RedBoot,而RedBoot通過(guò)Flash驅動(dòng)程序操作目標Flash,所以必須先移植好Flash驅動(dòng)程序才能進(jìn)行更進(jìn)一步的開(kāi)發(fā)工作。

  首先需要編寫(xiě)底層驅動(dòng)程序源文件。不同的Flash的塊空間大小以及寫(xiě)操作一般是不一樣的。本系統所用的Flash SST39VF160是2 MB的16位NOR Flash,共有512(0x200)個(gè)塊空間,其塊大小為4K(0x1000),寫(xiě)操作的命令碼符合JEDEC標準。這些特點(diǎn)與Atmel公司AT49系列Flash比較類(lèi)似,因此Flash驅動(dòng)程序可以從eCos發(fā)布時(shí)自帶的AT49系列Flash的驅動(dòng)程序修改得到。最重要的地方是修改描述Flash特性的結構體flash_dev_info_t變量中成員block_size和block_count的值,使其分別為0x1000和0x200。

  接下來(lái)需要編寫(xiě)與Flash底層驅動(dòng)對應CDL腳本,使配置工具configtool能夠正確配置編譯Flash驅動(dòng)程序。這個(gè)CDL文件完全可以參照AT49驅動(dòng)包中的CDL文件編寫(xiě)。以cdl_package關(guān)鍵字定義名為CYGPKG_DEVS_Flash_SST_39VF160的包,在命令體中給出具體的配置參數。由于底層驅動(dòng)包必須結合上層驅動(dòng)才能工作,所以在命令體中用active_if CYGPKG_IO_Flash命令告訴configtool,必須在上層驅動(dòng)包CYGPKG_IO_Flash已經(jīng)被包含的情況下底層驅動(dòng)包才會(huì )使能。

  最后,需要在ecos.db中注冊底層驅動(dòng)軟件包。具體做法和變體抽象層包的注冊方法相同。

 ?、?修改內存布局文件,使configtool能夠正確定位程序在系統存儲器中的位置。eCos提供3種不同的運行方式,即ROM方式、RAM方式、ROMRAM方式。每種模式都有兩個(gè)相應的布局文件,如RAM方式的mlt_arm_at91_eb55_ram.ldi和mlt_arm_at91_eb55_ram.h。*.ldi和常見(jiàn)的ARM開(kāi)發(fā)環(huán)境ADS中scattered鏈接方式下的*.scf文件的作用類(lèi)似,即用來(lái)對不同段分別指定不同的鏈接地址。在*.ldi中需要修改MEMORY和SECTI*兩部分。對于代碼在RAM中運行的內核及應用程序,需要根據系統RAM的實(shí)際情況修改內存布局文件中相關(guān)參數的值。本系統具有1 MB的RAM,但有一半用來(lái)存放測量數據,根據系統實(shí)際的情況,其起始地址為0x02000000,大小為0x80000,所以這個(gè)內存塊定義為ram: RIGIN=0x02000000, LENGTH=0x80000。處理器內部集成了8 KB SRAM,其起始地址為0,大小為0x2000,所以這個(gè)內存塊定義為sram: RIGIN=0x00000000,LENGTH=0x2000。這樣系統的MEMORY部分就由名為ram和sram的兩個(gè)內存塊構成。系統比較重要的兩處SECTI*部分的修改為SECTION_fixed_vectors (sram, 0x20, LMA_EQ_VMA) 和SECTION_rom_vectors (ram, 0x02008000, LMA_EQ_VMA),第一處表示fixed_vectors段分配在從0x20開(kāi)始的sram中,且LMA_EQ_VMA指定其加載地址等于虛擬地址。由于RedBoot運行時(shí)需要占用從0x02000000開(kāi)始的一定空間的RAM,所以第二處使程序代碼從0x02008000開(kāi)始的ram中運行。*.ldi文件修改完畢后需要相應地修改*.h文件中的宏,如#define CYGMEM_REGION_ram (0x02000000)。



關(guān)鍵詞: 基于 應用 平臺 ARM7 eCos 硬件

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>