如何將flash中的程式搬到ram中執行

2021-08-02 06:37:42 字數 2162 閱讀 3200

**:

4.f28335如何燒寫**到flash中並執行?

首先使用新增c:\ti\controlsuite\device_support\f2833x\v133\dsp2833x_common\cmd\f28335.cmd。此檔案即為配置**到flash中的ti官方配置檔案。

然後參考c:\ti\controlsuite\device_support\f2833x\v133\dsp2833x_examples_ccsv4\flash_f28335。新增以下**:

memcopy(&ramfuncsloadstart, &ramfuncsloadend, &ramfuncsrunstart);將一些在記憶體中執行的**從flash複製到記憶體中,然後程式才能正常執行。

5.寫好的**再ram中能正常執行但是燒寫到flash中後,函式dsp28x_usdelay()不能正常執行為什麼?

因為在dsp2833x_usdelay.asm中有.sect "ramfuncs",即把該函式定義在段"ramfuncs"中, 而此段需要在記憶體中執行,故需要使用函式

memcopy(&ramfuncsloadstart, &ramfuncsloadend, &ramfuncsrunstart);將ramfuncs段複製到記憶體中然後執行。只算以這樣設計是因為函式dsp28x_usdelay()精準執行對執行速度有要求故必須放在段"ramfuncs"中。參考:

6.cmd中以下**如何解釋?

ramfuncs   : load = flashd, 

run = raml0, 

load_start(_ramfuncsloadstart),

load_end(_ramfuncsloadend),

run_start(_ramfuncsrunstart),

page = 0

第1行表示該段的裝載在paga0的flashd中

第2行表示該段的執行位址在page0的raml0中

load_ start(_ramfuncsloadstart)令編譯器建立了乙個變數ramfuncsloadstart,該變數指向段ramfuncs的裝載位址的首位址(load_ start為編譯偽指令,請見ccs的幫助文件);

load_ start(_ramfuncsloadend)令編譯器建立了乙個變數ramfuncsloadend,該變數指向段ramfuncs的裝載位址的末位址(load_ end為編譯偽指令,請見ccs的幫助文件);

load_ start(_ramfuncsrunstart)令編譯器建立了乙個變數ramfuncsrunstart,該變數指向段ramfuncs的執行位址的首位址(load_ start為編譯偽指令,請見ccs的幫助文件);

從第1和2行可以看出,段ramfuncs中的函式dsp28x_usdelay()的裝載位址和執行位址是不同的,本程式中裝載在flash的塊flashd中,而在saram l0中執行,這只是目標,實際執行時dsp並不會自動將flash中的**拷貝到saram中,因此需要手動新增**來完成。

在c函式中,為了使用變數ramfuncsloadstart、ramfuncsloadend和ramfuncsrunstart,必須先宣告,本工程在檔案dsp2833x_globalprototypes.h中做了如下宣告:

extern uint16 ramfuncsloadstart;

extern uint16 ramfuncsloadend;

extern uint16 ramfuncsrunstart;

然後就可以使用了。在main.c中,使用memcopy()函式將段ramfuncs中的函式dsp28x_usdelay()的**從裝載位址ramfuncsloadstart—ramfuncsloadend拷貝到ramfuncsrunstart開始的saram空間中。之後在程式執行時,只要呼叫dsp28x_usdelay()函式,都會自動地指向saram中相應的函式入口位址,這一點是自動完成的。memcopy()函式原型在memcopy.c中,dsp2833x_globalprototypes.h宣告。

7.如何將乙個函式放到ram中執行?

參考ti公司標頭檔案中自帶initflash函式,這些函式會以code_section申明。如:

#pragma code_section(initflash, "ramfuncs");

如何將DIV層放在flash上面

一 ie瀏覽器下可用 二 firefox下可用 關於wmode屬性資料 可選 允許使用 internet explorer 4.0 中的透明 flash 內容 絕對定位和分層顯示功能。此標記 屬性僅在帶有 flash player activex 控制項的 windows 中有效。opaque 使應...

R基礎 如何將列表中的內容匯出成文字

對於資料庫和矩陣,我們可以非常方便的使用write.table將資料輸出文字,那麼對於列表應該如何處理呢?在 r資料科學讀書筆記 r語言的資料結構原來可以這樣理解中,我們可以知道列表只是一種遞迴的向量而已,如果要把列表輸出成文字,只要遞迴的將裡面的資料寫出到文字即可。舉個例子,如下我構建了乙個列表,...

r語言賦值為na 如何將R資料中的NA值替換為0?

dplyr雜交選項現在比baser子集重新分配快30 左右。在乙個100公尺的資料池上mutate all replace is.na 0 比基數r快半秒d is.na d 如果你在為大量的資料而掙扎,data.table是最快的選擇 比標準快40 基r接近。它還可以修改現有的資料,有效地允許您一次...