Boot在ADSP BF533上的移植

2021-04-23 00:38:21 字數 4132 閱讀 9251

[日期:2008-12-10]

[字型:大

中 小]

將u-boot移植到blackfin系列的dsp之上,發揮出u-boot這一bootloader所具有的優勢,在基於dsp晶元的嵌入式系統的後續開發中,降低開發難度,縮短開發周期。本文將介紹u-boot在adsp-bf533上移植的實現過程。

1 移植例項

此次移植是在基於adsp-bf533的evb533開發板上實現,以colinux(cooperative linux)作為編譯的平台完成。所用的開發板的主要配置如下:處理器:基於blackfin體系結構的adsp-bf533;flash:1 m×16 b共2 mbamd am29lv160db(nor flash);sdram:16 m×16 b共32 m,hy hy57v651620btc10p;乙太網控制器:cirrus logic cs8900a-cq3;序列通訊介面:2個標準rs 232介面;乙太網介面:1個rj-45乙太網介面;除錯介面:1個14針jtag介面;**器:embest dsp**器easyice。

1.1 交叉編譯工具鏈以及編譯平台

關閉當前所有的終端視窗之後,再開啟終端視窗,輸入bfin-uclinux-gcc-version並回車,如果能看到有輸出「bfin-uclinux-gcc(gcc)3.4.4」即代表交叉編譯環境的安裝工作結束。

編譯的平台colinux是一種對linux kernel的移植,讓一台機器可以協同執行不同的作業系統,colinux不同於vmware等虛擬機器,其本身並不是模擬一台pc,而是透過他本身的特殊設計,讓在其中執行的linux kernel直接使用windows的硬體資源。

1.3 移植時需要修改的檔案

移植所需要修改的檔案可以參照u-boot源**包中已經支援的ezkit533目標板中的對應檔案。

(1)修改頂層目錄下的makefile和makeall指令碼,為要進行移植的目標板新增相應的條目,首先是為該bf533晶元所在的實驗板建立編譯項:

編譯項中的mkconfig是uboot原始碼頂層目錄中的shell指令碼,他的主要任務是完成對evb533開發板的配置;參看其指令碼,完成的配置包含的主要是建立該開發板所需要的一些標頭檔案,修改uboot配置來適應具體的開發板。該連線指令碼具體包含以下4個方面:建立新的配置檔案;建立該實驗板對應的體系結構標頭檔案到/include下/asm之間的硬鏈結(使用ln命令);建立make所需要的include檔案;建立開發板所需要的標頭檔案,在evb533開發板上主要是將include目錄下的configs/evb533.h的內容寫到config.h檔案中。

(2)在board子目錄中建立evb533目錄,該目錄下應該包含幾個特定的檔案,應該包含 makefile,evb533.c,flash.c,config.mk和u-boot.lds。其中evb533.c是對目標板的初始化**;flash.c是目標板所使用flash的驅動**;makefile與config.mk來完成本層目錄的make-file檔案管理;u- boot.lds是最終連線成u-boot.bin檔案是所使用的連線指令碼。

(3)新建include/configs/evb533.h配置檔案,針對要進行移植的目標板進行正確配置。

(4)在drivers子目錄中加入實驗箱所使用的網絡卡裝置的驅動cs8900.c和cs8900.h。

完成這4處的檔案修改後,就可以執行make evb533_config對開發板進行配置,然後執行make編譯成目標板可用的u-boot.bin檔案。

通過將embest dsp**器easyice連線到開發板jtag口,將該bin檔案燒寫到flash零位址,燒寫完成後,重啟開發板,在串列埠中返回 「evb533>」資訊,代表u-boot移植執行成功。本文所移植的u-boot目前已穩定地執行在edukitⅲ嵌入式實驗箱上。通過u- boot可以實現串列埠、網口與pc通訊,檢視、修改flash和sdram,引導μclinux嵌入式系統等功能。

2 移植難點和重點

在此次移植的過程中,移植的難點在於flash裝置和網絡卡裝置的驅動,以及建立目標板的配置檔案include/configs/evb533.h。下面詳細介紹這幾個難點中要注意的一些問題。

2.1 flash的驅動編寫

u-boot上flash配置的修改不僅和容量有關,還和具體型號有關,flash的燒寫和擦除一般不具有通用性,應檢視廠家的使用說明書,針對不同型號的儲存器作出相應的修改。修改過程中,需要了解flash擦寫特定暫存器的寫入位址、資料命令以及扇區的大小和位置,以便進行正確的設定。本文所使用的開發板中的evb533核心子板所使用的flash的型號是am29lv160db,為nor flasfi,大小為2 mb。針對u-boot的flash移植需要編寫以下一些介面函式列表如下:

