英飛凌TC234建立程序定位在RAM的運行方法


從零開始

 

 

 

 

 

 

 

 

然后打開D盤下 的 BaseFramework_TC23XB_GPIO 

賦值下面的 0_src 和 1_ToolEnv 

到工程目錄下 TC234_test_runram  並刪除原本工程目錄下的 h文件和 src文件。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

先暫時添加如下的頭文件

 

 

 

 

 

 

 

 

 

上報了很多錯誤

 

 

 

 

 

 

 

 

 

確實沒有包含 #include <_Reg/IfxAscLin_reg.h>

 

把上圖注釋去掉  程序重新編譯通過 

 

配合我的電路板  

 

 

 

 

 

 

 

下載程序以后,電路班上流水燈閃爍。 證明程序運行,

 

現在 看下 Lcf_Gnuc.lsl 文件, 並對其進行改造

 

 

 

上圖看見了 .cpu0.psram_text段 在__cppy_table 中將 .cpu0.psram_text 從FLASH0 復制到RAM中去運行。

LONG(LOADADDR(.data)); LONG(0 + ADDR(.data)); LONG(SIZEOF(.data));

注:第一個LONG(LOADADDR(.data));是載入到flash中的地址。

第二個 LONG(0 + ADDR(.data));是載入到運行存儲中的地址。

LONG(SIZEOF(.data));是數據輸出區域的大小(byte)

 

 

 

 

 

>psram 表示section 輸出段cpu0.param_text 是在psram中運行 

AT>pfls0  表示 程序用 pflash 0 中裝載。

 

 

關於代碼從FLASH 拷貝到RAM 運行的方法 可參照userguide  第383頁

 

 

 

於是 我對程序 做如下 更改:

 

 

 

 

 

通過上圖 發現test_run_flash的運行地址是 0X8000 03F0

              Test)run_ram 的運行地址是 0X7010 0000  就是RAM 的地址。

 

 

延申:

你還可以用段的另一種定義方法 :

 

/*

     * 567

     */

    .internalcode  :

    {

        PROVIDE(__internalcode_start = .);

       

        /*PROTECTED REGION ID(Protection: iROM .internalcode.begin) ENABLED START*/

           /*Protection-Area for your own LDF-Code*/

        /*PROTECTED REGION END*/

       

        KEEP(*(.internalcode)) /*Internal Code*/

        KEEP(*(.internalcode*))

       

        /*PROTECTED REGION ID(Protection: iROM .internalcode) ENABLED START*/

           /*Protection-Area for your own LDF-Code*/

        /*PROTECTED REGION END*/

       

        PROVIDE(__internalcode_end = .);

        . = ALIGN(8);

       

    } > psram_local AT > pfls0 /* PMI_PSPR: Scratch-Pad RAM (PSPR) */ /* PMU_PFLASH0: Program Flash Memory (PFLASH0) */

 

 

百度網盤 文檔以及程序的鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM