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

基于TMS320C6455+DDR2的Flash加載及燒寫程序研究

2019-03-08 10:21:48陳俊凱劉笑凱馮國兵徐一鳳劉書萌
網絡安全與數據管理 2019年2期
關鍵詞:程序方法

陳俊凱,劉笑凱,周 林,馮國兵,徐一鳳,劉書萌,王 龍

(中國電子信息產業集團有限公司第六研究所,北京 100083)

0 引言

TMS320C6455是一款非常優秀的DSP處理芯片,由于內部沒有Flash存儲空間,離線運行時需要外部加載程序,因此在設計通用信號處理模塊前,有必要研究DSP的加載方式。許多文獻介紹了將執行程序加載到DSP內部L2RAM的設計方法,但是TMS320C6455的內部存儲空間較小,只有32 KB的L1P程序空間、32 KB的L1D數據空間及2 MB的L2RAM。沒有內部Flash[1],當代碼量超過2 MB時,或者需要在L2RAM留出較大的數據空間時,將代碼加載到內部L2RAM變得不可行,由于TMS320C6455設計有DDR2接口,可以擴展最大512 MB的外部存儲空間。本文設計將代碼加載到空間很大的外部DDR2芯片,緩解內部存儲空間不足的矛盾。如圖1所示,TMS320C6455通過EMIFA接口連接Flash芯片,通過DDR2接口外擴DDR2芯片,通過軟件設計,使用戶程序存儲于Flash芯片,執行于DDR2芯片。

圖1 TMS320C6455外部擴展DDR2和Flash芯片框圖

1 在線仿真

開發人員在進行程序代碼的仿真調試過程中,由于TMS320C6455的內部存儲空間有限,可以盡可能地把代碼和數據存儲在外部存儲空間DDR2上。使用DDR2存儲空間的條件是,在CMD文件中將生成帶代碼及數據段映射到DDR2的存儲空間上,還需要在調試代碼之前,初始化TMS320C6455的DDR2配置寄存器。此時,可以借助GEL文件,通過仿真器初始化DDR2配置寄存器,然后在接口函數OnTargetConnect()中調用DDR2初始化函數,利用外部存儲空間DDR2在線仿真調試代碼。GEL文件中的初始化DDR2控制器代碼如下:

init_ddr2()

{

*(int *)PERCFG1 = 0x00000003;

DDR_SDCFG = 0x00D38832;

DDR_SDRFC = 0x0000079E;

DDR_SDTIM1 = 0x3EDB4B91;

DDR_SDRIM2 = 0x00A2C722;

DDR_DDRPHYC = 0x00000006;

DDR_SDCFG = 0x00538832;

}

2 外部Flash加載過程

TMS6455引導模式包括外部Flash啟動、主機接口啟動、SRIO啟動、IIC啟動等多種啟動方式[2-3],而在實際應用中,啟動模式絕大多數為外部Flash啟動方式。DSP在該方式下從外部EMIFA接口CS3模式下加載1 KB代碼,然而1 KB大小的代碼量無法滿足系統需要。要達到DSP的高速運算,又不能將大量代碼放在外部Flash中運行。因此,當用戶代碼長度大于1 KB時,需要使用二次加載[4]。即專門編寫一段長度為1 KB的二次加載程序,在初始化時被加載到DSP。而這段程序的功能是從外部Flash的某個地址處將1 KB 以外的全部用戶程序和數據拷貝到其運行地址處,如圖2所示。

圖2 DSP使用二次加載程序的加載過程

在DSP芯片復位期間,程序指針自動指向片內ROM中的Boot Loader的小程序,這個程序會根據相應的BOOTMODE管腳狀態選擇相應的程序加載方法,按照默認的時序將外部Flash中的程序搬移到DSP內部的RAM程序區中,通常被傳輸的是二次加載程序,傳輸完成后,運行二次加載程序,初始化關鍵的寄存器,然后將系統程序剩余代碼和數據拷貝到指定的位置中[5-6]。本文介紹如何將系統程序和數據拷貝到DDR2中運行的設置方法,在二次加載程序的最后跳轉到_c_int00處,初始化C運行時的環境,一旦運行到環境初始化完成,就開始運行用戶代碼。

3 存儲區域分配

TI的集成開發工具CCS編譯鏈接后生成的.out文件是通用對象文件格式(Common Object File Format,COFF)的,不能直接燒錄到外部Flash,因為Flash中保存的應該是原始的DSP機器碼,即燒錄的應該是DSP程序的二進制文件[3]。有幾種方法可以實現文件格式的轉換,一種是直接提取COFF文件中的原始數據部分。這種方法比較復雜,但是有助于理解.cmd文件的編寫原理以及鏈接器的工作過程。還有一種方法是借助CCS自帶的工具,在編譯選項Build的Step選項卡的post-Build step Command文本框中,填寫如下命令:

“MYM{CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat”

“MYM{BuildArtifactFileName}”

“MYM{BuildArtifactFileBaseName}.bin”

“MYM{CG_TOOL_ROOT}/bin/ofd6x.exe”

“MYM{CG_TOOL_ROOT}/bin/hex6x.exe”

“MYM{CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe”

在Debug目錄下生成的.bin文件可以直接燒錄到外部Flash中。

以上方法都需要進行格式轉換,還有一種較為簡單的方法,直接利用CCS開發工具將用戶程序(包含二次加載程序)編譯鏈接后生成的.out文件通過仿真器下載到與DSP連接的DDR2中,但是不運行程序。用戶程序在DSP外部DDR2中就是以二進制的格式存儲的機器碼,可以直接通過在線編程的方法燒寫到片外的Flash中。開發人員運行在線燒寫Flash的程序(這個程序完成的功能是將代碼寫入到Flash),這里存在的風險就是燒寫程序的存儲區域與前面用戶程序的存儲區域相沖突,要注意在兩個工程的cmd文件中存儲區域不要重疊,如圖3所示。

圖3 程序在DSP+DDR2的存儲分配方式

在用戶工程的CMD文件中,也就是第一個工程中,將二次加載程序及用戶程序配置在DSP外部DDR2空間中(0xE0000000~0xF0000000);在燒寫Flash工程的CMD文件中,將代碼配置在DSP內部L2RAM的空間,保證燒寫Flash程序的.out文件下載下去之后不會與前面下載的目標工程的.out文件存儲區域相沖突。然后運行燒寫Flash程序,將前面下載的用戶程序寫入外部Flash芯片中。

4 二次加載程序

二次加載程序實現的功能為:(1)初始化關鍵寄存器,如DDR2寄存器;(2)將用戶程序的剩余代碼和數據拷貝到指定位置;(3)搬移完代碼之后,跳轉到_c_int00處,開始執行用戶代碼。本文將代碼段和數據段存放在DDR2空間。因此在編寫二次加載程序時,搬移代碼之前,需要初始化DDR2寄存器,才可以正常將代碼搬移到DDR2空間中。同時查看用戶工程map文件中代碼段的大小,設置搬移代碼BOOT_SIZE的值,注意匯編程序每次搬移是16位數據,所以BOOT_SIZE的大小等于真實代碼段大小除以2,由于二次加載程序受限于1 KB字節的大小,因此二次加載程序采用更為簡潔的匯編程序來實現。二次加載程序的代碼大小、代碼搬移地址、代碼DDR2寄存器、EMIFA寄存器參數的設置如下:

BOOT_SIZE .equ 0x000FF000

FLASH_START .equ 0xB0000000

BOOT_START .equ 0xE0000000 ;DDR2

;EMIF config

EMIF_CF3CFG_R .equ 0x70000084

EMIF_AWCC_R .equ 0x700000A0

EMIF_CF3CFG_V .equ 0x012C8024

EMIF_AWCC_V .equ 0x40000380

;DDR config

PERCFG1_R .equ 0x02AC002C

DDR_MIDR_R .equ 0x78000000

DDR_SDCFG_R .equ 0x78000008

DDR_SDRFC_R .equ 0x7800000C

DDR_SDTIM1_R .equ 0x78000010

DDR_SDTIM2_R .equ 0x78000014

DDR_DDRPHYC_R .equ 0x780000E4

PERCFG1_V .equ 0x00000003

DDR_SDCFG_V1 .equ 0x00D38832

DDR_SDRFC_V .equ 0x000007A2

DDR_SDTIM1_V .equ 0x3EDB4B91

DDR_SDTIM2_V .equ 0x00A2C722

DDR_DDRPHYC_V .equ 0x00000006

DDR_SDCFG_V2 .equ 0x00538832

將上述參數以下面的匯編語句寫入相應得寄存器地址,完成寄存器參數的配置:

MVKL EMIF_CF3CFG_R,A4

MVKH EMIF_CF3CFG_R,A4

MVKL EMIF_CF3CFG_V,B4

MVKH EMIF_CF3CFG_V,B4

STW B4,*A4

將DDR2的起始地址BOOT_START加載到A4寄存器,將Flash的起始地址FLASH_START加載到B4寄存器,代碼搬移長度BOOT_SIZE加載到A0寄存器,然后下面的語句完成代碼從Flash到DDR2的搬移過程。

_wait_loop:LDH *B4++[1],B5

SUB A0,1,A0

NOP 4

STH B5,*A4++[1]

[A0] B _wait_loop

NOP 5

搬移完成之后,跳轉到_c_int00位置,啟動程序。

MVKL.S2 _c_int00,B0

MVKH.S2 _c_int00,B0

B.S2 B0

NOP 5

5 燒寫程序設計

用戶程序和二次加載程序都編寫完畢后,想要完成加載功能,還需要的就是燒寫程序的編寫了。寫入Flash芯片之前需要先擦除掉原來的內容,再寫入用戶代碼。擦除和寫入操作驅動程序根據不同的Flash芯片有所不同。本文只給出燒寫部分內容,CODE_SIZE為實際要燒寫的用戶程序大小:

#define CODE_SIZE 0x127fd1

#define DDR_ADDR 0xE0000000

#define FLASH_ADDR 0xB0000000

//擦除Flash

flash_Erase();

//燒寫用戶程序

Count= 0;

for(i = 0;i < CODE_SIZE;i++)

{

if(0!=flash_writes(FLASH_ADDR +i,*(unsigned char *)(DDR_ADDR +i)))

Count++;

}

6 結束語

本文詳細介紹了TMS320C6455+DDR2的在線仿真及ROM加載模式,并給出了二次加載程序的匯編代碼以及Flash燒寫代碼。通過上文的方法,可以實現將執行代碼加載到DSP的外部存儲空間DDR2上,用戶代碼受限于DSP內部存儲空間的大小,有利于運行復雜度比較高得數據運算,其TMS320C6455+DDR2的硬件平臺可以支撐起有大量運算需求的產品應用,在信息安全領域的密碼方面[7-8],可以為對稱密碼算法(如AES、3DES)、公鑰密碼算法(如RSA算法、橢圓曲線算法)、消息摘要的哈希算法等大運算量的算法提供良好的硬件平臺。

猜你喜歡
程序方法
學習方法
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产va在线观看免费| 中文字幕一区二区人妻电影| 91青青草视频| 亚洲IV视频免费在线光看| 91视频区| www.精品国产| 99一级毛片| 欧美黄色网站在线看| 日韩AV无码一区| 亚洲男人天堂网址| 亚洲精品成人福利在线电影| 无码'专区第一页| 欧美成人综合在线| 中文字幕在线观| 国产免费看久久久| 五月激情综合网| 久久大香香蕉国产免费网站| 日韩无码视频网站| 五月天天天色| 久久青草免费91观看| 欧美国产在线看| 精品伊人久久久大香线蕉欧美 | 欧美日韩国产精品va| 国产视频一区二区在线观看| 热久久国产| 精品无码视频在线观看| 五月天综合网亚洲综合天堂网| 国产精品美女在线| 国产久操视频| 欧美国产成人在线| 亚洲大学生视频在线播放| 亚洲天堂日韩av电影| 欧美中出一区二区| 亚洲午夜片| 精品视频在线观看你懂的一区| 一级片一区| 99久久亚洲精品影院| 色综合热无码热国产| 黄片在线永久| 91久久精品国产| 91香蕉视频下载网站| 77777亚洲午夜久久多人| 伦伦影院精品一区| 亚洲天堂免费在线视频| 亚洲成av人无码综合在线观看| 熟妇丰满人妻av无码区| 综合色亚洲| 亚洲AV色香蕉一区二区| h网站在线播放| 色悠久久久久久久综合网伊人| 国产成人免费| 精品少妇人妻一区二区| 永久毛片在线播| 久久婷婷国产综合尤物精品| 狠狠躁天天躁夜夜躁婷婷| 亚洲男人的天堂在线观看| 91色在线视频| 婷婷色狠狠干| 在线免费观看AV| 久久精品国产一区二区小说| 中国一级特黄视频| 人妻丰满熟妇αv无码| 国产三区二区| 国产无人区一区二区三区 | 成年女人a毛片免费视频| 就去吻亚洲精品国产欧美| 99在线视频网站| 日韩无码视频播放| 91精品国产一区自在线拍| 日韩无码视频播放| 国产美女精品一区二区| 欧美在线网| 久久综合成人| 亚洲综合亚洲国产尤物| 大香伊人久久| 青青草原国产免费av观看| 亚洲欧美一区二区三区图片| 国产成人h在线观看网站站| 久久青青草原亚洲av无码| 久久精品亚洲中文字幕乱码| 亚洲美女高潮久久久久久久| 亚洲欧美在线精品一区二区|