999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C6000系列DSP片外Flash的IAP設計

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

李光學 李超 郭燕紅 岳宗帥 宋茜

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

【關鍵詞】C6000 DSP 片外 Flash IAP

1 概述

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

2 DSP配置分析

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

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

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

(3)主機引導(HPI Boot)。CPU在復位期間,其硬件保持正常工作狀態,外部主機通過HPI接口初始化CPU的存儲空間。

復位結束后,無論采用哪種引導方式,DSP芯片都將從地址O處開始執行程序。因該系列DSP不自帶Flash,本系統以C6701為例,設計一個脫機運行系統,外部配置16位Flash,加載方式為16bit ROM加載,即自舉模式2,存儲器映射為MAP1,地址O處為內部存儲器,BOOTMODE引腳需配置為Oll01。

3 首次燒寫設計

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

其燒寫函數實現如下所示:

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

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

其中函數的定義是:

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

圖2所示為首次燒寫過程中,代碼在片上RAM和片外ROM(Flash)中的變化,首先專用燒寫程序通過自舉模式1啟動,然后手動載入待燒寫的用戶應用程序,接著運行專用燒寫程序將用戶應用程序燒入片外ROM中,斷電后片上RAM數據消失,只有片外ROM的用戶應用程序。

4 應用程序設計

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

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

下面將分別從CMD連接命令文件配置,二次引導程序設計,向量表設計,在線燒寫設計詳細介紹IAP的實現。因C6000系列DSP的原理都一致,實例代碼是以C6701硬件平臺給出。

4.1 CMD連接命令文件配置

CMD文件的作用是實現程序代碼和數據在DSP存儲空間的定位,在編譯連接時由CCS開發環境調用。脫機啟動時,自引導就是將片外ROM的向量表和二次引導程序搬到地址0處執行,所以需在CMD文件中明確這兩個段的運行空間,CMD文件如下

-heap Ox400

-stack Ox400

MEMORY

