从零开始
然后打开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) */