source目录下删除28335_RAM_lnk.cmd,添加F28335.cmd和DSP2833x_MemCopy.c文件
main函数添加下列内容(一般添加在 InitSysCtrl();
后面)
//复制对时间敏感代码和FLASH配置代码到RAM中 // 包括FLASH初始化函数 InitFlash(); // 链接后将产生 RamfuncsLoadStart, RamfuncsLoadEnd, 和RamfuncsRunStart // 参数. 请参考 F28335.cmd 文件 MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); // 调用FLASH初始化函数来设置flash等待状态 // 这个函数必须在RAM中运行 InitFlash();
这段代码主要涉及将时间敏感的代码和FLASH配置代码从Flash存储器复制到RAM中运行。
具体分析如下:
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
这行代码使用了MemCopy函数,将数据从Flash存储器的RamfuncsLoadStart地址复制到RamfuncsRunStart地址,复制的长度由RamfuncsLoadEnd和RamfuncsLoadStart之间的差值确定。这样做的目的是将时间敏感的代码和FLASH配置代码加载到RAM中运行,以提高执行速度和响应时间。
注意,这行代码的实现可能是通过汇编或其他底层机制来完成的,具体实现细节可能与这里给出的函数名称和参数略有不同。
InitFlash();
这行代码调用了InitFlash函数,用于初始化Flash存储器的等待状态。由于Flash的操作速度相对较慢,为了提高访问Flash的效率,通常需要进行一些配置和设置。该函数需要在RAM中运行,因此在这里调用。
总体来说,这段代码的目的是将时间敏感的代码和FLASH配置代码从Flash存储器复制到RAM中,并在RAM中运行,以提高执行效率和响应时间。同时,通过调用InitFlash函数对Flash进行初始化设置,以优化对Flash存储器的访问。