將DSP的flash裡面的函式轉移到ram中的步驟
對於獨立的嵌入式系統,需要把程式存入non-volitale儲存單元中,常用的也就是flash。但是程式在flash中執行相對在ram中行,速度會變慢很多,具體有多慢,拿28335來說吧,假設系統時鐘為150MHz,在ram中執行時頻率還是150Mhz,而放在flash中,頻率會降到90-95Mhz,參照Ti手冊SPRA958L,這對於有些對實時性要求較高的函式功能,是不可接受的。所以在系統上電時,把對實時性要求高的函式轉移到ram中去。
下面以initflash函式為例具體步驟如下:
(1)、將函式定位到section:
#pragma CODE_SECTION(InitFlash, "secureRamFuncs")
當遇到InitFlash(),就到段secureRamFuncs去執行。
當有多個函式需要轉移時,重複使用#pragma CODE_SECTION(“函式名", "secureRamFuncs")即可。
即使有多個#pragma CODE_SECTION,後面的步驟只需要一次。
(2)、section分配到memory(紅色為memory)。
意思是到FLASH去下載InitFlash(),下載到SECURE_RAM,然後要到SECURE_RAM去執行程式,這個過程給出了下載地址和目標地址。注意此時SECURE_RAM中還沒有程式碼。
SECTIONS
{
/*** User Defined Sections ***/
secureRamFuncs: LOAD = FLASH,PAGE = 0
RUN =SECURE_RAM, PAGE = 0
//定義FLASH和SECURE_RAM的首地址secureRamFuncs_loadstart和secureRamFuncs_loadstart以代替絕對地址
LOAD_START(_secureRamFuncs_loadstart),
LOAD_SIZE(_secureRamFuncs_loadsize),
RUN_START(_secureRamFuncs_runstart),
}
(3)、用memcpy()將經過#pragmaCODE_SECTION設定的函式從FLASH弄到SECURE_RAM中去。注意不是將FLASH的東西全部弄到SECURE_RAM中。
#include <string.h>
//實際應用中這一部分宣告可有可無
extern unsigned intsecureRamFuncs_loadstart;
extern unsigned intsecureRamFuncs_loadsize;
extern unsigned intsecureRamFuncs_runstart;
void main(void)
{
/* Copy the secureRamFuncs section */
memcpy(&secureRamFuncs_runstart,&secureRamFuncs_loadstart,(Uint32)&secureRamFuncs_loadsize);
/* Initialize the on-chip flash registers*/
InitFlash();
}
相關文章
- 將你的應用遷移到 Python 3 的三個步驟Python
- 【譯】遷移到Room的7個步驟OOM
- 使用RAM將檔案系統遷移到ASMASM
- Vue element-ui 裡面的table匯出excel表格 步驟VueUIExcel
- withoutEvents函式裡面的事件被觸發函式事件
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- RAM、ROM、FLASH、EMMC的簡單區分
- 瞧瞧這個將CBitmap寫到Bmp檔案裡的函式 (轉)函式
- Oracle中SQL語句解析的步驟(轉)OracleSQL
- RequisitePro中需求管理的12個步驟(轉)UI
- 從cygwin遷移到msys2的原因和步驟
- shell裡邊子函式與主函式的例項(轉)函式
- 在Linux系統安裝flash的步驟方法Linux
- flash8.0的安裝步驟及注意事項
- Angular 裡使用 FormControl 的步驟AngularORM
- Angular 裡使用巢狀 Form 的步驟Angular巢狀ORM
- JavaScript 專案遷移到 TypeScript 步驟以及遇到的問題JavaScriptTypeScript
- 一次SQL Server遷移到Oracle的實施步驟SQLServerOracle
- JavaScript裡的函式JavaScript函式
- 工作分析的步驟 (轉載)
- 將PHP應用無縫轉移到IIS中?PHP
- 痞子衡嵌入式:在MDK開發環境下將關鍵函式重定向到RAM中執行的幾種方法開發環境函式
- flash 元件修改父級介面裡面的元件屬性元件
- 【轉】AIX snap資訊的收集步驟AI
- TOMCAT的安裝步驟 (轉)Tomcat
- (轉)MRP的計算步驟
- mysql5.1遷移到oracle10.2.0.5步驟MySqlOracle
- iframe裡面的頁面呼叫父視窗,左右視窗js函式的方法JS函式
- JavaScript: window.onload = function() {} 裡面的函式不執行JavaScriptFunction函式
- flash外掛怎麼安裝 電腦安裝flash外掛步驟
- binfmt_elf.c中的函式移到binfmt_pe.c中就跑不通?函式
- 類中成員函式宣告後面的const的含義!函式
- FLASHMX中的MD5函式 (轉)函式
- 轉:類似SQL中的split函式SQL函式
- C#中的函式指標 (轉)C#函式指標
- ASP 中 Split 函式的例項 (轉)函式
- oracle asm 儲存 a磁碟組中的資料檔案 遷移到b磁碟組實施步驟OracleASM
- java中如何將byte[]裡面的資料轉換成16進位制字串Java字串