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

        ?

        基于TMS320C6678的多核Bootloader設(shè)計與實現(xiàn)

        2017-09-15 11:43:10薛志遠(yuǎn)王春雷
        航空兵器 2017年4期
        關(guān)鍵詞:用戶程序鏡像文件志遠(yuǎn)

        薛志遠(yuǎn), 王春雷

        (中國空空導(dǎo)彈研究院, 河南 洛陽 471009)

        基于TMS320C6678的多核Bootloader設(shè)計與實現(xiàn)

        薛志遠(yuǎn), 王春雷

        (中國空空導(dǎo)彈研究院, 河南 洛陽 471009)

        針對TMS320C6678多核處理器的特性, 提出一種基于多核Bootloader的設(shè)計方法。 闡述了TMS320C6678 Bootloader的原理和工作機制, 并給出一種多核用戶程序鏡像文件的生成方法, 實現(xiàn)了TMS320C6678的多核程序加載以及上電自啟動。 經(jīng)驗證, TMS320C6678在該設(shè)計方法下能夠穩(wěn)定運行。

        彈載計算機; TMS320C6678; Bootloader; 多核程序加載; EMIF16

        0 引 言

        導(dǎo)彈武器具有打擊精度高、 毀傷威力大等特點, 是決定未來戰(zhàn)爭勝負(fù)的重要因素之一。 隨著武器裝備軟硬件集成設(shè)計技術(shù)的快速發(fā)展, 小型化、 低成本、 低功耗正成為彈上電子系統(tǒng)的發(fā)展趨勢。

        TMS320C6678是TI公司推出的一款八核嵌入式處理器, 強大的性能以及優(yōu)秀的能耗比使其在導(dǎo)彈武器的集成化、 小型化等方面扮演了重要的角色。

        Bootloader是TMS320C6678處理器上電后運行的第一段代碼, 其是否正確及健壯對于處理器能否正常運行至關(guān)重要。 本文設(shè)計的Bootloader完成了TMS320C6678八核處理器的基本初始化配置, 保證了處理器上電后的穩(wěn)定運行。

        1 Bootloader概述

        1.1 Bootloader基本原理

        TMS320C6678的Bootloader分為兩級。 第一級為Rom Bootloader(RBL), 是處理器上電復(fù)位后首先運行的一段代碼, 用來完成處理器上電后的系統(tǒng)初始化配置以及根據(jù)BOOTMODE引腳狀態(tài)確定以何種方式運行二級Bootloader。 RBL的代碼在處理器出廠時已經(jīng)固化在處理器中以0x20B00000為起始的一段地址空間中, 用戶不可更改, 本文不再贅述。

        二級Bootloader為一般意義的Bootloader。 根據(jù)用戶需求, 二級Bootloader可以完成如下功能:

        (1) 系統(tǒng)初始配置, 如處理器工作時鐘PLL的配置等;

        (2) 處理器外設(shè)接口的初始化, 如EMIF16接口、 DDR3存儲器等;

        (3) 應(yīng)用程序從片外向片內(nèi)的加載;

        (4) 應(yīng)用程序的跳轉(zhuǎn)執(zhí)行。

        1.2 Bootloader工作機制

        由于TMS320C6678外部接口的豐富多樣性, 其Bootloader也存在多種實現(xiàn)方式, 如EMIF16, SRIO, Enthernet, PCIe, I2C, SPI和HyperLink七種Boot方式。 各種方式的區(qū)別僅在于接口類型以及基本配置的不同, 對于Bootloader來說, 這七種方式的工作機制是相同的。 本文以EMIF16接口為例, 完成了基于TMS320C6678的Bootloader設(shè)計。

        Bootloader主要完成系統(tǒng)初始配置、 外設(shè)接口初始化、 應(yīng)用程序加載與跳轉(zhuǎn)執(zhí)行等功能, 其中系統(tǒng)初始配置與外設(shè)接口初始化可以根據(jù)用戶需求靈活添加, 并不是Bootloader的必備。 Bootloader最核心的功能是應(yīng)用程序的加載與跳轉(zhuǎn)執(zhí)行, 該功能的正確與否直接關(guān)系到處理器能否完成上電自啟動。

        為了實現(xiàn)處理器的上電自啟動, 需要事先將編譯好的用戶程序燒寫到片外的非易失性存儲器(如Flash)中。 由于工藝水平的限制, 程序在片外Flash存儲器中的執(zhí)行速度遠(yuǎn)小于片內(nèi)存儲器中的執(zhí)行速度。 因此, 程序的加載與跳轉(zhuǎn)執(zhí)行基本原理就是通過Bootloader將用戶程序從片外Flash加載到片內(nèi)高速緩存中, 并跳轉(zhuǎn)至片內(nèi)高速緩存中執(zhí)行。 程序加載與跳轉(zhuǎn)執(zhí)行的工作過程如圖1所示。

        圖1 程序加載與跳轉(zhuǎn)執(zhí)行工作過程

        Fig.1 Process of program loading and jumping to execute

        處理器上電后, 通過初始化引腳配置, 跳轉(zhuǎn)至片外Flash的起始地址0x70000000執(zhí)行Bootloader程序。 Bootloader將存儲在0x701000000地址中的用戶程序加載至TMS320C6678以0x10800000為起始地址的高速緩存空間中。 加載完畢后, Bootloader識別用戶程序的入口地址, 并跳轉(zhuǎn)至入口地址開始執(zhí)行。 其中, 0x70000000與0x70100000可以根據(jù)用戶的需求進(jìn)行更改, 加載地址在程序編譯完成后可根據(jù)實際的地址進(jìn)行指定。

        Bootloader的部分核心代碼如圖2所示。

        圖2 Bootloader代碼示意

        Fig.2 An example of Bootloader codes

        2 Bootloader硬件設(shè)計

        TMS320C6678提供了13個BOOTMODE引腳, 通過在硬件電路中對BOOTMODE進(jìn)行配置來確定處理器以何種模式進(jìn)行Boot、 Boot的子模式配置以及規(guī)定處理器的輸入時鐘頻率, 如表1所示。

        表1 BOOTMODE引腳配置

        通過對電路中BOOTMODE引腳進(jìn)行上下拉處理完成對處理器Bootloader工作模式的基本配置, 處理器上電后讀取BOOTMODE引腳狀態(tài)后開始Bootloader過程。

        3 多核程序加載設(shè)計

        在完成Bootloader設(shè)計并將其代碼和用戶程序燒寫至片外Flash中后, 便可實現(xiàn)上電自啟動。 但這僅對于單核運行而言, 想實現(xiàn)多核程序的啟動, 還需要對多核用戶程序做進(jìn)一步處理。

        3.1 多核程序啟動過程

        TMS320C6678中共有八個處理器核, 分別命名為core0~core7。 其中, core0為主核, 只有主核具有執(zhí)行一級引導(dǎo)程序的權(quán)限, 即處理器上電后, 首先跳轉(zhuǎn)至core0的入口地址執(zhí)行。 其他7個核在處理器上電后進(jìn)入IDLE狀態(tài), 等待core0向其發(fā)送IPC中斷, 即其他7個核是在core0的控制下來啟動執(zhí)行的。

        TMS320C6678在每個核中預(yù)留了一塊固定的內(nèi)存, 稱為BOOT_MAGIC_ADDRESS, 用來存放每個核開始執(zhí)行后需要跳轉(zhuǎn)到的入口地址_c_int00。 Bootloader執(zhí)行完畢后, 便自動跳轉(zhuǎn)至core0的入口地址執(zhí)行, 而其他7個核在接收到core0的IPC中斷后, 便向各個核對應(yīng)的BOOT_MAGIC_ADDRESS讀取相應(yīng)的入口地址, 然后跳轉(zhuǎn)執(zhí)行。

        根據(jù)TMS320C6678的內(nèi)存規(guī)劃設(shè)計, 每個核的BOOT_MAGIC_ADDRESS位于各自L2 SRAM的最后4個字節(jié)中, 分別為0x1087FFFC~0x1787FFFC。

        3.2 單核程序的生成

        用戶程序通過TI處理器編譯軟件CCS的編譯后, 生成.out可執(zhí)行文件。 .out文件可以通過CCS軟件加載的方式將用戶程序加載到處理器中執(zhí)行, 但這種方式并不能實現(xiàn)上電自啟動。 上電自啟動需要將用戶程序燒寫至片外Flash中, 而.out可執(zhí)行文件中包含大量冗余信息, 將.out燒寫至片外Flash中會造成資源浪費, 且.out文件的格式也決定了不能實現(xiàn)上電自啟動。

        TI公司提供了一整套的工具鏈, 如hex6x, b2i2c, b2ccs, i2crom等工具, 來完成.out可執(zhí)行文件向可燒寫鏡像文件的轉(zhuǎn)化。 圖3所示為生成的單核鏡像文件的格式。

        圖3 單核鏡像文件格式

        Fig.3 Format of single core image file

        其中.text段, .cint段, .switch段等均為用戶程序經(jīng)過CCS編譯后生成的各個數(shù)據(jù)段, 每個數(shù)據(jù)段都將對自己的數(shù)據(jù)段長度和在內(nèi)存中存放的地址在鏡像文件中進(jìn)行標(biāo)記。 在完成用戶鏡像文件燒寫至片外Flash中后, Bootloader通過對每個數(shù)據(jù)段的長度及存放的地址進(jìn)行識別, 實現(xiàn)對用戶程序的準(zhǔn)確加載。

        3.3 多核程序的生成

        對于多核程序來說, 由于每個核中執(zhí)行的用戶程序不同, 經(jīng)過CCS分別編譯后生成的.out可執(zhí)行文件也是不同的。 經(jīng)過工具鏈生成用戶鏡像文件后, 八個核便會對應(yīng)八個不同的鏡像文件。 因此, 要想生成多核用戶鏡像文件, 需要對八個核的鏡像文件進(jìn)行合并處理, 如圖4所示。

        多核鏡像文件合并的意義在于舍棄核的概念, 將每個核的鏡像文件視作由多個數(shù)據(jù)段組成。 多核鏡像文件的合并從根本上說是將多個核的數(shù)據(jù)段按照長度、 地址、 數(shù)據(jù)的固定格式合并在一起。

        多核鏡像文件的最后是對core1~core7入口地址_c_int00的處理。 core1~core7的程序入口地址應(yīng)當(dāng)寫入每個核對應(yīng)的BOOT_MAGIC_ADDRESS中, 而本文正是將core1~core7的程序入口地址當(dāng)做數(shù)據(jù)段(長度為4字節(jié), 地址為相應(yīng)BOOT_MAGIC_ADDRESS, 數(shù)據(jù)為相應(yīng)入口地址_c_int00)進(jìn)行了合并。

        圖4 多核鏡像文件格式

        Fig.4 Format of multicore image file

        3.4 多核Bootloader執(zhí)行

        TMS320C6678多核Bootloader的執(zhí)行過程如圖5所示。

        圖5 多核Bootloader執(zhí)行過程

        Fig.5 Process of multicore Bootloader

        4 設(shè)計驗證

        本文設(shè)計如下程序來驗證多核上電自啟動的正確性: 八個核循環(huán)執(zhí)行1 024點FFT, 每個核執(zhí)行完一次FFT后向共享緩存寫標(biāo)志字, 然后core0不間斷監(jiān)測共享緩存的八個標(biāo)志字, 監(jiān)測到標(biāo)志字為1后, 對GPIO置0; 重復(fù)以上過程, 完成第二次FFT監(jiān)測后, core0將GPIO翻轉(zhuǎn), 以此類推。 如果八核完成啟動, 且程序運行正確, 示波器將顯示觀測到的GPIO方波。

        經(jīng)驗證, 本文的設(shè)計完成了TMS320C6678的八核上電自啟動, 仿真結(jié)果見圖6。

        圖6 仿真結(jié)果

        5 結(jié) 論

        針對TMS320C6678多核處理器提供了一種多核Bootloader的設(shè)計方法, 試驗驗證表明, 所設(shè)計的多核Bootloader程序工作穩(wěn)定, 可靠性高。 同時, 該設(shè)計具備良好的通用性, 可以移植到其他基于TMS320C66xx系列芯片的平臺中。

        [1] TI. TMS320C6678: Multicore Fixed and Floating Point Digital Signal Processor[Z]. 2012.

        [2] TI. KeyStone Architecture DSP Bootloader[Z]. 2012.

        [3] 李飛平, 卿粼波, 滕奇志, 等. 基于TMS320C6678的多核程序加載研究與實現(xiàn)[J]. 電子技術(shù)應(yīng)用, 2015,41(3): 31-34. Li Feiping, Qing Linbo, Teng Qizhi, et al. Multicore Program Loading Research and Improve Based on TMS320C6678[J]. Application of Electronic Technique, 2015, 41(3): 31-34. (in Chinese)

        [4] 齊恩勇. 基于多核處理器的彈載嵌入式系統(tǒng)設(shè)計研究[J]. 電子設(shè)計工程, 2013, 21(6): 105-107. Qi Enyong. Research about Designing of Missile-Borne Embedded System Based on Multicore Processor[J]. Electronic Design Engineering, 2013, 21(6): 105-107.(in Chinese)

        [5] 黃震, 劉亞斌. TMS320C6000系列DSP程序固化的研究[J]. 電子設(shè)計工程, 2016, 24(12): 26-28. Huang Zhen, Liu Yabin. Study on the Program Download of TMS320C6000 DSP[J]. Electronic Design Engineering, 2016, 24(12): 26-28.(in Chinese)

        [6] 孔石, 王春雷. 基于EMIF16模塊的TMS320C6678與FPGA接口設(shè)計與實現(xiàn)[J]. 航空兵器, 2015(1): 35-38. Kong Shi, Wang Chunlei. Design and Implementation of Interface between TMS320C6678 and FPGA Based on EMIF16 Module[J]. Aero Weaponry, 2015(1): 35-38. (in Chinese)

        [7] 郝朋朋, 周煦林, 唐藝菁, 等. 基于TMS320C6678多核處理器體系結(jié)構(gòu)的研究[J]. 微電子學(xué)與計算機, 2012, 29(12): 171-175. Hao Pengpeng, Zhou Xulin, Tang Yijing, et al. Research on Multicore Processor’s Architecture Based on TMS320C6678[J]. Microelectronics & Computer, 2012, 29(12): 171-175.(in Chinese)

        DesignandImplementationofMulticoreBootloaderBasedonTMS320C6678Processor

        XueZhiyuan,WangChunlei

        (ChinaAirborneMissileAcademy,Luoyang471009,China)

        According to the characteristics of multicore processors TMS320C6678, a design method based on multicore Bootloader is proposed. The principle and working mechanism of TMS320C6678Bootloader are described, a method to produce the image file of multicore user program is given. As a result, the multicore program loading and auto-running of TMS320C6678are implemented. Experiments show that TMS320C6678processor performs stably under the proposed design method.

        missile-borne computer; TMS320C6678; Bootloader; multicore program loading; EMIT16

        10.19297/j.cnki.41-1228/tj.2017.04.014

        2017-02-14

        薛志遠(yuǎn)(1986-), 男, 山東淄博人, 博士, 主要從事數(shù)字信號處理工作。

        薛志遠(yuǎn), 王春雷. 基于 TMS320C6678的多核Bootloader設(shè)計與實現(xiàn)[ J]. 航空兵器, 2017( 4): 80-83. Xue Zhiyuan, Wang Chunlei. Design and Implementation of Multicore Bootloader Based on TMS320C6678 Processor[ J]. Aero Weaponry, 2017( 4): 80-83.( in Chinese)

        TJ760; TN911.7

        : A

        : 1673-5048(2017)04-0080-04

        猜你喜歡
        用戶程序鏡像文件志遠(yuǎn)
        我最喜愛的玩具①
        變速箱控制系統(tǒng)Bootloader設(shè)計與實現(xiàn)
        Atom interferometers with weak-measurement path detectors and their quantum mechanical analysis?
        嵌入式設(shè)備遠(yuǎn)程升級方案設(shè)計
        沒光驅(qū)不要緊 裝個免費虛擬的
        用RamOS降低公用機的維護工作量
        香噴噴的年喲
        Win7升級Win10教程
        電腦迷(2015年9期)2015-05-30 22:08:35
        Analysis and implementation of FURLS algorithm for active vibration control system with positive feedback①
        C8051F410單片機BootLoader的實現(xiàn)
        精品女人一区二区三区| 豆国产95在线 | 亚洲| 日韩一区二区超清视频| 少妇人妻偷人中文字幕| 二区三区三区视频在线观看| 久久精品99久久香蕉国产| 成人区人妻精品一区二区不卡网站 | 国产午夜精品理论片| 亚洲一区二区不卡日韩| 亚洲黄片av在线播放| 国产又a又黄又潮娇喘视频 | 高清不卡一区二区三区| 欧美日韩精品乱国产538| 日韩少妇人妻一区二区| av天堂最新在线播放| 精品亚洲成a人片在线观看| 国产中出视频| 亚洲一区二区三区偷拍自拍| 国产在线观看自拍av| 人妻丝袜av中文系列先锋影音| 伊人网在线视频观看| 69精品人妻一区二区| 激情综合婷婷色五月蜜桃| 亚洲av永久无码精品一区二区| 亚洲精品6久久久久中文字幕| 白白色日韩免费在线观看| 久久精品国产99久久无毒不卡| 全部孕妇毛片| 日本中文字幕一区二区高清在线| 伊人久久大香线蕉av不变影院 | 中文国产日韩欧美二视频| 国产精品中文第一字幕| 日本免费大片一区二区三区| 无码孕妇孕交在线观看| 隔壁老王国产在线精品| 日本精品人妻无码77777| 国产精品无码不卡在线播放| 大香蕉国产av一区二区三区| 国产一区二区女内射| 91久久久久无码精品露脸 | 亚洲第一幕一区二区三区在线观看 |