产品选型

单片机多大 单片机的程序有多大?

小编 2024-10-06 产品选型 23 0

单片机的程序有多大?

之前一直很奇怪一个问题,每次写好单片机程序之后,用烧录软件进行烧录时,能看到烧录文件也就是 hex 的文件大小:

我用的单片机芯片是 STM32F103C8T6,程序储存器(flash)只有 64K。

从上图可以看出,hex 有 128K。

我有两点疑问,

1. 只是一个很简单的平衡小车程序而已,有 128K,这么大吗?

2. 就算有 128K,能下载到只有 64K 容量的单片机中去?

这可能是一道送命题!

下面开始我们的探索之旅,以 STM32 开发为例。在 keil 中进行程序编译之后,在界面部分:

很多朋友估计看到这界面,也只关心 2 个点:

第一、自己编写的程序是否正确生成了 hex!第二、自己编写的程序有没有错误,有没有警告!

在图中红线部分:

有 4 个:Code、RO-data、RW-data、ZI-data。

Code:表示所要执行的代码,程序中所有的函数都位于此处。

RO-data:表示只读数据,程序中所定义的全局常量数据和字符串都位于此处。

RW-data:表示已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。

ZI-data:表示未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。

从描述中可以得出:

1. 下载到单片机 FLASH 的程序是:Code+RO-data+RW-data(上图中数据为字节数,kb=byte/1024);

hex=(39546+5862+12428)/1024=56.48

2. 运行在 RAM 中的数据是:RW-data+ZI-data;

原来 window 下显示的 hex 大小,并非是我们下载到单片机中的 hex 大小。

关于为什么显示不同,这又是一个十分有趣的问题,有兴趣的朋友可以一起探讨下。

最后,貌似 C8T6 这个芯片的资源差不多被榨干了,要考虑换芯片了。

你写的单片机程序有多大,你知道吗?

单片机我们都用过,我们知道单片机的FLASH有4K的,有8K的,单片机程序我们也写过,但是我们写好的程序有多大,你知道吗?

程序写好并编译后生成hex文件,这个hex文件就是要下载到单片机里的文件,这个文件的大小不能超过单片机的FLASH大小,否则就要优化程序或者选用更大FLASH的单片机。

如下图所示,就是一个编译好的hex文件:

我们发现他后边的大小是9KB,这个是程序的大小吗?其实这是错误的,程序的大小要在这里看见:

Code: 表示所要执行的代码,程序中所有的函数都位于此处。

RO-data: 表示只读数据,程序中所定义的全局常量数据和字符串都位于此处。

RW-data: 表示已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。

ZI-data: 表示未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。

通过上面的描述就可以看出:

下载到单片机FLASH的程序是:Code+RO-data+RW-data;

运行在RAM中的数据是:RW-data+ZI-data;

好了,从今天起你就要知道你所写的程序有多大该怎么看了,另外程序的大小还可以在工程目录下的.map文件中看到:

找到.map文件,用记事本打开,拉到最后就可以看到了。

本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8

相关问答

单片机 的最小单位?

这句话说的多少有些毛病,实际上单片机可以有由一两个简单信号控制的时候,比如复位信号。这句话如果改成:指令是我们对单片机进行程序控制的最小单位。这就比较...

单片机 供电多少伏?

单片机供电电压通常在3.3V或5V之间。具体的供电电压取决于单片机的型号和规格要求。一般来说,较新的单片机通常采用3.3V供电,而较旧的单片机则采用5V供电。供...

最小的 单片机 控制板 多大 ?

最小的单片机控制板通常是微型控制板,尺寸通常在几平方厘米到几十平方厘米之间。这些微型控制板通常使用SMT(表面贴装技术)制造,集成了微控制器、存储器、输...

单片机 内存 多大 合适?

单片机的总类太多了。以51为例。早期的ATMEL内存(RAM)为256BYTES。片外可以扩展到64K现在不同厂家的单片机RAM差别很多。仅片内集成的RAM容量从256BYTES-409...

mcs51 单片机 最大空间几字节?

MCS-51单片机有(64k)字节外部数据存储器地址空间和(64k)字节外部程序存储器地址空间,具有(5)个级别的(5)个中断源。MCS-51单片机有(64k)字节外...

单片机 能控制 多大 的电流和电压?

单片机本身并不直接控制电流和电压的大小,它作为一个微控制器,主要负责控制外部器件的开关和逻辑操作。单片机的输出引脚通常具有较小的电流(几毫安级别)和电...

51 单片机 多少纳米?

51单片机的制程尺寸为0.8微米,是一款8位单片机,采用8031系列处理器的兼容设计,工作频率可达24MHz。它最大的特点是具有4KROM或128+64或256+64的编程存储器,...

单片机 输的高电平和低电平是多少?

输出电压=VCC就是高电平,输出电压=GND(一般是0V)就是低电平,分别用1和0来表示,这个是理想值。但实际上它也有一个范围,这个会在单片机的datasheet里说明。...

为什么很多 单片机 的工作电压是5v?

因为大多数芯片都是5V的TTL电平,要做到电平兼容,电平匹配,避免要电平转换操作,所有很多单片机的工作电压都是5V。TTL指的是TTL电平,0~5V之间,小于0.2V输出...因...

单片机 最大计数?

单片机的最大计数取决于其位数和时钟频率。对于一个8位单片机,最大计数是2^8-1=255。对于一个16位单片机,最大计数是2^16-1=65535。对于32位单片机,最大计数...

猜你喜欢