英飞凌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