单片机
返回首页

stm32专题三十六:MDK编译过程和文件类型(四)

2021-11-01 来源:eefocus

sct 分散加载文件的格式与应用


在使用 MDK 新建工程时,MDK 软件会要求选择对应的芯片型号:

然后,MDK会根据选择的芯片型号,自动获取(写入)芯片内部的 FLASH 和 SRAM 存储器概况如下:

然后,MDK 会生成一个后缀名为 sct 的分散加载文件,如下所示:


链接器根据该文件的配置分配各个节区地址,生成分散加载代码,因此我们通过修改该文件可以定制具体节区的存储位置。

下面,来分析一下这个 sct 文件:

在默认的 sct 文件配置中仅分配了 Code、 RO-data、 RW-data 及 ZI-data 这些大区域的地址,链接时各个节区(函数、变量等)直接根据属性排列到具体的地址空间。


sct 文件中主要包含描述加载域及执行域的部分,一个文件中可包含有多个加载域,而一个加载域可由多个部分的执行域组成。同等级的域之间使用花括号“{ }”分隔开,最外层的是加载域,第二层“{ }”内的是执行域,如图所示:

加载域:


sct 文件的加载域格式如下:

执行域:


和加载域的基本语法非常类似。

输入节区描述:


配合加载域及执行域的配置,在相应的域配置 “输入节区描述” 即可控制该节区存储到域中:

模块选择样式:

输入节区样式:

节区属性描述符:

具体举例如下:

通过 MDK 配置选项来修改 sct 文件


了解 sct 文件的格式后,可以手动编辑该文件控制整个工程的分散加载配置,但 sct 文件格式比较复杂,所以 MDK 提供了相应的配置选项可以方便地修改该文件,这些选项配置能满足基本的使用需求。

图中 Device 标签页中选定了芯片的型号为 STM32F103VE,选中后,在 Target 标签页中的存储器信息会根据芯片更新。

下面,我们来尝试重新分配 SRAM 的空间大小,将64KB分成2个32KB,观察编译后 sct 文件的变化。

编译结果如下所示:


可以发现, sct 文件根据 Target 标签页做出了相应的改变,除了这种修改外,在 Target标签页上还控制同时使用 IRAM1 和 IRAM2、加入外部 RAM(如外接的 SRAM),外部FLASH 等。


上面的操作是将内部 SRAM 分成2份,来进行存储数据,接下来,尝试将文件存储到 RAM2 区域:

然后重新编译,可以看到 sct 文件的内容发生了改变:


可以看到在 sct 文件中的 RW_IRAM2 执行域中增加了一个选择 bsp_led.o 中 RW 内容的语句。


关于 MDK 存储器配置选项的描述:

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 非常简单的150W功放电路图

  • 优化电路板布局的简单方法

  • 一个简单的立体声平衡指示器电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章