如何通过将代码放入RAM来加快执行速度。
如何通过将代码放入RAM来加快执行速度。我从STM32CubeIDE用户手册的2.5.7.2节了解到,可以通过修改.ld文件和.s文件,
并使用__attribute__((section(".RAM_Code")))声明函数来实现。
如何将这些代码添加到.s文件中
使用默认的分散加载文件(.sct) 通过__attribute__指定代码段 创建.sct文件来定义RAM区域 程序默认存储在 Flash 中并直接从 Flash 执行。若要从 RAM 执行,需先将代码复制到 RAM,再跳转到 RAM 中的代码地址运行。 在链接脚本(.sct 文件)中定义一个RAM区域。 修改SCT文件,将代码放到SRAM执行 点击APP中的想要放置在RAM中的文件,右键然后单击烟花棒(Options for File ‘main.c’) 2、 点击Code/Const,选择IRAM1 在链接脚本(.sct 文件)中定义RAM区域,并将所有代码段放入RAM。 在需要放入RAM的代码(如函数、变量)前添加__attribute__((section("ram_code")))属性,告知编译器将其放入自定义的.ram_code段。 使用#pragma arm section指令 将代码放入RAM的核心是通过链接脚本自定义段和编译器属性标记 RAM起始地址:0x200000002.在xx.sct文件中,定义一个RAMCODE的section,放在RW_IRAM1执行区域(0x20000000-0x00002000)。 编辑修改stc文件: stc文件在ARM的上下文中,散列控制表(或称为分散加载描述文件)是一个文本文件,它告诉链接器如何将编译后的代码和数据放置到目标硬件的内存中。 在代码中使用 __attribute__((section("section_name"))) 将特定的函数或代码段放入RAM。 RAM的容量通常远小于Flash,因此应谨慎选择放入RAM的代码,避免超出RAM的存储范围 工程中新建一个分散加载文件(.sct),并定义一个RAM区域(如 RAM_CODE),指定其起始地址和大小。 让Keil代码在内嵌SRAM中执行 编译后打开.map文件,确认函数被分配到RAM_CODE段。 在 Keil 的链接脚本(如STM32F103RETX_FLASH.sct)中,为.RAMCODE段分配 RAM 地址空间
页:
[1]