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

        ?

        基于C6000系列DSP片外Flash的IAP設(shè)計(jì)

        2018-02-25 06:21:08李光學(xué)李超郭燕紅岳宗帥宋茜
        電子技術(shù)與軟件工程 2018年9期

        李光學(xué) 李超 郭燕紅 岳宗帥 宋茜

        摘要 本文在基于C6000系列DSP片外Flash的基礎(chǔ)上,針對(duì)嵌入式設(shè)備程序燒寫升級(jí)困難的問題, 闡述了In-ApplicationProgramming (lAP)的設(shè)計(jì)方案,詳細(xì)介紹了二次引導(dǎo)啟動(dòng)及首次燒寫方法,給出關(guān)鍵技術(shù)的代碼實(shí)現(xiàn)。采用IAP很好的實(shí)現(xiàn)了C6000系列DSP的程序燒寫及升級(jí),其不用借助外部工具,可靠便捷,通用性好,具有良好的推廣價(jià)值。

        【關(guān)鍵詞】C6000 DSP 片外 Flash IAP

        1 概述

        C6000系列DSP在產(chǎn)品的開發(fā)的過程中,固件程序的升級(jí)更新非常頻繁,若繼續(xù)采用傳統(tǒng)的JTAG或者ICP等燒寫方法,過程繁瑣復(fù)雜,極大地降低了工作效率,所以開發(fā)一種便捷,可靠,通用性好的在應(yīng)用燒寫In-Application Programming (IAP)方法就顯得格外重要。06000系列DSP不帶片上ROM,脫機(jī)運(yùn)行需要配置外部Flash,不能直接通過JTAG仿真器來燒寫程序,與一般自帶片上ROM的單片機(jī)系統(tǒng)的IAP開發(fā)方法不同,本文針對(duì)上述問題,詳細(xì)闡述了C6000系列DSP的IAP實(shí)現(xiàn)原理及整個(gè)引導(dǎo)啟動(dòng)流程。

        2 DSP配置分析

        DSP系統(tǒng)上電后,在復(fù)位信號(hào)的上升沿處,會(huì)鎖存BOOTMODE引腳信號(hào),借以決定DSP的存儲(chǔ)器映射方式,地址為0處的存儲(chǔ)器類型及復(fù)位后芯片的自舉方式。BOOTMODE信號(hào)決定了DSP在復(fù)位期間所做的工作。C6000系列DSP主要有以下3種自舉模式:

        (1)不加載(NO BOOT)。DSP直接從地址O處開始執(zhí)行程序,地址O處的存儲(chǔ)器可以是DSP內(nèi)部存儲(chǔ)器或者外部RAM,這種方式適用于仿真器系統(tǒng)下的DSP自舉模式。

        (2) ROM加載。此種方式適合8位、16位和32位的ROM( -般為Flash)。對(duì)于不同型號(hào)的C6000系列DSP,需注意Flash的大小端模式存儲(chǔ)。

        (3)主機(jī)引導(dǎo)(HPI Boot)。CPU在復(fù)位期間,其硬件保持正常工作狀態(tài),外部主機(jī)通過HPI接口初始化CPU的存儲(chǔ)空間。

        復(fù)位結(jié)束后,無論采用哪種引導(dǎo)方式,DSP芯片都將從地址O處開始執(zhí)行程序。因該系列DSP不自帶Flash,本系統(tǒng)以C6701為例,設(shè)計(jì)一個(gè)脫機(jī)運(yùn)行系統(tǒng),外部配置16位Flash,加載方式為16bit ROM加載,即自舉模式2,存儲(chǔ)器映射為MAP1,地址O處為內(nèi)部存儲(chǔ)器,BOOTMODE引腳需配置為Oll01。

        3 首次燒寫設(shè)計(jì)

        06000系列DSP沒有片上ROM,只有片上RAM,脫機(jī)運(yùn)行需配置外部Flash,第一次代碼燒寫需編寫專門的燒寫程序來下載應(yīng)用程序到外部Flash中。這是一種需要加載兩次程序的方法,如圖1所示,首先用CCS編譯軟件打開用戶應(yīng)用程序,生成可執(zhí)行文件(0UT),然后用CCS的file/load program加載應(yīng)用程序的OUT文件到DSP片上內(nèi)存空間。再通過map文件,確定應(yīng)用程序各段數(shù)據(jù)所對(duì)應(yīng)的空間,將程序段和數(shù)據(jù)段這兩段數(shù)據(jù)采用file/data/load命令分別導(dǎo)出成dat格式的文件。然后加載Flash燒寫程序,利用file/data/load命令,將生成的dat文件加加載到DSP片上RAM的一段未使用的空間中,然后使用專用燒寫程序?qū)?shù)據(jù)燒寫到對(duì)應(yīng)的Flash空間中。

        其燒寫函數(shù)實(shí)現(xiàn)如下所示:

        ProgramFlash (PRAM, PFlash,Length);//將程序段燒入FLSAH中

        ProgramFlash (DRAM, DFlash, Length);//將數(shù)據(jù)段燒入Flash中

        其中函數(shù)的定義是:

        void ProgramFlash (int *sourcepoint, Uint32Flashpoint;Uint32 int j)第一個(gè)參數(shù)sourcepoint是待燒寫數(shù)據(jù)在片上RAM首地址;第二個(gè)參數(shù)Flashpoint是將被燒寫Flash的首地址;最后一個(gè)參數(shù)j是待燒寫的32位數(shù)據(jù)的總長(zhǎng)度。

        圖2所示為首次燒寫過程中,代碼在片上RAM和片外ROM(Flash)中的變化,首先專用燒寫程序通過自舉模式1啟動(dòng),然后手動(dòng)載入待燒寫的用戶應(yīng)用程序,接著運(yùn)行專用燒寫程序?qū)⒂脩魬?yīng)用程序燒入片外ROM中,斷電后片上RAM數(shù)據(jù)消失,只有片外ROM的用戶應(yīng)用程序。

        4 應(yīng)用程序設(shè)計(jì)

        上面介紹了首次如何使用專用燒寫程序,借助CCS開發(fā)環(huán)境將用戶應(yīng)用程序燒寫到片外ROM(Flash)中。為了能讓DSP脫機(jī)運(yùn)行,一個(gè)完整的用戶應(yīng)用程序需包含實(shí)際的應(yīng)用程序數(shù)據(jù)和二次引導(dǎo)代碼數(shù)據(jù)。DSP芯片在復(fù)位時(shí),DMA控制器自動(dòng)將片外ROM(Flash)自起始地址一定大小的程序(二次引導(dǎo)代碼)搬移到片上RAM地址O處,即自引導(dǎo)過程,如圖中過程l所示;完成復(fù)位后,CPU從地址O處開始執(zhí)行程序,把應(yīng)用程序數(shù)據(jù)從片外ROM搬運(yùn)到片上RAM的某地址處,即二次引導(dǎo)過程,然后跳轉(zhuǎn)到c int00(mam函數(shù))處運(yùn)行,如圖中過程3所示,最終完成應(yīng)用程序的啟動(dòng)。

        當(dāng)用戶應(yīng)用程序需要更新的時(shí)候,可以采用首次燒寫方法進(jìn)行,但比較繁瑣,特別對(duì)于一些正式產(chǎn)品來說,那只能返廠更新,本文設(shè)計(jì)的應(yīng)用程序包含在線燒寫功能,可以通過總線接收數(shù)據(jù),燒寫進(jìn)入外部Flash中,如圖3 最后一個(gè)步驟所示。

        下面將分別從CMD連接命令文件配置,二次引導(dǎo)程序設(shè)計(jì),向量表設(shè)計(jì),在線燒寫設(shè)計(jì)詳細(xì)介紹IAP的實(shí)現(xiàn)。因C6000系列DSP的原理都一致,實(shí)例代碼是以C6701硬件平臺(tái)給出。

        4.1 CMD連接命令文件配置

        CMD文件的作用是實(shí)現(xiàn)程序代碼和數(shù)據(jù)在DSP存儲(chǔ)空間的定位,在編譯連接時(shí)由CCS開發(fā)環(huán)境調(diào)用。脫機(jī)啟動(dòng)時(shí),自引導(dǎo)就是將片外ROM的向量表和二次引導(dǎo)程序搬到地址0處執(zhí)行,所以需在CMD文件中明確這兩個(gè)段的運(yùn)行空間,CMD文件如下

        -heap Ox400

        -stack Ox400

        MEMORY

        {

        vecs:

        o=OOOOOOOOh l=00000200h//向量表空間

        boot_ load:

        0 = 00000200h 1=00000200h//二次引導(dǎo)程序空間

        IPRAM:

        o=00000400h 1=OOOOeOOOh∥程序段空間

        IDRAM:

        o=80000000h 1=OOOlOOOOh,/數(shù)據(jù)段空間

        SEC,TIONS

        {

        ”vectors” >

        vecs

        //將”vectors”段存儲(chǔ)到vecs空間

        ”.boot_ load”>

        boot_ load//將”boot load”段存儲(chǔ)到boot load空間

        cinit

        >

        IDRAM

        .text

        >

        IPRAM

        .stack > IDRAM

        .bss

        > IDRAM

        const >

        IDRAM

        data > IDRAM

        .far

        >IDRAM

        .switch > IDRAM

        .sysmem >

        IDRAM

        tables >IDRAM

        Cl0 > IDRAM

        其中vectors和boot load段存儲(chǔ)的為向量表和二次引導(dǎo)程序,地址范圍為O-Ox3ff,啟動(dòng)時(shí)被自動(dòng)加載到地址0處并執(zhí)行。

        4.2 二次引導(dǎo)程序設(shè)計(jì)

        二次引導(dǎo)程序的作用是將應(yīng)用程序數(shù)據(jù)從片外ROM(Flash)搬移到片上RAM存儲(chǔ)器中執(zhí)行。本實(shí)例中將二次引導(dǎo)程序保存在DSP內(nèi)部RAM的Ox200地址開始的Ox200字節(jié)空間,由于復(fù)位中斷向量設(shè)置為二次引導(dǎo)程序的入口地址,所以當(dāng)系統(tǒng)上電復(fù)位后,系統(tǒng)轉(zhuǎn)去執(zhí)行二次引導(dǎo)程序,將應(yīng)用程序數(shù)據(jù)段搬移到指定的存儲(chǔ)空間,再跳轉(zhuǎn)到DSP主程序的程序入口處(c int00)執(zhí)行DSP應(yīng)用程序。主要代碼如下:

        EMIF GCR

        e quOx01800000 11定義EMIF全局控制器GBLCTL

        EMIF GCR DATA

        equ Ox3779//設(shè)置GBLCTL參數(shù)

        EMIF CEl

        e quOx01800004∥定義EMIF CEl控制器CEICTL

        EMIF_CEl_DATA .equ Oxffffff03 11設(shè)置CEICTL

        BOOT SLZE

        .equ Ox600 //設(shè)置搬運(yùn)長(zhǎng)度,單位為字節(jié)

        sect”boot load”

        ∥定義”boot load”段

        ref_cint00

        //引用全局符號(hào)c int00

        .global _boot

        //定義一個(gè)全局符號(hào)boot,供外部調(diào)用

        boot:

        mvkl EMIF_GCR,A4

        ||mvkl EMIF_GCR_DATA, B4

        mvkh EMIF_GCR,A4

        ||mvkh EMIF_GCR_DATA, B4

        stw B4, *A4

        //設(shè)置GBLCTL參數(shù)

        mvkl EMIF CE1.A4

        ll mvkl EMIF_CEl_DATA,B4

        mvkh EMIF CE1.A4

        || mvkh EMIF_CEl_DATA,B4

        stw B4, *A4

        +設(shè)置CEICTL參數(shù)

        mvkl Ox80000000,A4

        || mvkl Ox01410000,B4

        mvkh Ox80000000,A4

        ll mvkh Ox01410000,B4

        //A4為數(shù)據(jù)段地址指針,B4為Flash地址指針

        zero Al

        //Al作為計(jì)數(shù)器,清零Al

        _boot_loop:

        //循環(huán)搬運(yùn)

        ldb*B4++,B5

        //DSP讀取Flash中的數(shù)據(jù)到寄存器B5

        mvkl BOOT_SIZE,B6

        //B6為需要拷貝的字節(jié)數(shù)

        add l,A1,A1

        //Al=Al++

        || mvkh BOOT_SIZE,B6

        cmplt Al,B6,BO

        ∥若AI

        NOP

        stb B5,*A4++

        ∥將從Flash讀出數(shù)據(jù)搬運(yùn)到數(shù)據(jù)空間中

        [BO]B _boot_loop

        //判斷BO值,為1跳轉(zhuǎn)到boot_loop處執(zhí)行

        NOP 5

        mvkl .s2_c_int00,BO //循環(huán)結(jié)束后,跳轉(zhuǎn)到主函數(shù)開始執(zhí)行

        mvkh .s2 _c int00, BO //把cint00裝載到BO寄存器

        B

        .s2 BO

        ∥跳轉(zhuǎn)到主函數(shù)

        NOP 5

        4.3 向量表設(shè)計(jì)

        中斷向量表vectors保存在DSP內(nèi)部RAM的O地址開始的Ox200字節(jié)空間,上電或復(fù)位后,DSP自動(dòng)運(yùn)行復(fù)位中斷。因此,復(fù)位中斷響應(yīng)設(shè)置為二次引導(dǎo)程序的入口地址(boot)。中斷向量表的復(fù)位程序如下:

        ref_ boot //調(diào)用boot引導(dǎo)程序

        sect”vectors”//定義一個(gè)段

        RESET RST://復(fù)位中斷向量

        mvkl.S2__ boot,BO

        mvkh.S2_ boot,BO//裝載引導(dǎo)程序地址

        B.S2 BO∥跳轉(zhuǎn)到引導(dǎo)程序執(zhí)行

        4.4 在線燒寫程序設(shè)計(jì)

        考慮到后續(xù)程序升級(jí)的需求,利用IAP實(shí)現(xiàn)在線升級(jí)功能。在應(yīng)用程序中,有一部分代碼專門用來判斷是否需要進(jìn)行軟件更新,若需要更新則進(jìn)入程序燒寫流程,若不需要?jiǎng)t繼續(xù)執(zhí)行程序。燒寫函數(shù)同首次燒寫程序類似,燒寫時(shí)需要將OUT文件轉(zhuǎn)化為HEX十六進(jìn)制文件,有專門的工具,這里不再敖述。

        5 結(jié)論

        本文利用IAP在應(yīng)用編程設(shè)計(jì),解決了C6000系列DSP的首次程序燒寫與后續(xù)程序更新升級(jí)的問題,其不用借助外部工具,方案可靠便捷,通用性好,本系統(tǒng)通過多次測(cè)試,性能穩(wěn)定,具有良好的推廣價(jià)值。本文詳細(xì)介紹了首次燒寫方法及二次引導(dǎo)設(shè)計(jì),給出關(guān)鍵技術(shù)的代碼實(shí)現(xiàn),脫機(jī)運(yùn)行系統(tǒng)都可以參考。

        參考文獻(xiàn)

        [1]崔旭濤,楊日杰,何又.TMS320C6701 DSP的程序引導(dǎo)方法及編程實(shí)現(xiàn)[J].電子工程師,2006,32 (09):36-39.

        [2]鄭歡歡,穆占杰.基于C6000系列DSP片外Flash自啟動(dòng)方法[J].信息化研究,2011,37 (05): 34-37.

        [3]李方慧,王飛,何佩琨等.TMS320C6000系列DSP原理與應(yīng)用[M].北京:電子工業(yè)出版社,2003.

        [4]劉偉,魏芹芹,王偉.TMS320C672x系列DSP原理與應(yīng)用[M],北京:北京航空航天大學(xué)出版社,2008.

        日本国产一区二区在线| 色吧综合网| 久久久久久久久久免免费精品| 国产精品久久国产精麻豆| 亚洲成av人片女在线观看| 日韩成人无码| 国产美女在线精品亚洲二区| 精品亚洲乱码一区二区三区| 久久久国产精品123| 免费观看的av毛片的网站| 亚洲视频99| 日本一级二级三级在线| 偷拍综合在线视频二区| 性生交大片免费看淑女出招| 在线视频中文字幕乱人伦| 国产熟女露脸大叫高潮| 国产a级毛片久久久精品毛片| 国产高清乱理伦片| 成人午夜免费福利| 成人高清在线播放视频| 国产三级av在线播放| 国产一区视频在线免费观看| 亚洲av精品一区二区三| 国产青青草在线观看视频| 国产伦久视频免费观看视频| 2021国产精品久久| 91国产精品自拍视频| 日韩av高清在线观看| 国产午夜激无码av毛片| 人妻少妇久久精品一区二区| 成人性生交大片免费入口| 亚洲成人色区| 国产视频最新| 国产丝袜美腿中文字幕| 亚洲精品夜夜夜妓女网| 中国大陆一级毛片| 亚洲精品中文字幕乱码三区99 | 亚洲熟妇无码av在线播放| 国产一区二区不卡老阿姨| 视频网站在线观看不卡| 日本一级特黄aa大片|