之前总结过编译文件大小的一些研究:
https://blog.csdn.net/ZenNaiHeQiao/article/details/83343504
总结起来是这样的:
(1)
单片机:生产的编译信息中,包含了
code : 代码信息
RO-data: 只读信息–》程序中的指令 和常量
RW-data: 被初始化的变量
ZI-data: 无需初始化的变量
我做了这么一个实验,
①增加一个很大的数组,不初始化或者初始化为0; 它会被分配到ZI-data信息中。
②增加一个很大的数组,切对其进行初始化, 它会被分配到RW-data信息中
烧录文件的大小=code + RO-data + RW-data
增加ZI-data的大小,bin文件未必增大很多。 应该是,对于不需要初始化赋值的变量,ZI-data信息包含了是一些 起始地址 ,数据大小 等等这一些信息。
芯片需要的RAM大小=RW-data+ZI-data
bin文件我们称之为 ARM映像文件(image文件):Image文件包含了RO和RW数据。之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。
ARM程序的执行过程:
1. 将RW从ROM中搬到RAM中,因为RW是变量。
2. 将ZI所在的RAM区域全部清零,因为ZI区域并不在Image中,所以需要程序根据编译器给出的ZI地址及大小来将相应得RAM区域清零。ZI中也是变量.
上一篇:【stm32f103】USART RX实现(寄存器版)
下一篇:STM32-自学笔记(11.通过串口与PC通信,发Hello)
推荐阅读
史海拾趣
在追求技术创新的同时,科达嘉电子也积极承担社会责任。公司关注环境保护,推行绿色生产,努力减少生产过程中的环境污染。此外,科达嘉还积极参与社会公益活动,为社区的发展贡献力量。通过不断创新和履行社会责任,科达嘉电子在电子行业中树立了良好的企业形象。
ebm-papst一直致力于通风和驱动技术的研发与创新。在中国市场,公司针对数据中心等特定应用场景,推出了革命性的创新产品——“数据中心列间空调用轴流风机”。该产品凭借其独特的设计和优异的性能,荣获了2022年中国制冷展创新产品奖。这一技术创新不仅解决了数据中心散热的难题,也进一步巩固了ebm-papst在通风与驱动技术领域的领先地位。
Apex Microtechnology成立于1980年,自创立之初,公司便专注于功率模拟技术的研发,为工业、国防和航空航天等领域提供高精确控制电流、电压和速度的解决方案。凭借其在功率驱动器和放大器领域的专业知识,Apex Microtechnology逐渐在电子行业中崭露头角,吸引了众多客户的关注。
2019年,中微股份(Cmsemicon)迎来了又一个重要时刻——成为科创板首批上市公司之一。这一荣誉不仅是对公司过去成绩的肯定,也为公司的未来发展提供了更多的资金支持。上市以来,公司充分利用资本市场的优势,加大研发投入,推动技术创新和产品升级。同时,公司还积极拓展国际市场,提升品牌影响力。
背景:随着业务的不断增长,Force Technologies Ltd意识到单一市场已无法满足其发展需求。于是,公司制定了明确的国际化战略,旨在将产品和技术推向全球。
发展:通过在欧洲、北美和亚洲等地设立研发中心和生产基地,Force Technologies Ltd成功构建起全球化的运营网络。同时,公司还积极参与国际展览和交流活动,不断提升品牌知名度和影响力。在国际市场的推动下,公司的销售额和市场份额均实现了快速增长。
DCS集散控制系统产品开发之我见 摘要: 随着电站汽轮机、燃汽轮机市场的逐步复苏,新发电机组招标和老机改造正在紧锣密鼓的蓄势待发。而基于我们轻车熟路的DEH控制系统却逐步将被DCS系统所 取代。我们的生存面临着严峻的挑战。我们 ...… 查看全部问答∨ |
|
EBOOT支持BINFS格式化FLASH, 由于板子的FLASH容量较大,我想分成两个文件系统BINFS,FATFS. 请问怎样实现FATFS,EBOOT没有该选项。 就读取速度来说,BINFS与FATFS哪个更快?… 查看全部问答∨ |
|
请问使用DeviceIoControl函数能够读写硬盘(包括U盘)的最大扇区数是多少? 我在写一个U盘的时候最大的128个扇区,写硬盘的时候最大为248个,想请问下DeviceIoControl能够读写的最大扇区数是由什么决定的?谢谢了。… 查看全部问答∨ |
|
我想转换integer类型的信号为real类型 程序如下。 这段程序在maxplus II报错: file standard.vhdl:Unsupported feature error:floating is not supported 在quartus II中报错: Error (10414): VHDL error at yuvtorgb.vhd(22), at object ...… 查看全部问答∨ |
大家好! 最近在学xilinx EDK,在这里请教大家一个问题。 首先,我用的板子是ML506,软件是EDK 11.1。 示例程序中有个“hello world”程序用,print(“。。。”)来向232输出字符串,想问一下 读取该怎么做? 有什么好的microblaze上c代码的资料介 ...… 查看全部问答∨ |
adc=((float)AdcRegs.RESULT0)*3.0/65520.0+adclo。 A/D转换中,我使用Watchwindow来观察adc和AdcRegs.RESULT0中的值,发现他们两个不满足上面的关系 式,请问是什么原因。… 查看全部问答∨ |