flash_init()完成將flash裝置資訊賦值給flash_info_t*info結構體的功能,如確立flash的各個sector的起始位址,標記需要保護的sector塊。flash_info_t資料結構如下所示(只列出部分):

flash_print_info()主要完成向終端列印flash id資訊,如成功識別flash會得到如下輸出「amd am29lv160db(2 mb)16 kb,2×8 kb,32 kb,31×64 kb」;flash_erase()完成擦除flash的工作;write_buff()完成將ram中的資料向flash的寫操作;read_data()完成flash的讀操作。

以上3個介面函式需要詳細地參考對應flash的資料手冊,嚴格按照資料手冊規定的指令序列完成對應操作,以取得flash裝置的id為例,需要在 1~3個匯流排週期分別向flash的0x555位址寫入0xaa,0x2aa位址寫入0x55,0x555位址寫入0x90,第4個匯流排週期時從 flash的0x001位址讀出改flash的id資訊。

除這些標準介面函式外,還要完成對flash中的poll data與toggle bit功能的查詢,這2者都是用來反映flash的操作狀態。

2.2 新增網絡卡裝置控制程式

在drivers/目錄中新增網絡卡裝置控制程式cs8900.c和cs8900.h,其中cs8900.c主要包括函式為:int eth_init(bd_t*bd),初始化網路裝置;void eth_halt(void),關閉網路裝置;int eth_send(volatile void*packet,int len),傳送資料報;int eth_rx(void)接收資料報。

2.3 編寫開發板的配置標頭檔案

在移植過程中,最容易出錯的地方就是關於目標板標頭檔案的配置,標頭檔案的各項配置,關係到cpu的時鐘設定正確與否,開發板上各個裝置(如串列埠、網絡卡、flash等)能否正常執行,作業系統能否正確引導等諸多方面。下面以evb533目標板編寫的配置標頭檔案 include/configs/evb533.h為例,講解一些重要的配置選項的意義和用法,同時這些配置方法也適合於其他的開發板配置:

config_driver_cs8900,用於設定目標板上的乙太網控制器模組。由於目標板上使用cs8900a作為乙太網控制器,因此定義此選項為1,在編譯u-boot時增加對cs8900a的驅動,同時設定cs8900_base為cs8900a內部的ram對映到bf533的儲存空間中的基位址0x20380300。

config_ipaddr用於設定目標板的ip位址;con-fig_ethaddr用於設定cs8900a的mac位址;con-fig_netmask用於設定子網掩碼;config_server-ip用於指定執行tftp伺服器的pc的ip位址。

config_bootargs定義u-boot在啟動的時候所用到的一些引數。

config_clkin_hz定義adsp-bf533的晶振頻率,作為其他時鐘頻率的基數,如config_cclk_hz,config_sclk_hz等。

cfg_sdram_base定義bf533的sdram的基址#0x00000000,cfg_flash_base定義了bf533的flash的基址0x20000000,還定義了flash的大小cfgl_flash_size等。

除此之外,還有關於串列埠的一些引數定義等,在此不再詳述。

3 結語

本文詳細的介紹在bf533上移植u-boot的工作步驟及難點。前期的移植工作是嵌入式系統開發的必要環節,bootloader的穩定執行對於後期如linux上核心的除錯,linux裝置驅動的開發有重要意義。只有在此基礎上才可以進行更深入的嵌入式系統開發,希望本文能為做相關工作的開發者提供參考。

在VMware下面裝RHEL5 3

今天為了試驗在linux下安裝cadence,有在伺服器下的vmware下安裝了一次rhel,安裝沒什麼大問題 就是安裝vmtools費了我不少時間,不安裝vmtools的話解析度很小,所以還是要安一下的。現在將方法總結一下 其實也蠻簡單 確定自己的gcc可以那麼就直接mount上vmtools的光...

在AIX5 3上使用bash

在使用習慣solaris linux之後,在aix下使用其它的shell感覺不太習慣,還有沒有tab命令補齊,下面簡單介紹一下aix下使用bash的方法 aix下面己經全面支援rpm包的安裝。一 安裝方法 2 使用方法 a 在需要使用時在任何shell下輸入bash即可切換到bash下 b 將roo...

在Packet Tracer 5 3中配置語音網路

1.測試拓撲 參照 2.基本配置 a.r1 inte ce fastethernet0 0 ip address 202.100.1.1 255.255.255.0 no shut inte ce fastethernet0 1 shut inte ce fastethernet0 1.10 enc...