关于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 ...
随机推荐
- codevs1011 数的计算 2001年NOIP全国联赛普及组
题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1. 不 ...
- Java之阶乘数的计算
说起“阶乘数”,我们应该都不会感到陌生.当老师布置了这样的作业,我们大多数人是一贯用笔算,还有的同学会用计算机去计算.数学是讲究原理和方法的,我们知其然,也要知其所以然.下面我们就用编程来计算阶乘数. ...
- (火炬)MS SQL Server数据库案例教程
(火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...
- 项目经理PPT演讲意见
1.语速 2.互动 3.平常语气,聊天的感觉去讲解 4.脱稿演讲,不要照着PPT读,PPT展示仅仅是一个重点提示,更多在于自己讲解 5.如果是验收等相关的内容,劲量多讲解用户能够得到的利益,如“钱” ...
- UI3_UIViewController生命周期
// // SecondViewController.h // UI3_UIViewController生命周期 // // Created by zhangxueming on 15/7/2. // ...
- Linux 静态库与动态库搜索路径设置详解【转】
原文地址:http://blog.chinaunix.net/uid-29025972-id-3855495.html 1. 连接和运行时库文件搜索路径的设置 库文件在连接(静态库和共享库)和运行(仅 ...
- Redhat/Centos6.x-Samba配置
安装: yum -y install samba samba-common samba-client 设置samba帐号 useradd smb passwd smb smbpasswd -a smb ...
- Grunt 构建SeaJS
GitHub地址:https://github.com/MrLeo/SeaJS 目录结构 目录结构说明 web存放HTML文件 static存放所有HTML需要用到静态资源文件(css.js.img- ...
- 多线程更新已排序的Datagridview数据,造成数据错位
多线程更新已排序的Datagridview数据,触发Datagridview的auto-sort时间,数据重新排序,造成后面更新数据的更新错误. 解决方法: 方法一.设置Datagridview的表头 ...
- HTML5 Shiv – 让该死的IE系列支持HTML5吧
HTML5能为我们做的事儿很多,最为可口的就是语义化标签的应用,如果你已经在Chrome或者其他支持HTML5的浏览器上用过它的牛x,那这篇文章对你一定有用,因为现在你也可以在IE上用到HTML5. ...