历史上的今天

今天是:2024年11月01日(星期五)

正在发生

2021年11月01日 | stm32专题三十六:MDK编译过程和文件类型(四)

发布者:EnchantedDreams 来源: eefocus关键字:stm32  MDK  编译过程  文件类型 手机看文章 扫描二维码
随时随地手机看文章

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 存储器配置选项的描述:

关键字:stm32  MDK  编译过程  文件类型 引用地址:stm32专题三十六:MDK编译过程和文件类型(四)

上一篇:stm32专题三十六:MDK编译过程和文件类型(三)
下一篇:stm32专题三十七:自动分配变量到指定 SRAM 空间

推荐阅读

 集微网消息,若问当今中国手机市场谁是第一名?毫无疑问它就是华为,在高端机市场有P、Mate两大系列,中端机市场有Nova系列,麦芒系列,低端机市场有畅享系列,再加上荣耀的神助攻,华为在短短几年间,迅速超越小米、OPPO、vivo等厂商,成为中国智能手机市场的霸主,好不风光,作为华为终端的掌门人余承东对此感受颇深,特地分享了他的心路历程。    ...
对于制造模具零部件或工具的公司而言,其所面临的时间和成本压力越来越大。由于大量铸件的质量都依赖于所用模具,因此毫无疑问,质量在这个行业中是最为重要的。德国大约有 3,800 家工具和模具制造公司正面临着这些挑战,他们比其他任何行业都更依赖于优化的制造工序。 工具和模具是制造实现其他产品的基础,因此,为了保证稳定可靠的产品质量,工具和模...
华为 Mate 40 Pro 已于昨日开售,售价 6499 元起。今日一早,微博上有数码博主放出了一份某网友的华为 Mate 40 Pro 首碎图,从图中无法得出更多信息,但至少可以发现破碎的主要部分在背壳而不是正面屏幕。  从图中无法发现导致此次背板破碎的原因,但网友推测楼上摔下或被碾碎的概率较大。好在该机享受三包服务,保修期可达 1 年,且拥有保...
AD转换之热敏电阻传感器检测AD值软件设计main.c函数/* 实验现象:下载程序后数码管前4位显示热敏传感器检测的AD值 1,单片机-->AD/DAC模块 管脚释义 P34-->DI DIN 串行数据输入端,当CS为低电平时,数据在 DCLK上升沿锁存进来 P35-->CS CS 片选信号,控制转换时序和使能串行输入输出寄存器,高电平时ADC掉电 P36-->CL DCLK ...

史海拾趣

问答坊 | AI 解惑

vxworks资料

................ [ 本帖最后由 daicheng 于 2008-12-7 11:04 编辑 ]…

查看全部问答∨

无线收发模块 CDTF100和CDR03A 问题

最近买了一对无线收发模块 CDTF100和CDR03A。但是在网上的介绍都太简略了。比如CDR03A的资料就是“引脚从左至右依次为 +  OUT  -”这样一句话。但CDR03A是有4个引脚的啊。难道中间2个脚都是OUT。那这2个有什么区别或是分工啊 ...…

查看全部问答∨

如何直接进入SD卡目录!

我想点一下一个按钮就直接进入SD卡的目录下,用程序该怎样实现呀?谢谢了!…

查看全部问答∨

请教WinCE6 SDK生成

CE6 SDK需要把模拟器也打进SDK如何实现? 还有一些帮助文档、类说明什么的,如何打在一起呢?…

查看全部问答∨

关于:#pragma comment(lib, "ws2_32.lib ") 急————急

我修改一个实例程序:用到下面语句(在evc中) #pragma   comment(lib,   "ws2_32.lib "),但却出现下面错误。 cannot open file \'ws2_32.lib \' 我在setting->link->Object/library   modules:中填上 ...…

查看全部问答∨

称量电路开发

1\\采用指定称量传感器(即量程为0.1~0.5Kg,信号:0.5mv/v,类型单点悬臂式铝合金传感器); 2\\采用5位7段LED数码管显示,显示精度为0.01g; 3\\带3组设定值(即下下限\\下限\\上限,可在量程范围内任意设定),并对应有三个中间继电器输出(当达到设定值 ...…

查看全部问答∨

protel 里 在原有的工程里面重新加一些东西,有些问题

 然后无法加载到原来的 PCB里面 ,为什么啊来自EEWORLD合作群:12425841…

查看全部问答∨

stm32f105/107的usb例程那里有??

st网站看过了,有一个1。0的库文件STM32_OTG_LIB,um0721.zip , 但是没有发现能直接运行在105/107上的例程,我需要找一个虚拟串口或usb_host或Mass_Storage。。 我还发现一个文件里面有stm3210e_eval 和stm3210b_eval 就是没有我要找的stm321 ...…

查看全部问答∨

STM32的AD最高采样率跟USB时钟的冲突解决了没

103的中用USB的时候,AD不能工作在最高采样率 后来升级的105,107有没有解决这个问题,我的项目中就要用的1M的AD和USB啊,要是还没解决,我就要放弃stm32这鸡肋了 感觉ATMEL的也不错,高速USB,但貌似技术支持不太好,国内用的不很多,没有S ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved