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

基于TMS320F28335的DSP/BIOS系統從FLASH到RAM運行

2015-04-12 00:00:00陳惠綱黎驅
現代電子技術 2015年2期

摘 "要: DSP/BIOS是TMS320F28xxx系列DSP上的一個實時操作系統內核。由于TMS320F28335內部FLASH性能的限制,當DSP/BIOS系統直接在芯片內FLASH上運行時,程序運行的速度往往比在RAM上運行時慢得多,嚴重影響了DSP/BIOS的實時性。為了解決這個問題,通過分析TMS320F28335的啟動過程和程序從FLASH搬移到RAM上運行的一般流程,以及DSP/BIOS與非DSP/BIOS工程的Memory Sections特點,提出一種通過在c_int00之前增加Copy_Sections等一系列操作對DSP/BIOS系統及用戶程序進行搬移的方法。由此實現在芯片啟動后自動把DSP/BIOS系統從片內FLASH搬移到RAM上運行的功能,從而提高DSP/BIOS系統的運行效率和實時性。該方法已經通過實驗驗證并在實際的工程項目中應用,獲得良好的效果,因此值得推廣。

關鍵詞:TMS320F28335; DSP/BIOS; FLASH; RAM; 程序搬移

中圖分類號: TN919?34; TP311.1 " " " " " " " " 文獻標識碼: A " " " " " " " " " "文章編號: 1004?373X(2015)02?0065?04

TMS320F28335?based DSP/BIOS system running from FLASH to RAM

CHEN Hui?gang, LI Qu

(Guangdong Co., Ltd., HM Power, Foshan 528300, China)

Abstract: DSP/BIOS is a Real?time operating system kernel on DSP of TMS320F28xxx series. When DSP/BIOS system runs directly in the on?chip FLASH, the DSP/BIOS system would be much slower than it runs in RAM because of the performance limitation of FLASH in TMS320F28335, which affects the DSP/BIOS’s real?time performance seriously. To solve the problem, By analyzing the start?up procedure of TMS320F28335 and the procedure of moving a program from FLASH to RAM, and the Memory Sections features of DSP/BIOS and none DSP/BIOS, a method to add a function named Copy_Sections before c_int00 to copy DSP/BIOS system and user program from FLASH to RAM is proposed in this paper. By doing this, the Function that DSP/BIOS system is automatically copied from on?chip FLASH to RAM after reset or power on the DSP is realized, which improves the efficiency of DSP/BIOS system and its real?time performance. This method was validated by experiment and used in practical project.

Keywords: TMS320F28335; DSP/BIOS; FLASH; RAM; program copy

0 "引 "言

TMS320F28335基于C28x+FPU 的控制器和 TI 現有的 C28xDSC具有相同的 32 位定點架構,還包括一個單精度(32 位)的 IEEE 754 浮點單元(FPU)[1]。其內部包含512 KB的FLASH和68 KB的RAM,并支持20 b地址、32 b數據的外部擴展。當代碼運行在片上RAM時,其MIPS與跟芯片運行的頻率是一致的,即芯片運行在150 MHz時,其性能為150 MIPS。然而,由于芯片內部FLASH的讀取等待時間比RAM長,當代碼在芯片內部FLASH運行時,其運行性能[2]在150 MHz下最多只有95 MIPS。

DSP/BIOS是TI公司為其C28x、55x、C6000系列所設計開發的一個用戶可裁剪的實時多任務的操作系統內核[3]。其以模塊化方式提供給用戶對線程、中斷、定時器、內存資源、所有外設資源的管理能力都可以根據需要剪裁。實際應用中需要的定制算法作為一個線程插入DSP/BIOS的調度隊列,由DSP/BIOS進行調度。作為TI公司的操作系統,DSP/BIOS與開發環境緊密結合,能夠給開發者提供多種豐富的可視化調試手段,為工程的開發提供極大的便利,這是其他實時系統所不能比擬的。

當DSP/BIOS運行在芯片內部FLASH時,由于FLASH讀取時間比RAM的讀取時間長,導致DSP/BIOS系統往往達不到在RAM運行時的效果,嚴重影響其實時效果。為了發揮芯片的最大性能,提高DSP/BIOS系統的實時性及運行效率,有必要將DSP/BIOS從FLASH搬移到RAM上運行。本文通過分析TMSF320F28335的啟動流程以及DSP/BIOS中Memory Sections特點,實現了芯片復位、上電后自動把DSP/BIOS系統及相關程序從芯片內部FLASH搬移到RAM上,并在RAM中運行的方法。

