打印
[开发工具]

keil里program size:code,RO,RW,ZI

[复制链接]
793|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eefas|  楼主 | 2023-11-25 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
*在Keil工具中,代码(code)和RO-data(Read-Only Data)通常是下载到Flash存储器中的。*

**1·Code(代码)**: 这是你的程序逻辑部分,包括执行各种功能和任务的指令。
**2·RO-data(Read-Only Data)**:这是在程序运行时只读的数据,通常包括预先定义的常量、编译时常量、以及不允许修改的变量等。

*RW-data(Read-Write Data)和ZI-data(Zero-Initialised Data)通常不会下载到Flash存储器中,因为它们在程序运行时才被使用,并可能被存储在更易访问且可以更快访问的RAM中。*

**3·RW-data(Read-Write Data)**:这是在程序运行时可以被读取和写入的数据,也就是我们通常说的动态数据。
**4·ZI-data(Zero-Initialised Data)**:这是在程序开始运行前被初始化为零或NULL的数据。

通常情况下,Keil工具不会直接将代码和各种数据段的大小相加来计算Flash存储器的大小。在确定下载到Flash的大小时,需要考虑以下几个因素:
**代码大小**:例如代码大小为55656。通常,代码是下载到Flash存储器的主体部分,并且占据了Flash的大部分空间。
**RO-data大小**:RO-data是只读数据,通常也会下载到Flash中。例如RO-data大小为3892。
**RW-data和ZI-data**:RW-data和ZI-data通常不会下载到Flash存储器中。这些数据在程序运行时存储在RAM中,因此它们的大小不会计入Flash存储器的使用量。
**Flash存储器的容量**:Flash存储器的容量是有限的,因此需要确保下载的数据不超过其容量限制。

综上所述,如果Flash存储器的容量足够大,并且代码和RO-data总和不超过其容量限制,那么(55656+3892)/1024的结果可以近似为Flash的大小(以KB为单位)。
但是,实际情况可能因目标设备和Keil工具的配置而有所不同,因此最好参考Keil工具的文档或使用Keil工具自带的工具和向导来计算Flash的大小。

使用特权

评论回复
沙发
RDS小定| | 2023-11-25 15:06 | 只看该作者
科普帖,鉴定完毕

使用特权

评论回复
板凳
gygp| | 2023-12-2 14:57 | 只看该作者
在Keil中,"Program Size"是指程序的大小

使用特权

评论回复
地板
alvpeg| | 2023-12-2 15:15 | 只看该作者
Code:程序的指令代码,即程序的实际执行部分。

使用特权

评论回复
5
nomomy| | 2023-12-2 15:25 | 只看该作者
RW是Read-Write的缩写,表示可读写区域。这部分区域存储的是可读写数据,例如全局变量等。这些数据在程序运行时可以被修改。

使用特权

评论回复
6
everyrobin| | 2023-12-2 15:39 | 只看该作者
在Keil中,程序大小是指程序在烧写到芯片后占用的存储空间大小。程序大小包括代码(code)、只读数据(RO data)、有初始值要求的数据(RW data)和未初始化的数据(ZI data)四个部分。

使用特权

评论回复
7
eefas|  楼主 | 2023-12-2 15:55 | 只看该作者
Code是程序中的可执行代码部分,包括指令和数据。这部分代码通常存储在Flash或者RAM中,并在程序运行时被执行。

使用特权

评论回复
8
sheflynn| | 2023-12-2 16:29 | 只看该作者
程序的总体大小,这个大小对于嵌入式系统的设计和开发非常重要

使用特权

评论回复
9
sesefadou| | 2023-12-2 16:50 | 只看该作者
RO(只读数据) 是指程序中的一些只读数据,比如一些常数、表格等。这部分内容在程序运行过程中是不会改变的。

使用特权

评论回复
10
nomomy| | 2023-12-2 17:03 | 只看该作者
code是指程序所占用的FLASH空间大小; RO data是指已经被初始化的常量,如const型,存储在FLASH中; RW data是指已经被初始化的变量,存储在FLASH中,并且在初始化时会被拷贝到SRAM中; ZI data是Zero Initialized Data的缩写,是指未进行初始化的可读/写数据占用的字节数,存储在FLASH中。

使用特权

评论回复
11
51xlf| | 2023-12-2 19:14 | 只看该作者
ZI是Zero-Initialized的缩写,表示初始化为零的区域。这部分区域存储的是在程序运行时需要被初始化为零的数据。这些数据在程序运行时会被初始化为零。

使用特权

评论回复
12
pl202| | 2023-12-2 19:28 | 只看该作者
Code(代码):这部分包含了程序的可执行代码,包括函数、变量等。
RO(只读存储器):这部分包含了程序的只读数据,如常量、全局变量等。
RW(读写存储器):这部分包含了程序的可读写数据,如局部变量、静态变量等。
ZI(零初始化存储器):这部分包含了程序的未初始化数据,通常用于存储一些临时数据或者调试信息。

使用特权

评论回复
13
febgxu| | 2023-12-2 19:36 | 只看该作者
在Keil中,可以通过查看程序大小来了解程序的构成和大小,以及各个部分的大小和比例。这有助于分析和优化程序,提高程序的性能和效率。

使用特权

评论回复
14
tifmill| | 2023-12-2 20:19 | 只看该作者
Code:程序的指令代码,即程序的实际执行部分。
RO:只读存储器,用于存储程序的常量和数据。
RW:读写存储器,用于存储程序的变量和数据。
ZI:程序的调试信息,用于调试程序。

使用特权

评论回复
15
robertesth| | 2023-12-2 20:39 | 只看该作者
可以通过减少Code、RO、RW和ZI区域的大小来减小程序的内存占用,或者通过优化代码和数据结构来减小程序的大小。

使用特权

评论回复
16
pl202| | 2023-12-2 20:59 | 只看该作者
Code:这是程序的编译后的机器代码大小,也称为执行代码大小。这是由编译器生成的,用于在目标硬件上执行的指令。
RO:这是程序的只读数据大小,包括程序中使用的常量数据、文本数据等。这些数据在程序运行时不会被修改。
RW:这是程序的可读写数据大小,包括程序运行时可以被修改的数据,如变量等。
ZI:这是程序的零初始化数据大小,这部分数据在程序启动时会被自动初始化为零。

使用特权

评论回复
17
elsaflower| | 2023-12-2 21:44 | 只看该作者
在Keil uVision中,可以通过查看程序大小来了解程序在内存中所占用的空间大小,并进行优化和调整。

使用特权

评论回复
18
wengh2016| | 2023-12-2 21:58 | 只看该作者
Keil会根据程序大小计算出所需的FLASH空间大小,并在烧写芯片前对程序进行裁剪,以减小程序大小并满足FLASH空间限制。

使用特权

评论回复
19
uytyu| | 2023-12-2 22:24 | 只看该作者
RO是Read-Only的缩写,表示只读区域。这部分区域存储的是只读数据,例如常量、字符串等。这些数据在程序运行时不能被修改。

使用特权

评论回复
20
everyrobin| | 2023-12-2 22:49 | 只看该作者
Code 内容是固定的,不会随着数据的改变而改变。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

2815

帖子

2

粉丝