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专题三十七:自动分配变量到指定 SRAM 空间
推荐阅读
史海拾趣
随着产品的不断完善和技术的不断进步,Atmel开始积极拓展全球市场。公司通过建立遍布全球的办事处和销售网络,将产品销往世界各地。同时,Atmel还注重品牌建设,通过优质的产品和服务,赢得了客户的信任和好评。这使得Atmel在全球微控制器市场中逐渐崭露头角。
为了进一步扩大市场份额和拓展应用领域,Atmel(Microchip)积极与其他企业开展合作。公司与多家知名企业建立了战略合作关系,共同推动微控制器及相关技术在各个领域的应用。通过与合作伙伴的紧密合作,Atmel的产品已经广泛应用于工业、消费、安全、通信、计算和汽车等多个领域,为这些领域的发展提供了强有力的支持。
这五个故事旨在展现Atmel(Microchip)在电子行业中的发展历程和成就,涵盖了从创业初期到被收购后的不同阶段。通过这些故事,我们可以看到Atmel(Microchip)如何凭借技术创新、市场拓展和合作发展,逐渐成为了微控制器领域的领军企业。
为了进一步扩大市场份额和拓展应用领域,Atmel(Microchip)积极与其他企业开展合作。公司与多家知名企业建立了战略合作关系,共同推动微控制器及相关技术在各个领域的应用。通过与合作伙伴的紧密合作,Atmel的产品已经广泛应用于工业、消费、安全、通信、计算和汽车等多个领域,为这些领域的发展提供了强有力的支持。
这五个故事旨在展现Atmel(Microchip)在电子行业中的发展历程和成就,涵盖了从创业初期到被收购后的不同阶段。通过这些故事,我们可以看到Atmel(Microchip)如何凭借技术创新、市场拓展和合作发展,逐渐成为了微控制器领域的领军企业。
Atmel(Microchip)一直注重技术创新和产品升级。公司不断投入研发资金,推动新产品的研发和现有产品的改进。通过引入新技术、优化产品设计等方式,Atmel的产品在性能、功耗、可靠性等方面都得到了显著提升。这些创新成果不仅满足了客户日益增长的需求,也为公司赢得了更多的市场份额。
除了天然气业务外,E.ON还致力于电力市场的拓展。通过与其他电力公司的合作和并购,E.ON逐渐扩大了在欧洲电力市场的份额。特别是在2003年收购德国鲁尔天然气公司后,E.ON间接持有了俄天然气公司的股份,进一步巩固了其在欧洲能源市场的地位。
2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。
这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。
最近买了一对无线收发模块 CDTF100和CDR03A。但是在网上的介绍都太简略了。比如CDR03A的资料就是“引脚从左至右依次为 + OUT -”这样一句话。但CDR03A是有4个引脚的啊。难道中间2个脚都是OUT。那这2个有什么区别或是分工啊 ...… 查看全部问答∨ |
|
关于:#pragma comment(lib, "ws2_32.lib ") 急————急 我修改一个实例程序:用到下面语句(在evc中) #pragma comment(lib, "ws2_32.lib "),但却出现下面错误。 cannot open file \'ws2_32.lib \' 我在setting->link->Object/library modules:中填上 ...… 查看全部问答∨ |
|
st网站看过了,有一个1。0的库文件STM32_OTG_LIB,um0721.zip , 但是没有发现能直接运行在105/107上的例程,我需要找一个虚拟串口或usb_host或Mass_Storage。。 我还发现一个文件里面有stm3210e_eval 和stm3210b_eval 就是没有我要找的stm321 ...… 查看全部问答∨ |
103的中用USB的时候,AD不能工作在最高采样率 后来升级的105,107有没有解决这个问题,我的项目中就要用的1M的AD和USB啊,要是还没解决,我就要放弃stm32这鸡肋了 感觉ATMEL的也不错,高速USB,但貌似技术支持不太好,国内用的不很多,没有S ...… 查看全部问答∨ |