1 "TMF320F28335的啟動流程

在TMS320F28335芯片上電/復位后,程序首先到復位向量的地址0x3FFFC0進入初始化引導函數InitBoot[4]。在InitBoot中,首先程序對芯片進行初始化,然后讀取與芯片引導方式相關引腳的狀態,調用SelectBootmode確認引導模式,調用ADC_CAL來校正芯片的采樣數據。在退出InitBoot(即執行ExitBoot)后,芯片根據之前確認的引導路徑跳轉到相應的程序入口。對于一般的產品來說,程序上電復位后都是從內部FLASH啟動的,因此,程序在退出InitBoot后會跳轉到FLASH的0x33FFF6執行代碼。相應啟動流程如圖1所示。

lt;E:\王芳\現代電子技術201502\Image\23t1.tifgt;

圖1 啟動流程圖

以上是芯片在上電/復位以后的流程,由芯片自動完成,接下來到了FLASH的0x33FFF6處就是用戶自己實現的代碼,該入口的名字是code_start。對DSP/BIOS系統,如果用戶的程序代碼是直接運行在FLASH中,那么程序執行的流程如圖2所示。其中,wd_disable表示屏蔽硬件看門狗,c_ini00為初始化C運行環境,BIOS_init為DSP/BIOS的初始化函數,BIOS_start為DSP/BIOS的啟動函數,而main則是用戶程序的入口。圖2中的各個流程的程序均運行在芯片內FLASH中。

lt;E:\王芳\現代電子技術201502\Image\23t2.tifgt;

圖2 程序執行流程圖

由圖2可以看出,如果DSP/BIOS系統和用戶的程序代碼要實現從內部FLASH搬運到RAM中運行,則需要從圖2的流程中增加一個過程實現對部分核心Memory Sections及相關代碼的搬移,該過程命名為copy_sections。該過程應該在wd_disable與c_int00之間,因此實現從FLASH到RAM程序搬移的流程如圖3所示。其中,在copy_sections及之前的過程均運行在片上FLASH,copy_sections后面的程序根據copy_sections的具體進行的操作有可能運行在FLASH或者RAM上。同時,也需要在用戶代碼的開始階段,對其他Memory Sections及用戶定義的存儲段進行搬移。 對于我們具體的工程,由于把整個DSP/BIOS系統和用戶程序都搬移到RAM上,因此在copy_sections之后的過程都是直接在RAM上運行的。

lt;E:\王芳\現代電子技術201502\Image\23t3.tifgt;

圖3 程序搬移流程圖

2 "DSP/BIOS的Memory Sections特點

在一般的非DSP/BIOS工程中,其Memory Sections一般如表1所示。對于一般的DSP/BIOS工程,其Memory Sections如表2所示[5]。

表1 非DSP/BIOS中Memory Section表

表2 DSP/BIOS中Memory Section表

表1,表2中顯示為RAM的Memory Sections表示該段位于RAM上,該段的數據為變量。而顯示為FLASH的Memory Sections則表示該段位于FLASH上,該段的數據為代碼或常量。

由上述表格可以得出,不管是DSP/BIOS工程還是非DSP/BIOS工程,在程序搬移的時候,為了提高運行的效率,表格2中凡是顯示FLASH的段都要搬移到RAM中運行。這里有幾個地方要注意,首先,Stack Section(.Stack)要求只能搬移到內存低于64 KB的地方運行。而對DSP/BIOS工程來說,一個值得注意的地方是.hwi_vec(Interrupt Service Table Memory)段只能搬移到PIEVECT RAM。PIEVECT RAM是與PIE有關的特殊部分[6],其位于數據空間,地址從0x000D00開始,大小為256×16。另外一個值得注意的地方,根據TI的文檔[2],DSP/BIOS系統中各個Memroy Sections并不是全部在copy_sections中實現搬移的,而是分別在DSP/BIOS系統選項以及用戶代碼中進行搬移。這是與一般非DSP/BIOS工程最大的不同。

3 "DSP/BIOS系統搬移實現

結合以上對TMS320F28335芯片復位、上電后的啟動流程以及DSP/BIOS系統的Memory Sections的分析,我們知道DSP/BIOS工程與非DSP/BIOS工程在程序搬移的原理是一致的,但是實現的流程有所不一樣。對于DSP/BIOS工程,具體的流程如下:

3.1 "增加/修改搬移代碼

(1) 修改CodeStartBranch.asm。把原來LB _c_int00改為LB copy_sections。

(2) 增加SectionCopy_BIOS.asm[7]。為了提高DSP/BIOS的運行效率,把DSP/BIOS與FLASH有關的除了.hwi_vec以及.Trcdata外的全部Memory Sections搬移到RAM中,這些操作在copy_section里面實現。

(3) 在ccs[8]工程的DSP/BIOS系統選項中,增加_UserInit函數,并在UserInit函數內搬移.Trcdata段到RAM中。

(4) 在main函數里,增加.hwi_vec段搬移的代碼。

(5) 在main函數里,把其他相關的段,如用戶數據等搬移到RAM中。

(6) 在main函數里,把.secureRAMFuncs段搬移到RAM中,然后執行InitFLASH。

(7) 把用戶代碼所在的Memory Sections搬移到RAM中。

3.2 "修改CMD文件

對需要搬移的Memory Sections修改為以下代碼(以.bios段為例):

.bios: LOAD = FLASH, " PAGE = 0 "/* Used by file FLASH.c */ ①

RUN = L47SARAM, "PAGE = 0 "/* Load to flash, run from CSM secure RAM */ ②

LOAD_START(_bios_loadstart) ③

LOAD_SIZE(_bios_loadsize) " " ④

RUN_START(_bios_runstart) " ⑤

上述代碼中,①表示.bios段的代碼位于FLASH;②表示.bios段代碼執行位置在L47SARAM中;③表示.bios段裝載的起始地址;④表示.bios段裝載的長度;⑤.bios段運行的起始地址

3.3 "結果分析

當把DSP/BIOS系統從FLASH搬移到RAM運行后,打開工程的內存分配文件(.map),看到里面有這么一行:

.bios "0 " 00339558 " "00000d91 " " RUN ADDR = 0000d558 "⑥

從⑥中可以看出,.bios位于page 0,代碼裝載的起始位置是0x00339558, 代碼長度是 0x00000d91,而代碼運行的起始位置是0x0000d558。根據TMS320F28335的內存分配可知,.bios段代碼的原始位置在FLASH中,而運行的位置在RAM,這個說明了DSP/BIOS已經實現了從FLASH搬移到RAM運行。查看其他相關的Memory Sections也能發現類似的情況,因此可以認為,DSP/BIOS系統的搬移操作是成功的。為了量化程序搬移對程序運行的影響,在本工程的采樣任務中,利用分頻在TMS320F28335的一個GPIO管腳上輸出一個固定頻率的方波,通過示波器觀察如圖4、圖5所示。

lt;E:\王芳\現代電子技術201502\Image\23t4.tifgt;

圖4 方波顯示圖(一)

圖4中是表示工程通過JTAG調試在RAM中運行時芯片管腳輸出的頻率,其輸出頻率是110.33 Hz。圖5表示工程在FLASH中運行時芯片管腳輸出的頻率,其輸出頻率為55.148 Hz。

lt;E:\王芳\現代電子技術201502\Image\23t5.tifgt;

圖5 方波顯示圖(二)

圖6為工程經過搬移在RAM中運行時芯片管腳輸出的頻率,為110.34 Hz。通過對比以上3種情況可以發現,如果程序單純的在FLASH中運行,其對程序的影響比較大,從性能上來說只有在RAM中運行時的一半。而程序通過搬移到RAM運行后,能夠得到跟調試狀態下一致的運行性能。由此可以看出,在TMS320F28335芯片上使用DSP/BIOS實時系統時對其從FLASH搬移到RAM運行的必要性及其重要意義。

lt;E:\王芳\現代電子技術201502\Image\23t6.tifgt;

圖6 方波顯示圖(三)

4 "結 "論

