历史上的今天
返回首页

历史上的今天

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

正在发生

2021年11月01日 | 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 存储器配置选项的描述:

推荐阅读

史海拾趣

长园维安(CYGWAYON)公司的发展小趣事

长园维安自成立以来,始终坚持技术创新为核心竞争力。在早期发展阶段,公司投入大量资源研发新型线路保护元器件,如PPTC、CPTC等。这些产品凭借其卓越的性能和稳定性,迅速在通讯、汽车电子等领域获得广泛应用。通过不断创新,长园维安在电子行业树立了技术领先的形象。

艾华集团(AISHI)公司的发展小趣事

1985年,艾立华和王安安怀揣着3700元的全部家当,毅然决然地踏上了创业之路。他们租下了两间不到50平方米的废弃小平房,与几名工人一起,手工制作铝电解电容器。由于资金、技术和市场的限制,艾华集团最初只能接一些其他企业不愿意做的、用量很少但又刚需的项目。然而,即便是在这样的困境中,艾立华和王安安也始终坚持对产品品质的精益求精,他们深知,只有高品质的产品才能在市场上立足。

Anixter Inc公司的发展小趣事

在科技创新的推动下,艾华集团的产品逐渐在国内外市场上崭露头角。公司不仅在国内市场上取得了显著成绩,还积极拓展海外市场,产品远销欧美、东南亚等地区。同时,艾华集团也注重品牌建设,通过提升产品品质、加强售后服务等方式,不断提升品牌影响力和美誉度。

A1 PROS公司的发展小趣事

随着公司在韩国本土市场的稳步发展,A1 PROS开始积极寻求国际市场的拓展。公司以韩国母公司为研发和生产中心,面向台湾、香港、中国大陆以及中东、欧美等地区开展业务。通过不断优化产品设计和提升生产效率,A1 PROS的产品逐渐在国际市场上占据了一席之地。同时,公司还积极参加各类国际电子展会和技术交流会,与全球同行建立了广泛的合作关系。

EDAL公司的发展小趣事

为了进一步巩固市场地位和提升技术实力,EDAL公司开始通过收购和合作的方式拓展业务。公司成功收购了几家在EDA领域具有领先地位的公司,获得了更多的技术专利和市场份额。此外,EDAL公司还与其他科技公司建立了战略合作关系,共同研发新技术、新产品,推动整个EDA行业的发展。

Bytes公司的发展小趣事

Bytes公司自成立以来,始终坚持以技术创新为核心竞争力。公司早期便投入大量研发资源,开发出一款具有划时代意义的电子产品,迅速在市场上占据一席之地。随着技术的不断进步,Bytes公司不断推出更新换代的产品,满足消费者日益增长的需求。同时,公司还积极与高校、科研机构合作,共同研发新技术,为公司的持续发展提供源源不断的动力。

问答坊 | AI 解惑

现场仿真

由于PLC的现场应用需要进行调试,而现场调试通常成本较高,而且不容易建立调试所需的故障,所以现场调试经常不够充分,使得事后维护繁琐。 今年我采用了现场仿真,大大简化了现场工作。基本方法如下: 对于小型PLC,仿真方法有两种: 1。外接式 用 ...…

查看全部问答>

嵌入式视频图像压缩模块的USB接口设计

摘要:本文介绍了一种嵌入式视频图像压缩模块的USB接口设计方案,给出了该系统的硬件实现方案以及USB控制芯片CY7C68013在系统中的应用,并编写了USB固件程序、嵌入式操作系统Windows CE.net下的USB驱动程序和应用程序。 关键词:视频压缩;固件程 ...…

查看全部问答>

PLC视频资料

大家想了解更多PLC知识或PLC视频教学。请登陆WW .PLCJS.COM…

查看全部问答>

求助一个弱弱的问题。。。

如果做一个数字电压表,它的量程是由AD的输入电压量程决定的吗?如何增大量程呢?…

查看全部问答>

单片机实现T9文字输入法电路(源代码+仿真)

单片机实现T9文字输入法电路(源代码+仿真)…

查看全部问答>

windows mobile ????????????????

请问在Windows Mobile平台下怎么用C++将Bitmap保存到图像文件?…

查看全部问答>

5.1的选择<<<世界500强公司在上海职位介绍>>>

福利体系:18% 住房补贴,7% 交通补贴+600,年底双薪,年终2.5-3个月工资 奖金,另外每年3000元左右 现金保单,30万 人生意外险和重大疾病险。 公司为个人缴纳的保险分为两种形式,如果有居住证或户口在上海的,公司缴纳城保,那么住房补贴是四金 ...…

查看全部问答>

使用vivi不能将wince烧写到flash!

我使用vivi的load flash wince u命令,将wince烧写到板上的flash时,格式化的时候出现几个error, 然后也正常格式化完毕,刚刚把wince烧写到板上时,wince正常启动,因为我没有断过电, 重启之后flash上刚刚烧写的wince就不见了,不能正常启动 ...…

查看全部问答>

ISE10.1警告

ERROR:Place:1018 - A clock IOB / clock component pair have been found that are not placed at an optimal clock IOB /   clock site pair. The clock component <start_IBUF_BUFG> is placed at site <BUFGMUX_X1Y1>. The I ...…

查看全部问答>

进入低功模式后,不能复位看门狗,咋办?

                                 CPU 睡着了,看门狗还在工作(想关也关不掉),咋办呢?只能等着MCU被Reset吗?…

查看全部问答>