关于MDK中:RO-data、RW-data、ZI-data
最近在LPC2109上调试ENC28J60,协议栈使用的是UIP,刚开始用的telnet服务,能够正常编译运行。然后换成webserver提示:
enc28j60.axf: Error: L6406E: No space in execution regions with .ANY selector matching uip.o(.bss). enc28j60.axf: Error: L6407E: Sections of aggregate size 0x2204 bytes could not fit into .ANY selector(s).
很是奇怪,然后把芯片换成大一点的发现ZI-data增加了很多。
然后看了网上查了下关于ZI-DATA的信息,又看了MDK的手册,下面是手册对于这几个数据的解释:
RO Data Shows how many bytes are occupied by read-only data. This is in addition to the inline data included in the Code (inc. data) column.
RW Data Shows how many bytes are occupied by read-write data.
ZI Data Shows how many bytes are occupied by zero-initialized data.
以及他们的存储信息:
Example . Image component size informatioCode (inc. data) RO Data RW Data ZI Data De
Object Totals
(incl. Generated)
(incl. Padding)
Library Totals
(incl. Padding) =============================================================================== Code (inc. data) RO Data RW Data ZI Data Debug
Grand Totals
ELF Image Totals
ROM Totals =============================================================================== Total RO Size (Code + RO Data) ( .30kB)
Total RW Size (RW Data + ZI Data) ( .30kB)
Total ROM Size (Code + RO Data + RW Data) ( .35kB)
看了网上的篇文章,大概是讲对这些数据的存储的测试验证。
然后自己动手在MDK下测试了下,发现数据很奇怪。
#include <stdio.h>
char ix[];
int main(void)
{
printf("%c",ix[]);
return ;
}
刚开始用ix[10]->ix[20]->ix[30]测试,发现结果很奇怪。
通过对初始化为0的变量的增加:发现ZI-data是以8为单位增加的。
不解,以前的实验室的师兄告诉我可能是ARM的数据存储是以字为单位,觉得有道理,尝试,定义数组ix[8]->...->ix[12]->ix[16]->ix[20]->ix[24]->ix[25]逐个增加编译
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
...........
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
Program Size: Code= RO-data= RW-data= ZI-data=
MDK的ZI-data是以8bytes为单位增加。
关于MDK中:RO-data、RW-data、ZI-data的更多相关文章
- stm32 ARM中的RO、RW和ZI DATA
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...
- ARM MDK 编译产生:RO、RW和ZI DATA说明
1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解 ...
- Keil编译后的Code,RO,RW,ZI分别表示什么以及和芯片Flash、SRAM的对应关系
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:<ignore_js_op> 以前一直好奇这几个参数和实际使用的STM32芯片中F ...
- ADS1.2中RO base与RW base
ARM映像文件 ARM中的各种源文件(包括汇编文件,C语言程序及C++程序等)经过ARM编译器编译后生成ELF(Executable and linking format)格式的目标文件.这些目标文件 ...
- Keil MDK中Image~~RW_IRAM1~~ZI~~Limit(~表示$)
ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别. 一个ARM程序包含3部分:RO, ...
- KEIL的ARM编译器对RW和ZI段的一个处理
按照C编译器编译的结果,一般会产生RO段,RW段,ZI段.RO是程序中的指令和常量,RW是程序中的已初始化全局变量,ZI是程序中的未初始化或初始化为零的全局变量. 那么如下的代码 int aaa; i ...
- 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6”
"System.InvalidOperationException"类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 无法为具有固定名称"MySql. ...
- 总结Jquery中获取自定义属性使用.attr()和.data()以及.prop()的区别
一..attr()和.data()的区别: .attr()和.data()本质上属于DOM属性和Jquery对象属性的区别. 看一个例子: <!DOCTYPE html> <html ...
- 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...
- 在vuejs 中使用axios不能获取属性data的解决方法
Laravel5.4 vuejs和axios使用钩子mounted不能获取属性data的解决方法 //出错问题:在then 这个里边的赋值方法this.followed = response.data ...
随机推荐
- Android文字转语音
虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上.当用户不能查看设备时,则需要一些其他通信的方法.Android提供了强大的文字转语音Text-to-Speech,TTS A ...
- AndroidTestCase简单使用
1.根据需求创建TestCase类,实现测试用例.此类需继承AndroidTestCase类 public class TestCase extends AndroidTestCase { @Over ...
- Part 7 Joins in sql server
Joins in sql server Advanced or intelligent joins in sql server Self join in sql server Different wa ...
- webkit常见问题汇总
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, Resourc ...
- python:笔记for循环中的else
我们常常会在for循环遍历一个序列或者字典后,接着语句else,很多新手会误以为是判断执行else后面的 代码,其实不然,for循环里面也不存在判断,而已执行完遍历的对象后,再执行else后面的代码. ...
- php29号小结(隔行换色······)
1.给表单加样式,可以用css.php与js.js这三种,其中最好用php与js,现在很推广用这种. css3样式隔行换色(table中) tr:nth-child(even){ background ...
- 9个超绚丽的HTML5 3D图片动画特效
在Web 1.0时代,我们的网页中图片数量非常少,而且都是以静态图片为主.HTML5的出现,推动了Web 2.0的发展,同时也催生出了很多绚丽的HTML5图片动画特效,特别是有些还有3D的动画效果.本 ...
- 9款经典华丽的CSS3分享按钮
如果你经常活跃在一些社交网站上,那么你肯定会看到过很多形式各异的分享按钮,目前由于HTML5和CSS3的普及,很多分享按钮也都应用了CSS3样式,甚至会有很多带有动画的CSS3分享按钮.本文就向大家介 ...
- cicm0804吊起
CICS调用方法:cicslterm -r RGCIPS /////////////// CECI LINK P(CICM0804) COMM(F0000000000000000000006) --- ...
- 5.servlet cookie自动登录的实例
1.要建的文档,.java用servlet创建 2.建一张登陆表格 index.jsp <%@ page language="java" import="java. ...