最近在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的更多相关文章

  1. stm32 ARM中的RO、RW和ZI DATA

    一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...

  2. ARM MDK 编译产生:RO、RW和ZI DATA说明

    1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解 ...

  3. Keil编译后的Code,RO,RW,ZI分别表示什么以及和芯片Flash、SRAM的对应关系

    在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:<ignore_js_op> 以前一直好奇这几个参数和实际使用的STM32芯片中F ...

  4. ADS1.2中RO base与RW base

    ARM映像文件 ARM中的各种源文件(包括汇编文件,C语言程序及C++程序等)经过ARM编译器编译后生成ELF(Executable and linking format)格式的目标文件.这些目标文件 ...

  5. Keil MDK中Image~~RW_IRAM1~~ZI~~Limit(~表示$)

    ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别.            一个ARM程序包含3部分:RO, ...

  6. KEIL的ARM编译器对RW和ZI段的一个处理

    按照C编译器编译的结果,一般会产生RO段,RW段,ZI段.RO是程序中的指令和常量,RW是程序中的已初始化全局变量,ZI是程序中的未初始化或初始化为零的全局变量. 那么如下的代码 int aaa; i ...

  7. 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6”

    "System.InvalidOperationException"类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 无法为具有固定名称"MySql. ...

  8. 总结Jquery中获取自定义属性使用.attr()和.data()以及.prop()的区别

    一..attr()和.data()的区别: .attr()和.data()本质上属于DOM属性和Jquery对象属性的区别. 看一个例子: <!DOCTYPE html> <html ...

  9. 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常

    向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...

  10. 在vuejs 中使用axios不能获取属性data的解决方法

    Laravel5.4 vuejs和axios使用钩子mounted不能获取属性data的解决方法 //出错问题:在then 这个里边的赋值方法this.followed = response.data ...

随机推荐

  1. Android Studio使用OpenCV后,使APP不安装OpenCV Manager即可运行

    转载自http://www.cnblogs.com/tail/p/4618790.html 采用静态初始化的方法,可以戳下边的链接查看官方的文档介绍 http://docs.opencv.org/do ...

  2. Android之图片滑动与显示

    先在Transitions中插入ImageSwitcher package com.example.Galleryphotoshow; import com.example.Galleryphotos ...

  3. Sql server For XML Path 学习

    最近看到太多人问这种问题   自己也不太了解  就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...

  4. 解决ashx文件下的Session“未将对象引用设置到对象的实例”

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using PPT_DAL; ...

  5. 桌面虚拟化之XenDesktop7

    安装篇 1. 安装所需要的组件 2. 安装核心组件 配置篇 完整的部署 1. 打开Citrix Studio软件 2. 选择完整部署 3. 创建站点 4. 选择数据库(可以使用自己的或者默认使用自带的 ...

  6. Spring IOC整理

    示例展示 Spring的一大特点是利用配置的xml文件实现依赖注入. 所谓依赖注入是指把一个业务对象注入另一个业务对象,从而达到对象间的松耦合.(注意是业务对象哦!)依赖注入讲的通俗一点,就是让一个对 ...

  7. Makefile 基本知识

    Technorati 标签: Makefile 基本知识   最常见的书写方式: CC = gcc LD = ld STRIP = strip CFLAGS := -Os -static -DEZ_O ...

  8. Linux设备驱动01

    准备: 1.英语-是工具 2.电路原理图-补充“数电”的知识 3.阅读内核代码的能力 linux:vi+ctags+cscope windows:source insight 驱动开发的步骤 I.编辑 ...

  9. $.each遍历json对象

    查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName": ...

  10. linux命令详解之chkconfig命令使用方法

    介绍一个linux常用命令,chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:c ...