{

vecs:

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

boot_ load:

0 = 00000200h 1=00000200h//二次引導程序空間

IPRAM:

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

IDRAM:

o=80000000h 1=OOOlOOOOh,/數據段空間

SEC,TIONS

{

”vectors” >

vecs

//將”vectors”段存儲到vecs空間

”.boot_ load”>

boot_ load//將”boot load”段存儲到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段存儲的為向量表和二次引導程序,地址范圍為O-Ox3ff,啟動時被自動加載到地址0處并執行。

4.2 二次引導程序設計

二次引導程序的作用是將應用程序數據從片外ROM(Flash)搬移到片上RAM存儲器中執行。本實例中將二次引導程序保存在DSP內部RAM的Ox200地址開始的Ox200字節空間,由于復位中斷向量設置為二次引導程序的入口地址,所以當系統上電復位后,系統轉去執行二次引導程序,將應用程序數據段搬移到指定的存儲空間,再跳轉到DSP主程序的程序入口處(c int00)執行DSP應用程序。主要代碼如下:

EMIF GCR

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

EMIF GCR DATA

equ Ox3779//設置GBLCTL參數

EMIF CEl

e quOx01800004∥定義EMIF CEl控制器CEICTL

EMIF_CEl_DATA .equ Oxffffff03 11設置CEICTL

BOOT SLZE

.equ Ox600 //設置搬運長度,單位為字節

sect”boot load”

∥定義”boot load”段

ref_cint00

//引用全局符號c int00

.global _boot

//定義一個全局符號boot,供外部調用

boot:

mvkl EMIF_GCR,A4

||mvkl EMIF_GCR_DATA, B4

mvkh EMIF_GCR,A4

||mvkh EMIF_GCR_DATA, B4

stw B4, *A4

//設置GBLCTL參數

mvkl EMIF CE1.A4

ll mvkl EMIF_CEl_DATA,B4

mvkh EMIF CE1.A4

|| mvkh EMIF_CEl_DATA,B4

stw B4, *A4

+設置CEICTL參數

mvkl Ox80000000,A4

|| mvkl Ox01410000,B4

mvkh Ox80000000,A4

ll mvkh Ox01410000,B4

//A4為數據段地址指針,B4為Flash地址指針

zero Al

//Al作為計數器,清零Al

_boot_loop:

//循環搬運

ldb*B4++,B5

//DSP讀取Flash中的數據到寄存器B5

mvkl BOOT_SIZE,B6

//B6為需要拷貝的字節數

add l,A1,A1

//Al=Al++

|| mvkh BOOT_SIZE,B6

cmplt Al,B6,BO

∥若AI

NOP

stb B5,*A4++

∥將從Flash讀出數據搬運到數據空間中

[BO]B _boot_loop

//判斷BO值,為1跳轉到boot_loop處執行

NOP 5

mvkl .s2_c_int00,BO //循環結束后,跳轉到主函數開始執行

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

B

.s2 BO

∥跳轉到主函數

NOP 5

4.3 向量表設計

中斷向量表vectors保存在DSP內部RAM的O地址開始的Ox200字節空間,上電或復位后,DSP自動運行復位中斷。因此,復位中斷響應設置為二次引導程序的入口地址(boot)。中斷向量表的復位程序如下:

ref_ boot //調用boot引導程序

sect”vectors”//定義一個段

RESET RST://復位中斷向量

mvkl.S2__ boot,BO

mvkh.S2_ boot,BO//裝載引導程序地址

B.S2 BO∥跳轉到引導程序執行

4.4 在線燒寫程序設計

考慮到后續程序升級的需求,利用IAP實現在線升級功能。在應用程序中,有一部分代碼專門用來判斷是否需要進行軟件更新,若需要更新則進入程序燒寫流程,若不需要則繼續執行程序。燒寫函數同首次燒寫程序類似,燒寫時需要將OUT文件轉化為HEX十六進制文件,有專門的工具,這里不再敖述。

5 結論

本文利用IAP在應用編程設計,解決了C6000系列DSP的首次程序燒寫與后續程序更新升級的問題,其不用借助外部工具,方案可靠便捷,通用性好,本系統通過多次測試,性能穩定,具有良好的推廣價值。本文詳細介紹了首次燒寫方法及二次引導設計,給出關鍵技術的代碼實現,脫機運行系統都可以參考。

參考文獻

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

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

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

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

主站蜘蛛池模板: 91视频国产高清| 国产精品亚洲综合久久小说| 欧美日在线观看| 国产成人综合在线观看| 国产精品成人AⅤ在线一二三四| 无遮挡国产高潮视频免费观看| 中文无码精品A∨在线观看不卡| 婷婷六月天激情| 久久综合丝袜日本网| 精品久久久久久久久久久| 亚洲视频免费播放| 黄色三级毛片网站| 天天躁夜夜躁狠狠躁躁88| 谁有在线观看日韩亚洲最新视频| 免费jizz在线播放| 久久毛片免费基地| 成人久久精品一区二区三区| 囯产av无码片毛片一级| 久久精品中文无码资源站| 欧美日韩专区| 91在线激情在线观看| 国产亚洲欧美在线中文bt天堂 | 国产精品毛片一区| 一本大道无码高清| 黄色污网站在线观看| 好紧好深好大乳无码中文字幕| 欧美日韩国产精品va| 亚洲国产黄色| 成人韩免费网站| 国产免费久久精品44| 日本伊人色综合网| 久久黄色一级视频| 亚洲日本在线免费观看| 日本久久网站| 波多野结衣在线一区二区| 国产视频 第一页| 色欲色欲久久综合网| www.91在线播放| 亚洲人成在线免费观看| 91丨九色丨首页在线播放| 亚洲91精品视频| 亚洲天堂在线视频| 久久久久无码精品| 亚洲无码精品在线播放| 亚洲区第一页| 一级毛片视频免费| 色视频久久| 色综合狠狠操| 欧美精品在线免费| 国产激情第一页| 国产精品无码在线看| 欧美五月婷婷| 婷婷激情五月网| 国模极品一区二区三区| 99久久国产综合精品2020| 国产啪在线| 欧美伊人色综合久久天天| 美女无遮挡被啪啪到高潮免费| 精品国产三级在线观看| 日本福利视频网站| 日本人又色又爽的视频| 亚洲免费黄色网| 日日碰狠狠添天天爽| 毛片免费在线视频| 久久精品欧美一区二区| 美女啪啪无遮挡| 亚洲精品无码专区在线观看| 亚洲香蕉伊综合在人在线| 欧美69视频在线| 亚洲国产综合精品一区| 欧美精品亚洲精品日韩专区va| 老司国产精品视频| 大陆精大陆国产国语精品1024| 亚洲欧洲天堂色AV| 专干老肥熟女视频网站| 91黄视频在线观看| 国产特级毛片| WWW丫丫国产成人精品| 亚洲国产精品一区二区高清无码久久| 国产精品冒白浆免费视频| 一级全免费视频播放| 97免费在线观看视频|