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

        ?

        多核DSP芯片C6678引導(dǎo)過(guò)程的研究與實(shí)現(xiàn)

        2016-12-16 04:31:28吳沁文
        現(xiàn)代雷達(dá) 2016年11期
        關(guān)鍵詞:外設(shè)內(nèi)核應(yīng)用程序

        吳沁文

        (南京電子技術(shù)研究所, 南京 210039)

        ?

        ·信號(hào)處理·

        多核DSP芯片C6678引導(dǎo)過(guò)程的研究與實(shí)現(xiàn)

        吳沁文

        (南京電子技術(shù)研究所, 南京 210039)

        多核數(shù)字信號(hào)處理(DSP)芯片給信號(hào)處理能力帶來(lái)了質(zhì)的提升,TI公司推出的TMS320C6678是一款具有代表性的高性能多核DSP芯片。引導(dǎo)技術(shù)是DSP應(yīng)用的關(guān)鍵技術(shù)之一。C6678有著豐富的外設(shè)接口,可選擇多種引導(dǎo)設(shè)備,同時(shí)由于多核的存在,引導(dǎo)過(guò)程變得更為復(fù)雜。文中對(duì)C6678的引導(dǎo)方式進(jìn)行了透徹的研究,介紹了C6678多核引導(dǎo)過(guò)程的具體實(shí)現(xiàn)步驟,對(duì)C6678引導(dǎo)程序的開(kāi)發(fā)提供了實(shí)際的方法和經(jīng)驗(yàn)。

        多核DSP芯片;TMS320C6678芯片;多核引導(dǎo)

        0 引 言

        多核數(shù)字信號(hào)處理(DSP)芯片把多個(gè)處理內(nèi)核集成在一個(gè)芯片上,相比之前的單核DSP在處理能力上有著質(zhì)的飛躍[1],因此,在通信、航空航天、雷達(dá)、工業(yè)探測(cè)等各種信號(hào)處理領(lǐng)域[2-3],越來(lái)越多地使用多核DSP作為主要處理部件[4-6]。其中,TI公司推出的高性能浮點(diǎn)多核DSP芯片TMS320C6678,具有8個(gè)C66x DSP內(nèi)核,芯片浮點(diǎn)運(yùn)算能力160GFLOPS[7],還具有顯著的低功耗特點(diǎn),代表了當(dāng)前多核DSP的主流發(fā)展趨勢(shì)。

        DSP芯片進(jìn)入多核時(shí)代,為信號(hào)處理系統(tǒng)的處理能力帶來(lái)了很大的提升,但是也給DSP軟件開(kāi)發(fā)帶來(lái)新的挑戰(zhàn)[8]。上電引導(dǎo)技術(shù)是DSP開(kāi)發(fā)應(yīng)用的關(guān)鍵難點(diǎn)之一,C6678由于其引導(dǎo)設(shè)備的多樣性以及多個(gè)內(nèi)核的引導(dǎo)需求,上電引導(dǎo)過(guò)程比單核DSP要復(fù)雜許多。本文對(duì)C6678引導(dǎo)技術(shù)進(jìn)行了研究,闡述了C6678的多種引導(dǎo)模式,給出了C6678多核引導(dǎo)的具體實(shí)現(xiàn)步驟,該項(xiàng)技術(shù)已在多項(xiàng)工程實(shí)踐中得到成功應(yīng)用。

        1 Bootloader的執(zhí)行和引導(dǎo)外設(shè)的選擇

        C6678內(nèi)嵌了一個(gè)128 kB的只讀存儲(chǔ)器(ROM),其中放置了TI提供的bootloader代碼[9-10],其起始地址為0x20B00000。上電后,C6678的8個(gè)內(nèi)核中的內(nèi)核0自動(dòng)運(yùn)行bootloader代碼,而內(nèi)核0以外的其他內(nèi)核,則都執(zhí)行一條IDLE語(yǔ)句,等待一個(gè)中斷來(lái)把它們帶出IDLE狀態(tài)。

        C6678外設(shè)接口很多,為用戶提供了多種可選擇的引導(dǎo)設(shè)備,包括FLASH、I2C、SPI、PCIe、Serial RapidIO、HyperLink、Ethernet等。C6678芯片有13個(gè)外部strap引腳BOOTMODE[12∶0]專用于引導(dǎo)方式的設(shè)置[7]。上電后,內(nèi)核0執(zhí)行bootloader代碼,并采樣13個(gè)BOOTMODE引腳的狀態(tài),決定采用哪種引導(dǎo)方式。BOOTMODE [2∶0]用于選擇引導(dǎo)外設(shè)接口,BOOTMODE[9∶3] 規(guī)定該外設(shè)接口的初始化參數(shù)。bootloader根據(jù)這些參數(shù)對(duì)指定外設(shè)接口進(jìn)行初始化,隨后進(jìn)入相應(yīng)的引導(dǎo)過(guò)程。

        表1 BOOTMODE[2:0] 采樣引腳選擇引導(dǎo)外設(shè)接口列表

        選擇不同引導(dǎo)外設(shè)的引導(dǎo)方式可以分為以下四大類:

        1) No Boot方式:C6678將停留在bootloader代碼段,不加載應(yīng)用程序。

        2) C6678作為主設(shè)備,從外部引導(dǎo)設(shè)備讀取應(yīng)用程序映像:采用這種模式的有EMIF16 boot、SPI boot、I2C Master boot Boot Table模式。

        3) C6678作為從設(shè)備,等待外部引導(dǎo)設(shè)備將應(yīng)用程序映像寫(xiě)入C6678內(nèi)存:bootloader令DSP處于IDLE狀態(tài),外部host將應(yīng)用程序映像直接寫(xiě)入C6678內(nèi)存;然后,將應(yīng)用程序入口地址寫(xiě)入C6678的BOOT_MAGIC_ADDRESS寄存器。bootloader查詢到BOOT_MAGIC_ADDRESS地址非零時(shí),就令DSP跳出IDLE狀態(tài),從該地址開(kāi)始運(yùn)行。采用這種模式的有SRIO directIO boot、PCIe boot、Hyperlink boot。

        4) C6678與外部引導(dǎo)設(shè)備交互通信,加載應(yīng)用程序映像:C6678按照一定的通信協(xié)議包格式收取引導(dǎo)設(shè)備發(fā)來(lái)的應(yīng)用程序映像,直到收到結(jié)束包為止,跳轉(zhuǎn)到指定的應(yīng)用程序入口地址開(kāi)始運(yùn)行。采用這種模式的有SRIO Message boot、Ethernet boot、I2C Passive boot。

        2 間接引導(dǎo)方式

        除了上面四類引導(dǎo)以外,C6678還通過(guò)I2C提供了一種非常靈活的間接引導(dǎo)方式,即I2C Master boot Config Table模式。前提是首先要具備I2C EEPROM外設(shè)。

        C6678可以選擇多種引導(dǎo)設(shè)備,但是BOOTMODE[9∶3]所能選擇的外設(shè)初始化參數(shù)有限,往往不能滿足多變的應(yīng)用場(chǎng)景。為了能提供更加靈活的外設(shè)引導(dǎo)模式,C6678提供了這種間接引導(dǎo)方式。在這種方式下,C6678先按照I2C Master boot模式從I2C EEPROM進(jìn)行初級(jí)引導(dǎo);然后,從I2C EEPROM讀取間接引導(dǎo)設(shè)備的設(shè)置信息,對(duì)該設(shè)備初始化設(shè)置后,將引導(dǎo)設(shè)備重定向到該設(shè)備進(jìn)行引導(dǎo)。該方式的具體步驟如下:

        第一步:由BOOTMODE引腳選擇I2C Master boot。

        第二步:C6678通過(guò)I2C從I2C EEPROM讀取“引導(dǎo)參數(shù)表”,根據(jù)表中的引導(dǎo)選項(xiàng)選擇之后的引導(dǎo)模式。

        如果選擇Boot Table模式,則C6678直接從表中指定的I2C EEPROM地址讀取應(yīng)用程序映像。

        如果選擇boot Config Table模式,則從表中指定的I2C EEPROM地址讀取到的不是應(yīng)用程序映像,而是引導(dǎo)配置表,需繼續(xù)執(zhí)行第三、四步。

        第三步:bootloader從I2C EEPROM讀取引導(dǎo)配置表,根據(jù)引導(dǎo)配置表對(duì)外設(shè)接口做出設(shè)置更改。

        第四步:bootloader在引導(dǎo)配置表的結(jié)尾處,獲取間接引導(dǎo)設(shè)備信息,重定向到該設(shè)備,開(kāi)始應(yīng)用程序的引導(dǎo)。

        3 多核引導(dǎo)過(guò)程的實(shí)現(xiàn)

        C6678是多核芯片,因此引導(dǎo)過(guò)程比單核芯片要復(fù)雜許多,以上完成的只是內(nèi)核0的引導(dǎo),還要對(duì)內(nèi)核1~內(nèi)核7進(jìn)行引導(dǎo),才完成整個(gè)芯片的引導(dǎo)工作。為了說(shuō)明多核引導(dǎo)的過(guò)程,下面以最基本的EMIF16 boot模式為例,對(duì)多核引導(dǎo)作詳細(xì)描述。

        3.1 一級(jí)引導(dǎo)過(guò)程

        與其他芯片一樣,C6678最基本的引導(dǎo)方式仍然是EMIF16接口引導(dǎo),即從外部FLASH引導(dǎo)的方式。C6678共有CE0CE1CE2CE3四個(gè)地址空間可以連接FLASH,可對(duì)接寬度為16 bit或8 bit的FLASH。在EMIF16 boot模式下,上電后bootloader初始化EMIF16接口,然后跳轉(zhuǎn)到C6678 CE0空間首地址0x70000000開(kāi)始執(zhí)行。因此,一般將C6678的FLASH芯片置于C6678的CE0空間。圖1是16 bit NOR FLASH與C6678連接圖,采用CE0空間。

        圖1 C6678 CE0空間與16 bit NOR FLASH連接圖

        如果應(yīng)用程序很簡(jiǎn)短并且運(yùn)行速度要求不高的話,我們可以直接把應(yīng)用程序燒到以0x70000000地址開(kāi)頭的FLASH內(nèi)即可。但是,對(duì)于C6678這樣高速、多核、存儲(chǔ)器容量大、外設(shè)資源豐富的DSP芯片來(lái)說(shuō),其應(yīng)用程序一般來(lái)說(shuō)是比較龐大的。因此,需要設(shè)計(jì)更復(fù)雜的引導(dǎo)過(guò)程。

        3.2 二級(jí)引導(dǎo)過(guò)程

        我們?cè)贔LASH首地址0x70000000處放一段簡(jiǎn)短的匯編代碼(文件名為boot.asm),作為二級(jí)引導(dǎo)程序。以下是boot.asm代碼示例:

        //-----------boot.asm start-------------

        BOOT_LEN .equ 0xC000 //應(yīng)用程序長(zhǎng)度,單位為字節(jié)

        FLASH_ADDR .equ 0x70000200 //應(yīng)用程序在FLASH內(nèi)的首地址

        RAM_ADDR .equ 0x800200

        .sect “boot_sect”

        .global _boot

        .ref _c_int00

        _boot:

        MVKL RAM_ADDR,A4; MVKH RAM_ADDR,A4; //將內(nèi)存地址放入A4寄存器

        MVKL FLASH_ADDR,B4; MVKH FLASH_ADDR,B4; //將FLASH地址放入B4寄存器

        MVKL BOOT_LEN,A0; MVKH BOOT_LEN,A0; //將程序長(zhǎng)度放入A0寄存器

        //將應(yīng)用程序從FLASH拷貝入C6678內(nèi)存

        _wait_loop: LDH *B4++[1],B5; SUB A0,1,A0; Nop 4; STH B5,*A4++[1];

        [A0] B _wait_loop; Nop 5;

        MVKL .S2 _c_int00,B0; MVKH .S2 _c_int00,B0; //將應(yīng)用程序入口地址放入B0寄存器

        B .S2 B0; Nop 5;//跳到應(yīng)用程序入口

        //-----------boot.asm end-------------

        這段匯編代碼的作用是:把用戶的應(yīng)用程序從flash內(nèi)地址0x70000200搬到C6678內(nèi)存地址0x800200,搬移長(zhǎng)度為應(yīng)用程序長(zhǎng)度。隨后跳到應(yīng)用程序入口_c_int00,即完成二級(jí)引導(dǎo)過(guò)程。

        如果用戶的應(yīng)用程序僅需在內(nèi)核0上運(yùn)行,到此引導(dǎo)過(guò)程就完成了。但是在大多數(shù)應(yīng)用場(chǎng)景下,用戶的應(yīng)用程序需要在多核上運(yùn)行,所以還要對(duì)內(nèi)核1~內(nèi)核7進(jìn)行引導(dǎo),我們稱之為三級(jí)引導(dǎo)。

        3.3 三級(jí)引導(dǎo)過(guò)程

        在本例中,在C6678的八個(gè)核上運(yùn)行同一個(gè)應(yīng)用程序usr.c。為了將user.c最終在八個(gè)核上運(yùn)行起來(lái),我們編寫(xiě)了一個(gè)三級(jí)引導(dǎo)程序,本例中稱之為boot0.c。二級(jí)引導(dǎo)的任務(wù)是將boot0.c程序的代碼搬到內(nèi)核0上運(yùn)行起來(lái),由boot0.c代碼最終完成將usr.c代碼引導(dǎo)到八個(gè)核上并運(yùn)行起來(lái)的任務(wù)。以下是三級(jí)引導(dǎo)程序boot0.c代碼示例:

        //-----------boot0.c start-------------

        void main(void){

        uint id,src_addr,dst_addr;

        uint user_entry=0x802780,user_codelen=0x16E00/4,user_addr=0x849200;

        void (*user_main)(void)=(void(*)(void)user_entry;

        if(DNUM==0)// 內(nèi)核0將應(yīng)用程序usr.c代碼搬入8個(gè)內(nèi)核的內(nèi)存

        { for(id=0;id<8;id++)

        { src_addr=0x70080000;dst_addr=user_addr+(id+1)*0x1000000;

        copy(src_addr,dst_addr,user_codelen);}

        }

        for(id=0;id<8;id++) //內(nèi)核0將應(yīng)用程序入口寫(xiě)入其他7個(gè)內(nèi)核的BOOT_MAGIC_ADDR

        { BOOT_MAGIC_ADDR(id)=user_entry; TSC_delay_ms(1); }

        //core0對(duì)其他7個(gè)內(nèi)核觸發(fā)IPC中斷使它們跳到應(yīng)用程序入口開(kāi)始執(zhí)行

        CSL_BootCfgUnlockKicker();

        for(id=1;id<8;id++) {IPCGR(id)=0x1; TSC_delay_ms(5); }

        CSL_BootCfgLockKicker();

        (*user_main)();//內(nèi)核0自己跳轉(zhuǎn)到應(yīng)用程序入口開(kāi)始執(zhí)行

        //-----------boot0.c end-------------

        程序具體步驟說(shuō)明:

        (1)應(yīng)用程序的拷貝

        C6678的每個(gè)內(nèi)核都有屬于自己的一套內(nèi)存,包括32 kB的一級(jí)程序存儲(chǔ)器(L1P RAM),32 kB的一級(jí)數(shù)據(jù)存儲(chǔ)器(L1D RAM)以及512 kB的二級(jí)存儲(chǔ)器(L2 RAM)。一般將L1P RAM和L1D RAM作為cache使用,而將L2 RAM作為內(nèi)存使用。在本例中,應(yīng)用程序usr.c放在內(nèi)存L2 RAM中運(yùn)行,用戶的應(yīng)用程序也可以放在8核共享內(nèi)存MSMC SRAM或外部DDR存儲(chǔ)器中,但放在內(nèi)存中時(shí),程序運(yùn)行速度最快。

        boot0.c首先將應(yīng)用程序usr.c的代碼從FLASH內(nèi)地址0x70080000搬到每個(gè)內(nèi)核的內(nèi)存中,搬移長(zhǎng)度為應(yīng)用程序長(zhǎng)度。每個(gè)內(nèi)核的L2 RAM本地地址是0x800000,但還有一個(gè)全局地址供其他核訪問(wèn)。0x10800000對(duì)應(yīng)內(nèi)核0的L2 RAM,0x20800000對(duì)應(yīng)內(nèi)核1的L2 RAM,……,0x80800000對(duì)應(yīng)內(nèi)核7的L2 RAM。用這一套全局地址,內(nèi)核0將應(yīng)用程序代碼拷貝到每個(gè)內(nèi)核的內(nèi)存中。

        (2)設(shè)置BOOT_MAGIC_ADDR

        在多核引導(dǎo)過(guò)程中,每個(gè)內(nèi)核的L2 RAM的最后四個(gè)字有特殊的用處,用于放置應(yīng)用程序的入口地址,稱之為BOOT_MAGIC_ADDR。boot0.c將應(yīng)用程序usr.c的入口地址寫(xiě)到內(nèi)核1~內(nèi)核7的BOOT_MAGIC_ADDR,地址為0x87fffc,同樣要按照內(nèi)核的序號(hào)加上全局地址偏移。

        (3)觸發(fā)IPC中斷

        內(nèi)核1~內(nèi)核7的BOOT_MAGIC_ADDR被寫(xiě)成應(yīng)用程序入口地址后,還要給內(nèi)核1~內(nèi)核7都發(fā)送一個(gè)IPC中斷。內(nèi)核1~內(nèi)核7收到這個(gè)中斷后,就會(huì)跳出IDLE狀態(tài),跳到BOOT_MAGIC_ADDR指定的地址開(kāi)始執(zhí)行。

        C6678有一對(duì)寄存器KICK0和KICK1來(lái)保護(hù)Bootcfg寄存器不被隨便修改。boot0.c程序中需要先對(duì)這兩個(gè)寄存器進(jìn)行設(shè)置,使得Bootcfg寄存器寫(xiě)保護(hù)解鎖,才能寫(xiě)內(nèi)核1~內(nèi)核7的IPC寄存器來(lái)觸發(fā)中斷,寫(xiě)完后再將寫(xiě)保護(hù)鎖上。

        給內(nèi)核1~內(nèi)核7的IPC中斷發(fā)出后,內(nèi)核1~內(nèi)核7就依次跳到應(yīng)用程序入口開(kāi)始運(yùn)行,至此內(nèi)核1~內(nèi)核7的引導(dǎo)就完成了。

        (4)內(nèi)核0應(yīng)用程序的運(yùn)行此時(shí),boot0.c已完成對(duì)內(nèi)核1~內(nèi)核7的引導(dǎo)。最后,它運(yùn)行(*user_main)()空函數(shù)使內(nèi)核0自己跳轉(zhuǎn)到應(yīng)用程序入口地址,開(kāi)始運(yùn)行應(yīng)用程序。

        4 cmd文件的設(shè)計(jì)和內(nèi)存地址的分配

        在本例的引導(dǎo)過(guò)程中,引導(dǎo)程序和應(yīng)用程序都在內(nèi)存中運(yùn)行,因此,需要對(duì)內(nèi)存進(jìn)行規(guī)劃,不能在地址上有所沖突。

        C6678程序在CCS環(huán)境下進(jìn)行工程的新建、編譯鏈接、生成.out目標(biāo)文件,每個(gè)工程必須配備一個(gè)cmd文件,來(lái)決定目標(biāo)文件各個(gè)代碼段的地址分配。本例中,我們將二級(jí)引導(dǎo)文件boot.asm和三級(jí)引導(dǎo)文件boot0.c合并到一個(gè)工程boot0.project中,并配備boot0.cmd文件。以下為與上面boot.asm、boot0.c配套的boot0.cmd文件示例:

        //-----------boot0.cmd start------------

        MEMORY

        { L2SRAM0:org=0x800000,len=0x100 // L2SRAM0內(nèi)存段放置boot.asm

        L2SRAM1(RWX):org=0x800200,len=0x3000 // L2SRAM1內(nèi)存段放置所有初始化段

        L2RAM_un(RWX):org=0x830200,len=0x19000 // L2RAM_un內(nèi)存段放置非初始化段

        MSMCRAM(RWX):org=0xc000000,len=0xc0000 //多核共享內(nèi)存段

        }

        SECTIONS

        { .boot_sect> L2SRAM0//boot.asm放入L2SRAM0內(nèi)存段

        .sysmem> MSMCRAM

        .text > L2SRAM1

        .cinit> L2SRAM1

        …… //初始化段都放入L2SRAM1

        .stack>L2RAM_un

        .data>L2RAM_un

        …… //非初始化段都放入L2RAM_un

        }

        //-----------boot0.cmd end------------

        boot0.project工程編譯后,與boot0.out文件一起產(chǎn)生的還有一個(gè)boot0.map文件,在該文件中,凡是標(biāo)有UNINITIALIZED的段如.data、.far、.stack等都是非初始化段,除此之外的段都是初始化段,也即boot0程序真正需要寫(xiě)入FLASH并在boot過(guò)程中拷貝內(nèi)存中的代碼。為方便引導(dǎo)過(guò)程,本例中將所有初始化段都放在一段連續(xù)的內(nèi)存空間0x800200~0x830200內(nèi),其長(zhǎng)度為0x30000,換算成32 bit字長(zhǎng)度即為0xC000。另外還定義了一段內(nèi)存空間0x800000~0x800100,用來(lái)放置boot_sect段,該段即boot.asm代碼。

        需要注意的是,boot0程序代碼的地址0x800200和長(zhǎng)度0xC000需要和boot.asm程序中的RAM_ADDR和BOOT_LEN一致。另外,在boot0.map文件的開(kāi)頭還可以看到boot0.out文件的入口地址是0x807180,標(biāo)識(shí)符為_(kāi)c_int00,即boot.asm最后所跳轉(zhuǎn)到的地址。

        應(yīng)用程序usr.c另外做一個(gè)工程usr.project,配備cmd文件為usr.cmd。在usr.cmd中,同樣將非初始化段和初始化段定義在不同的內(nèi)存空間中,初始化段所在內(nèi)存空間的起始地址和長(zhǎng)度即對(duì)應(yīng)boot0.c程序中的user_addr和user_codelen。從usr.project工程編譯后生成的usr.map文件開(kāi)頭可以找到usr.out程序的入口地址,需要將其與boot0.c程序中的user_entry對(duì)應(yīng)起來(lái)。

        需要注意的是,應(yīng)用程序usr.out代碼段拷貝到內(nèi)核0內(nèi)存中時(shí),內(nèi)核0上還在運(yùn)行boot0.c程序,所以u(píng)sr.out的初始化代碼段和boot0.out初始化及非初始化代碼段不能在地址上有重合。

        5 燒寫(xiě)文件的生成

        準(zhǔn)備好引導(dǎo)程序和應(yīng)用程序后,我們還必須把二級(jí)引導(dǎo)、三級(jí)引導(dǎo)、應(yīng)用程序的代碼都燒入FLASH。CCS環(huán)境編譯生成的.out文件不能直接用來(lái)燒寫(xiě)FLASH,必須用TI公司提供的兩個(gè)工具軟件hex6x.exe和b2ccs.exe。先用hex6x.exe把.out文件轉(zhuǎn)換成.hex文件,再用b2ccs.exe把.hex文件轉(zhuǎn)換成燒寫(xiě)所需的bootasm.dat、boot0.dat、usr.dat。最后,將這三個(gè)文件分別燒入FLASH地址0x70000000、0x70000200、0x70080000,C6678即可完成上電自動(dòng)引導(dǎo)過(guò)程。0x70000000是FLASH的起始地址,0x70000200、0x70080000分別和boot.asm中的FLASH_ADDR、boot0.c中的src_addr相對(duì)應(yīng),這兩個(gè)地址可以自己定義,只要在FLASH地址空間內(nèi)且不互相沖突就可以了。

        要注意的是,用hex6x.exe、b2ccs.exe工具產(chǎn)生的.dat文件,默認(rèn)是大端模式,如果工程是小端模式,則燒寫(xiě)前要將高低16 bit反一下。

        6 其他應(yīng)用場(chǎng)景

        C6678每個(gè)核的內(nèi)存較小,因此在應(yīng)用場(chǎng)景中用戶有可能需要將應(yīng)用程序放在雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DDR)中運(yùn)行,此時(shí),除了修改boot0.c中的usr_addr以及應(yīng)用程序cmd文件中地址到DDR內(nèi)指定地址以外,還要在boot0.c中添加DDR初始化語(yǔ)句。

        另外,每個(gè)內(nèi)核的應(yīng)用程序也可以是不同的,則需要分別生成.dat文件,燒入FLASH不同的地址段,boot0.c也修改成從不同的FLASH地址來(lái)給各個(gè)內(nèi)核加載程序。

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

        C6678由于有多個(gè)核需要引導(dǎo),引導(dǎo)過(guò)程以及地址分配比單核DSP要復(fù)雜,因此引入三級(jí)引導(dǎo)過(guò)程。一般來(lái)說(shuō),二級(jí)引導(dǎo)程序boot.asm比較簡(jiǎn)短且可以固定不變,三級(jí)引導(dǎo)程序boot0.c則需要根據(jù)應(yīng)用程序所在的空間以及長(zhǎng)度做出調(diào)整。引導(dǎo)程序的運(yùn)行和應(yīng)用程序的加載在地址空間上的分開(kāi)也是C6678引導(dǎo)過(guò)程需要非常注意的要點(diǎn)。

        [1] 于文震. 雷達(dá)信號(hào)數(shù)據(jù)處理平臺(tái)發(fā)展趨勢(shì)探討現(xiàn)代雷達(dá)[J]. 現(xiàn)代雷達(dá), 2009, 31(7): 1-7. YU Wenzhen. Development trend of radar signal and data processing platform[J]. Modern Radar, 2009, 31(7): 1-7.

        [2] 劉 宇, 王巖飛, 楊汝良. 基于TMS320C6701高速并行信號(hào)處理平臺(tái)的設(shè)計(jì)[J]. 現(xiàn)代雷達(dá),2003,25(3): 18-20. LIU Yu, WANG Yanfei, YANG Ruliang. Design of high speed parallel signal processing platform based on TMS320C6701[J]. Modern Radar, 2003,25(3),18-20.

        [3] 謝 民, 高梅國(guó). 基于TMS320C62X的雷達(dá)制導(dǎo)信號(hào)處理器設(shè)計(jì)[J]. 現(xiàn)代雷達(dá), 2006,28(11): 41-44. XIE Min,GAO Meiguo. Design of radar signal processing system based on TMS320C62X[J]. Modern Radar, 2006,28(11):41-44.

        [4] 趙 非, 劉濤慶. TMS320C6678在單脈沖雷達(dá)信號(hào)處理系統(tǒng)中的應(yīng)用[J]. 數(shù)字技術(shù)與應(yīng)用,2014(6): 131-133. ZHAO Fei, LIU Taoqing. Application of TMS320C6678 in mono-pulse radar signal prcessing system[J]. Digital Technique and Application, 2014(6):131-133.

        [5] 肖 亮,張學(xué)健. 基于多核DSP的超聲成像處理算法的并行實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用, 2013,39(6): 27-30. XIAO Liang, ZHANG Xuejian. Parallel implementation of processing algorithm of ultrasound imaging based on mltiti-core DSP[J]. Application of Electronic Technique, 2013, 39(6): 27-30.

        [6] 袁 琪,楊 康,周建江,等. 大點(diǎn)數(shù)FFT算法C6678多核DSP的并行實(shí)現(xiàn)[J]. 電子測(cè)量技術(shù), 2015,38(2):79-80. YUAN Qi, YANG Kang, ZHOU Jianjiang, et al. Implementation of large points FFT based on C6678 multi-core DSP[J]. Electronic Measurement Technology, 2015,38(2):79-80.

        [7] 牛金海. TMS320C66x Keystone架構(gòu)多核DSP入門(mén)與實(shí)例精解[M]. 上海: 上海交通大學(xué)出版社, 2014. NIU Jinhai. TMS320C66x keystone architecture multi-core DSP introduction and case explanation[M]. Shanghai: Shanghai Jiaotong University Press, 2014.

        [8] 董淵文, 張永軍, 高曉亮, 等. 基于TMS320C6678多核DSP的分布式通信系統(tǒng)[J]. 微型機(jī)與應(yīng)用, 2014,33(13): 74-76. DONG Yuanwen, ZHANG Yongjun, GAO Xiaoliang, et al. Distributed communication system based on multicore DSP TMS320C6678[J].Microcomputer & Its Applications, 2014, 33(13): 74-76.

        [9] 胡海龍, 彭啟琮. TMS320C6713基于DSP/BIOS的二級(jí)Bootloader開(kāi)發(fā)[J]. 現(xiàn)代電子技術(shù),2015(15): 74-75. HU Hailong, PENG Qicong. Development of a second-level Bootloader based on DSP/BIOS on TMS320C6713[J]. Modern Electronic Technique, 2015(15): 74-75.

        [10] 謝世珺,李永超,馬金嶺. TMS320C6000系列帶中斷向量的二次Bootloader的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子工程師, 2007,33(3): 51-54. XIE Shijun, LI Yongchao, MA Jingling. Design and realization of the second-level Bootloader technology for TMS320C6000s with interrupt vector table[J]. Electronic Engineer, 2007,33(3): 51-54.

        吳沁文 女,1975年生,本科,高級(jí)工程師。研究方向?yàn)樾盘?hào)處理、DSP、FPGA。

        Study and Realization of Boot Procedure of Multi-core DSP C6678

        WU Qinwen

        (Nanjing Research Institute of Electronics Technology, Nanjing 210039, China)

        Multi-core drgital signal processing (DSP) brought a quality improvement to the signal processing capabilities. The TMS320C6678 DSP presented by Texas Instruments (TI) is a representative high-performance multi-core DSP. Boot technique is one of the key techniques of the DSP′s application. C6678 has various peripheral interfaces and can select different boot devices. Owing to this and the existence of multiple cores, it's boot procedure is considerable complex. This paper gave a deep research on boot modes of C6678, discussed the specific boot steps of C6678's eight cores, providing practical methods and experience to the developing of C6678 boot programs.

        Multi-core DSP; TMS320C6678; multi-core boot

        10.16592/ j.cnki.1004-7859.2016.11.008

        吳沁文 Email:qiwen_wu@sina.com

        2016-08-17

        2016-10-20

        TN911.7

        A

        1004-7859(2016)11-0035-05

        猜你喜歡
        外設(shè)內(nèi)核應(yīng)用程序
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        刪除Win10中自帶的應(yīng)用程序
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        貼身呵護(hù) 必不可少的PSP外設(shè)
        外設(shè)天地行情
        三星電子將開(kāi)設(shè)應(yīng)用程序下載商店
        国产精品18久久久久网站| 伊人情人色综合网站| 日本一区二区三区爆乳| 亚洲无亚洲人成网站77777| 精品爆乳一区二区三区无码av| 青草蜜桃视频在线观看| 亚洲av一区二区三区网站| 久久精品女同亚洲女同| 免费成人电影在线观看| 久久99精品久久久久久秒播| 国产思思99re99在线观看| 亚洲国产高清在线视频| 精品国产中文久久久免费| 四虎永久在线精品免费一区二区| 国模无码一区二区三区不卡| 2019年92午夜视频福利| 99免费视频精品| 在线看高清中文字幕一区| 日出白浆视频在线播放| а天堂中文在线官网| 亚洲天堂资源网| 中文字幕精品永久在线| 日韩有码在线一区二区三区合集| 久久天堂av综合合色| 六月婷婷久香在线视频| 91精品国产免费久久久久久青草| 亚洲av乱码一区二区三区观影 | 人人妻人人澡人人爽人人精品浪潮 | 日本又黄又爽gif动态图| 不卡无毒免费毛片视频观看| 在线观看免费的黄片小视频| 久久国内精品自在自线| 99久久久国产精品免费蜜臀| 亚洲av国产av综合av| 精品亚洲一区二区视频| 精品日本一区二区三区| 午夜免费啪视频| 亚洲精品国产精品国自产观看 | 成人免费无码大片a毛片抽搐色欲 日本动漫瀑乳h动漫啪啪免费 | 亚洲视频不卡免费在线| 日本黑人亚洲一区二区|