本文給出TMS320F28335上運行的DSP/BIOS系統從片內FLASH搬移到RAM運行的方法,并實際的項目開發中得到驗證和應用,具有非常實用的意義。在項目開發的過程中也發現,由于片內RAM的空間有限,當項目工程的程序較大時,有可能導致DSP/BIOS系統不能全部搬移到片內RAM中運行,此時可有兩種解決方案,或者把工程和DSP/BIOS中對時間要求比較高的部分和部分對時間要求比較高的代碼搬移到片內RAM,其余的代碼還是在FLASH上運行;或者外擴片外RAM,把DSP/BIOS核心部分放到片內RAM,把對時間要求相對較低的代碼放到片外RAM,通過這種區分優先順序的方式來提高整個DSP/BIOS系統程序的運行效率。

參考文獻

[1] "Texas Instruments. TMS320F28335, TMS320F28334, TMS320

F28332, TMS320F28235, TMS320F28234, TMS320F28232 digital signal controllers (DSCs) [EB]. USA: Texas Instruments, 2012.

[2] Texas Instruments. Running an application from internal flash memory on the TMS320F28xxx DSP [EB]. USA: Texas Instruments, 2013.

[3] Texas Instruments. TMS320 DSP/BIOS v5.41 user’s guide [EB]. USA: Texas Instruments, 2009.

[4] Texas Instruments. TMS320x2833x, 2823x Boot ROM [EB]. USA: Texas Instruments, 2008.

[5] Texas Instruments. Running an application from internal flash memory on the TMS320F28xxx DSP [EB]. USA: Texas Instruments, 2013.

[6] Texas Instruments. TMS320x2833x, 2823x system control and interrupts [EB]. USA: Texas Instruments, 2010.

[7] Texas Instruments. SPRA958K [EB]. USA: Texas Instruments, 2012.

[8] Texas Instruments. TMS320C28x optimizing C/C++ Compiler v6.0 user's guide [EB]. USA: Texas Instruments, 2011.

主站蜘蛛池模板: 色综合天天操| 好紧太爽了视频免费无码| jizz亚洲高清在线观看| 国产精品白浆无码流出在线看| 欧美成人精品高清在线下载| 国产精品播放| 91视频首页| 国产高清在线丝袜精品一区| 一级在线毛片| 在线免费看黄的网站| 久久永久精品免费视频| 美女无遮挡免费网站| 中字无码精油按摩中出视频| 奇米精品一区二区三区在线观看| 国产99视频精品免费视频7| 亚洲第一色网站| 乱色熟女综合一区二区| 国产精品欧美日本韩免费一区二区三区不卡 | 欧美日韩国产精品综合| 亚洲国产精品美女| 亚洲Aⅴ无码专区在线观看q| 中文字幕 欧美日韩| 日韩黄色大片免费看| 亚洲av无码成人专区| 91在线高清视频| 99re在线视频观看| 野花国产精品入口| 国产高清在线丝袜精品一区| 欧美日韩福利| 国产麻豆精品久久一二三| 日本五区在线不卡精品| 九色91在线视频| 99ri国产在线| 欧美精品另类| 一级毛片网| 中文精品久久久久国产网址 | 国产91九色在线播放| 国产成人综合亚洲欧美在| 亚洲国产日韩在线观看| 亚洲成a人片7777| 欧美精品啪啪一区二区三区| 日本精品中文字幕在线不卡| 久久精品国产电影| 国产精品久久久久久搜索 | 久久综合九色综合97网| 国产精品99一区不卡| 久久精品这里只有精99品| 亚洲福利视频一区二区| 国产亚洲高清视频| 超清人妻系列无码专区| 3D动漫精品啪啪一区二区下载| 99精品在线视频观看| 免费国产在线精品一区| 精品人妻无码区在线视频| 色一情一乱一伦一区二区三区小说| 日韩性网站| 久草热视频在线| 国产一级毛片高清完整视频版| 一级做a爰片久久毛片毛片| 国产香蕉在线| 免费女人18毛片a级毛片视频| 国产区人妖精品人妖精品视频| 国产乱子精品一区二区在线观看| 亚洲精品国产首次亮相| 日韩在线网址| 国产激情在线视频| 国产凹凸一区在线观看视频| 亚洲欧美日韩色图| 亚洲视频在线青青| 久久无码免费束人妻| 欧美成人精品一级在线观看| 99色亚洲国产精品11p| 国产精品一区二区在线播放| 亚欧乱色视频网站大全| 久久精品丝袜| 性69交片免费看| 成人午夜久久| 亚洲一区二区约美女探花| h网站在线播放| 99热这里只有精品在线观看| 国产在线自乱拍播放| 人妻无码中文字幕一区二区三区|