亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MPC8548E的固件設(shè)計(jì)

        2012-09-19 10:29:24崔迎煒
        電子設(shè)計(jì)工程 2012年21期
        關(guān)鍵詞:設(shè)計(jì)

        賈 亮, 岳 瀟, 崔迎煒

        (1.沈陽(yáng)航空航天大學(xué) 電子信息工程學(xué)院,遼寧 沈陽(yáng) 110136;2.北京方天長(zhǎng)久科技有限公司 北京 100084)

        U-Boot(Universal Boot Loader)是德國(guó) DENX 小組開發(fā)的開放源碼項(xiàng)目,它支持多種CPU體系結(jié)構(gòu)的開發(fā)板,并且支持多種嵌入式操作系統(tǒng)內(nèi)核,U-Boot已經(jīng)成為功能最多、靈活性最強(qiáng)的開放源碼BootLoader。作為一種通用的Boot Loader,U-Boot可以非常方便地移植到其他硬件平臺(tái)上[1-2]。文中是基于MPC8548E的嵌入式目標(biāo)板(即FTC7110)和UBoot源碼資源來(lái)進(jìn)行設(shè)計(jì)的,分析了U-Boot的目錄結(jié)構(gòu)和啟動(dòng)流程,同時(shí)對(duì)U-Boot源碼設(shè)計(jì)以及設(shè)備自檢程序的設(shè)計(jì)也做了相關(guān)的介紹,最后講解如何通過(guò)設(shè)置環(huán)境變量來(lái)引導(dǎo)內(nèi)核的啟動(dòng)。

        1 開發(fā)板的硬件配置

        FTC7110板卡基于mpc8548e作為處理器,板上資源有2個(gè) 網(wǎng) 口 、Nor Flash、Nand Flash、FPGA、CPLD、PHY 芯 片BCM5482s、DDR2、SRIO 交換機(jī)、PCI橋片等。 圖 1是本次設(shè)計(jì)的嵌入式目標(biāo)板卡FTC7110的主要硬件資源結(jié)構(gòu)框圖。

        圖1 FTC7110硬件結(jié)構(gòu)框圖Fig.1 Structure diagram of the hardware of FTC7110

        2 U-Boot目錄結(jié)構(gòu)

        U-Boot源程序包在頂層目錄下一共有17個(gè)子目錄,它們分別用于存放和管理不同的源程序。目錄結(jié)構(gòu)如下[3]:

        3 U-Boot啟動(dòng)流程分析

        U-Boot的啟動(dòng)大致可以分為兩個(gè)階段。第1個(gè)階段在Nor Flash中執(zhí)行,主要由匯編語(yǔ)言編寫。第2階段主要用C語(yǔ)言編寫的,用于實(shí)現(xiàn)較復(fù)雜的硬件設(shè)備的初始化,同時(shí)也增加了代碼的可移植性。

        U-Boot運(yùn)行啟動(dòng)流程如圖2所示,U-Boot在復(fù)位啟動(dòng)后執(zhí)行的第1個(gè)文件是 start.s,它位于arch/powerpc/cpu/mpc85xx中,接下來(lái)進(jìn)行U-Boot啟動(dòng)的第1個(gè)階段,完成一些針對(duì)MPC8548E的硬件初始化,主要包括初始化內(nèi)核e500、清楚指令cache和數(shù)據(jù) cache、設(shè)置中斷向量、清除和建立一些寄存器、設(shè)置HID寄存器、配置MMU、初始化堆棧等,為系統(tǒng)創(chuàng)建一個(gè)有序可靠的初始環(huán)境,然后就進(jìn)入到U-Boot啟動(dòng)的第2個(gè)階段,首先進(jìn)入第1個(gè)C語(yǔ)言函數(shù)cpu_init_early_f中,在這里主要是來(lái)初始化TLB和LAW,為系統(tǒng)中的硬件設(shè)備來(lái)映射對(duì)應(yīng)的地址空間。接著進(jìn)入到第2個(gè)C語(yǔ)言函數(shù)cpu_init_f中,這里主要是對(duì)TLB和LAW進(jìn)行詳細(xì)的配置以實(shí)現(xiàn)相應(yīng)的功能。之后進(jìn)入比較重要的C語(yǔ)言函數(shù)board_init_f中,這里是對(duì)板上的硬件進(jìn)行第1階段初始化,主要由數(shù)組init_sequence[]完成,該數(shù)組中的相關(guān)硬件初始化可以依據(jù)不同的目標(biāo)板通過(guò)定義相關(guān)的宏定義來(lái)進(jìn)行增加和刪減。數(shù)組中的主要硬件初始化函數(shù)及函數(shù)功能如下:

        在完成上述初始化后開始執(zhí)行relocate_code函數(shù),將代碼從Flash中拷貝到RAM中,并記下當(dāng)前執(zhí)行代碼的偏移,最后跳轉(zhuǎn)到RAM中相應(yīng)的位置繼續(xù)執(zhí)行板上硬件的第二階段初始化,第二階段是在board_init_r函數(shù)中執(zhí)行,主要初始化包括有 PCI,PCIe,網(wǎng)口,Nor Flash,Nand Flash 等。在一切設(shè)備初始化完成之后,就進(jìn)入函數(shù)main_loop中,等待U-Boot下命令的輸入。

        圖2 U-Boot啟動(dòng)運(yùn)行流程Fig.2 Booting mechanism of U-Boot

        4 U-Boot源碼的設(shè)計(jì)及編譯

        U-Boot中由于沒有針對(duì)本目標(biāo)板的源碼,所以本次移植依據(jù)該源碼的目錄層次結(jié)構(gòu)需要在U-Boot的board目錄下為FTC7110嵌入式目標(biāo)板新建FTC文件夾,添加FTC文件夾的目的是在該文件夾下可以建立基于CPU和硬件資源比較接近的FTC系列的其他板卡文件夾目錄,所以這里需要在FTC文件夾下添加針對(duì)本次所采用的嵌入式板卡FTC7110文件夾,具體主要步驟如下:

        1)添加include/configs/FTC7110.h。這個(gè)文件是開發(fā)板的配置文件。它主要是添加定義開發(fā)板硬件資源的映射地址和大小以及添加針對(duì)目標(biāo)板的資源信息的來(lái)進(jìn)行增加,比如實(shí)現(xiàn)MPC8548e對(duì)Nand Flash的訪問,這里需要添加對(duì)MPC8548e的BR和OR寄存器的配置[4]。

        2)添加位于board/FTC/FTC7110/下的 tlb.c和 law.c。第1個(gè)tlb.c文件是設(shè)置開發(fā)板硬件資源對(duì)應(yīng)的映射地址和映射大小。第2個(gè)law.c文件是控制是否使能訪問這些映射的地址空間。

        3)添加board/FTC/FTC7110/FTC7110.c。該文件主要是完成對(duì)FTC7110目標(biāo)板上相關(guān)硬件的初始化工作。

        4)在FTC目錄下添加common文件夾,該文件夾用于存放一些FTC系列板卡都支持的硬件配置代碼或者是相關(guān)的硬件初始化代碼,其主要目的是增加U-Boot源碼的可擴(kuò)展性。這里根據(jù)具體的實(shí)際需求,需要添加針對(duì)MPC8548E支持的PCI、Nand Flash和時(shí)鐘等的相關(guān)配置代碼。

        5)U-Boot源碼不支持對(duì)本目標(biāo)板Nor Flash的支持,需要自己添加編寫針對(duì)該Nor Flash的驅(qū)動(dòng)程序。

        6)根據(jù)對(duì)板卡其他功能的設(shè)置和需求來(lái)對(duì)U-Boot源代碼進(jìn)行進(jìn)一步的增加刪除。

        在進(jìn)行完前五步后就已經(jīng)可以進(jìn)行編譯,實(shí)現(xiàn)對(duì)U-Boot的啟動(dòng)。其中第6步主要是完善優(yōu)化U-Boot的啟動(dòng)界面和根據(jù)實(shí)際的需求增加相應(yīng)的功能和命令。截止到這里就已經(jīng)實(shí)現(xiàn)了針對(duì)目標(biāo)板資源的配置。這里編譯的操作系統(tǒng)是RHEL5.0,交叉編譯環(huán)境是 ppc_85xx-gcc。 編譯 U-Boot分為兩步,第1步是配置編譯的板卡,由于這里的FTC7110板卡目錄是新增加的,所以需要在U-Boot根目錄下的boards.cfg中添加相關(guān)配置文件以及在FTC7110和common文件夾下添加相應(yīng)的Makefile文件,配置完成后在U-Boot源碼根目錄下輸入make FTC7110_config命令。第2步編譯,直接輸入make命令即可。編譯完成后在U-Boot頂層目錄下會(huì)生成幾個(gè)映像文件,這里通常采用將u-boot.bin二進(jìn)制文件燒入到Bootrom中。目標(biāo)板重新上電啟動(dòng)后,在超級(jí)終端下顯示如下信息表示啟動(dòng)成功:

        5 設(shè)備自檢程序的設(shè)計(jì)

        針對(duì)本目標(biāo)板的實(shí)際設(shè)計(jì)需求,對(duì)Nor Flash、SRIO總線等進(jìn)行了自檢程序的設(shè)計(jì),確保各個(gè)設(shè)備和相關(guān)總線在UBoot在啟動(dòng)后可以正常工作。

        5.1 Nor Flash自檢程序設(shè)計(jì)

        本目標(biāo)板采用Nor Flash自檢的原理是首先將NorFlash中的內(nèi)容暫存到內(nèi)存中去,接著依次對(duì)Nor Flash中的每個(gè)扇區(qū)采用flash_write接口函數(shù)向Nor Flash地址中寫入固定值,然后再?gòu)脑摰刂分凶x取,將讀取的值與寫入的固定值作比較,兩值相等表示Nor Flash設(shè)備工作正常,否則表示異常,當(dāng)然在向Nor Flash中寫入數(shù)據(jù)之前須對(duì)Nor Flash進(jìn)行擦除操作。最后將Nor Flash中原有內(nèi)容再?gòu)膬?nèi)存中存入到Nor Flash中去。

        如果該Nor Flash具有寫保護(hù)功能時(shí),在擦除Flash時(shí),先檢測(cè)寫保護(hù)是否關(guān)閉。本目標(biāo)板設(shè)計(jì)檢測(cè)Flash寫保護(hù)是通過(guò)讀取FPGA的某一寄存器的值是否為0來(lái)進(jìn)行判斷,具體如下:

        如果Nor Flash中已經(jīng)存在內(nèi)容,則需先將內(nèi)容暫存到內(nèi)存中,然后在一塊內(nèi)存區(qū)域中寫入一個(gè)Nor Flash扇區(qū)大小的固定值來(lái)作為寫入Nor Flash的值,采用memset函數(shù)實(shí)現(xiàn),具體設(shè)計(jì)如下:

        上述完成之后采用flash_erase函數(shù)、flash_write函數(shù)等來(lái)進(jìn)行擦除寫入驗(yàn)證該Nor Flash是否正常,具體設(shè)計(jì)如下:

        最后驗(yàn)證確定無(wú)誤后,再將之前暫存到內(nèi)存的內(nèi)容存回到Nor Flash中去。

        5.2 SRIO自檢程序設(shè)計(jì)

        本目標(biāo)板采用的SRIO交換機(jī)芯片是IDT公司的TSI578。對(duì)于SRIO自檢的設(shè)計(jì),本設(shè)計(jì)采用的原理是通過(guò)配置SRIO總線來(lái)讀取TSI578的ID號(hào),以此來(lái)驗(yàn)證SRIO總線工作是否正常。

        首先需要對(duì)SRIO總線進(jìn)行必要的配置,通常分為3步:第1步配置TLB;第2步配置LAW;第3步配置Maintenance Window[5-6]。由于前兩步在U-Boot固件的時(shí)候已經(jīng)做了相關(guān)的配置,所以這里只需對(duì)Maintenance Window進(jìn)行相關(guān)的配置,具體設(shè)計(jì)如下:

        這里把通過(guò)SRIO總線對(duì)TSI578芯片的讀操作叫做維護(hù)讀。然后需要編寫維護(hù)讀的接口函數(shù),這里采用宏定義的方法,函數(shù)名稱為MAINT_READ,具體設(shè)計(jì)如下:

        最后調(diào)用MAINT_READ函數(shù)通過(guò)SRIO總線來(lái)讀取TSI578設(shè)備的ID號(hào),以此做出相應(yīng)的判斷,這里假定TSI578的ID號(hào)是0x0578000d,具體如下:

        6 操作系統(tǒng)的引導(dǎo)設(shè)計(jì)

        U-Boot修改配置的最終目的是引導(dǎo)VxWorks操作系統(tǒng)內(nèi)核,由于該VxWorks操作系統(tǒng)內(nèi)核文件是ELF格式,而對(duì)于 ELF文件格式主要由 ELF Header、Program Header Table、Section Header Table組成,所以本設(shè)計(jì)在 U-Boot下采用bootelf命令來(lái)引導(dǎo)。

        bootelf命令首先檢測(cè)該ELF文件是否有效,具體參考代碼如下:

        對(duì)于上述valid_elf_image接口函數(shù)中的參數(shù) addr就是VxWorks系統(tǒng)內(nèi)核所存放的具體地址。接著bootelf命令開始解析該 ELF格式內(nèi)核文件的 ELF Header、Section Header Table和Program Header Table部分,這一部分主要通過(guò)load_elf_image_phdr和load_elf_image_shdr這兩個(gè)接口函數(shù)來(lái)實(shí)現(xiàn)的。最后通過(guò)設(shè)置環(huán)境變量來(lái)引導(dǎo)啟動(dòng)該操作系統(tǒng)內(nèi)核,假設(shè)這里通過(guò)網(wǎng)絡(luò)下載到Nor Flash中然后來(lái)引導(dǎo)啟動(dòng)vxworks.st內(nèi)核。具體輸入以下命令:

        0xf0000000是本目標(biāo)板的操作系統(tǒng)鏡像文件的起始地址。

        7 結(jié)束語(yǔ)

        文中研究分析了將U-Boot成功移植到目標(biāo)板FTC7110上,在U-Boot源碼中添加FTC7110板卡的相關(guān)文件,同時(shí)該設(shè)計(jì)支持在線更新固件等功能,并在此基礎(chǔ)上成功的引導(dǎo)了VxWorks操作系統(tǒng),為后面的應(yīng)用程序的開發(fā)奠定基礎(chǔ)。對(duì)于不同的CPU和開發(fā)板,本U-Boot的啟動(dòng)原理分析和移植有一定的借鑒意義。

        [1]周慶松,史小軍.U-Boot在AT91RM9200上的移植及啟動(dòng)分析[J].東南大學(xué):電子科學(xué)與工程學(xué)院,2008:1-3.

        ZHOU Qing-song,SHI Xiao-jun.Porting and start analysis of U-Boot based on AT91RM9200 board[J].Southeast University:Department of Electronic Science and Engineering,2008:1-3.

        [2]馮忠?guī)X,童英華.ARM平臺(tái)下U-Boot的移植[J].青海師范大學(xué),2008:1-2.

        FENG Zhong-ling,TONG Ying-hua.Transplanting of U-Boot under the ARM Platform[J].Qinghai Normal University,2008:1-2.

        [3]段薇.U-Boot在MPC8265平臺(tái)上的移植與分析 [J].武漢船舶通信研究所,2010:2-3.

        DUAN Wei.Transplanting and analysis of U-Boot on the MPC8265 platform[J].Wuhan Maritime Communication Reseach Institute,2010:2-3.

        [4]Freescale Semiconductor Inc.PowerPC MPC8548e reference manual[EB/OL].(2007-02-02).http://cache.freescale.com/files/32bit/doc/ref_manual/MPC8548ERM.pdf fsrch=1&sr=35.pdf.

        [5]Freescale Semiconductor Inc.MPC8548E PowerQUICC III Integrated Processor Hardware Specifications[EB/OL].(2012-09-02).http://cache.freescale.com/files/32bit/doc/data_sheet/MPC8548EEC.pdf pspll=1.pdf.

        [6]Freescale Semiconductor Inc.RapidIO Bring-Up Procedure on PowerQUICC III reference manual[EB/OL].(2004-01-11).http://cache.freescale.com/files/32bit/doc/app_note/AN2753.pdf fsrch=1&sr=2.pdf.

        猜你喜歡
        設(shè)計(jì)
        二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:36
        基于89C52的32只三色LED搖搖棒設(shè)計(jì)
        電子制作(2019年15期)2019-08-27 01:11:50
        基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
        電子制作(2019年7期)2019-04-25 13:18:16
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        從平面設(shè)計(jì)到“設(shè)計(jì)健康”
        商周刊(2017年26期)2017-04-25 08:13:04
        国产va精品免费观看| 无码区a∨视频体验区30秒| 国产成人精品一区二区20p| 久久久久久久97| 军人粗大的内捧猛烈进出视频| 欧美国产日韩a在线视频| 亚洲国产成人无码影院| 日本一区二区三区在线观看免费| 日本一道本加勒比东京热| 高清不卡日本v二区在线| 99久久精品费精品国产一区二| 国产亚av手机在线观看| 中文字幕一区二区人妻性色| 日本一区午夜艳熟免费| 国产视频不卡在线| 日韩精品一区二区三区免费观影| 一区二区三区人妻在线| 色婷婷av一区二区三区久久| 精品水蜜桃久久久久久久 | 男女啦啦啦视频在线观看| 漂亮人妻洗澡被公强 日日躁| 亚洲色大成网站www久久九| 无码中文av有码中文av| 亚洲精品中文字幕乱码二区| 午夜av天堂精品一区| 日韩精品内射视频免费观看| 欧美国产日本高清不卡| 久精品国产欧美亚洲色aⅴ大片 | 国产呦精品系列在线播放| 国产三级在线看完整版| 中文字幕在线看精品乱码| 日本天堂免费观看| 亚洲精品毛片一区二区三区| 精品黄色av一区二区三区| 日本一区二区视频在线| 无码乱人伦一区二区亚洲一| 久久99精品久久久久久齐齐百度| 五十路在线中文字幕在线中文字幕| 国产亚洲精品av久久| 国产成人精品a视频一区| 国产成人一区二区三区在线观看|