ARM 编译产生.map之RO RW ZI】的更多相关文章

RO:  程序中的指令和常量,存储在常量和代码区,因为是不能改变的,所以—READ ONLY; RW: 程序中的已初始化全局变量和静态变量,存储在堆中,因为是变量,所以——READ AND WRITE; ZI:   程序中的未初始化的全局变量和静态变量,存储在堆中. ============================================================================== Code (inc. data)      RO Data      RW…
源文件内使用unordered_map时候,例如如下demo #include <unordered_map> void foo(const std::unordered_map<int,int> &) {} int main() { foo({}); } GCC版本大于或者等于4.9,会报如下错误 map2.cpp:7:19: error: converting to ‘const std::unordered_map<int, int>’ from init…
原文地址:http://www.cnblogs.com/hongzg1982/articles/2205093.html 1. 程序的空间属性 一般情况下,一个程序本质上都是由 bss段.data段.text段三个组成的——本概念是当前的计算机程序设计中是很重要的一个基本概念.而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题. BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Blo…
参考博文http://bluegemyf.blog.163.com/blog/static/11816340201310472751513/ 1.安装必要的开发包 sudo apt-get  install yum gawk g++ automake1.11 autoconf2.64   2.下载phddns-2.0.2.16556.tar.gz到某一个目录 wget http://download.oray.com/peanuthull/phddns-2.0.5.19225.tar.gz  …
1) 下载gd的各种依赖包. 但是不要下载gd本身,因为这是包含在php里的. 探索的时候也下载了 libvpx freetype,可惜最后的编译没过,就没有用上 2)编译各种(编译前记得把各种环境变量设上,这里我就直接用以前写好的cross-env.sh) -- libvpx xz -d libvpx-v1.3.0.tar.xz tar -xvf libvpx-v1.3.0.tar cd libvpx-v1.3.0 ./configure --prefix=/h1root/usr/libvpx…
目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑器编辑的时候进行代码编译和下载,通常我们比较喜欢的编辑器有下面一些,不是很全. _____________________________________ 常用的第三方编辑器介绍 Visual Studio 2010 - 2017 Windows 下面的VS工具配上番茄助手写代码爽的不得了,并且现在…
这个版本的httpd 已经自带 apr apr-util pcre , 不用额外下载源代码 1) 编写环境变量脚本,并执行 cross-env.sh : export ARMROOTFS=/h1root export CPP="/usr/bin/arm-linux-gnueabi-cpp-4.4" export CC="/usr/bin/arm-linux-gnueabi-gcc-4.4" export CXX="/usr/bin/arm-linux-gn…
写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性进行验证,对那些直接与CPU 相关的目标代码进行安全性分析: 涉及的主要内容 分析ARM处理器指令的特点,以及编译以后可执行的二进制文件代码的特征: 将二进制机器代码经过指令和数据分开模块的加工处理: 分解标识出指令代码和数据代码: 然后将指令代码反汇编并加工成易于阅读的汇编指令形式的文件: 下面给…
1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成            此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别.            一个ARM程序包含3部分:RO,RW和ZI.RO是程序中的指令和常量:R…
1.Keil程式编译完之后,在List目录下会生成一个.map文件,里面包含各个存储块数据大小. Code:ARM 指令. RO(Read only)只读数据,如const int gu8test = 1; RW(Read write)可读写数据,就是我们常说的变量,已经被初始的变量才是RW; eg: uint8_t gu8Test = 1; ZI:Zero Init数据,就是不初始化,或者用0初始化的变量. PS:不管是(RW / ZI) data申明之后,如果没有使用,不会占用RAM空间!!…
[转载]:http://blog.csdn.net/yhmhappy2006/article/details/1673203 ARM ADS集成开发环境的使用 在这里,将介绍ARM开发软件ADS(ARM Developer Suite).通过学习如何在CodeWarrior IDE集成开发环境下编写,编译一个工程的例子,使读者能够掌握在ADS软件平台下开发用户应用程序.本章还描述了如何使用AXD调试工程,使读者对于调试工程有个初步的理解,为进一步的使用和掌握调试工具起到抛砖引玉的作用. 本章主要…
对ARM加载域和运行域的理解 一般而言,一个程序包括只读的代码段和可读写的数据段.在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly):可读写的全局变量和静态变量被称作RW段(ReadWrite):RW段中要被初始化为零的变量被称为ZI段(ZeroInit).对于嵌入式系统而言,程序映象都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中.这就涉及到程序的加载时域和运行时域.简单来说,程序的加载时域就是指程序烧入Fla…
可以选择nand启动和nor启动,这两者之间的关系通过一个按键来选择 这个OM0有何玄机,在数据手册中有这么一段 位宽RAM启动了(当然,还得设置一些东西,下面就说), Nanaflash启动经历的过程相当于首先,2440自动从nand里面读取4K的代码,这4K代码将nand里面的数据拷贝到ram中,然后跳转到ram中执行代码,为什么是4K,因为 2440.s的启动代码需要包含几个文件 2440addr.inc 内部寄存器地址 Memcfg.inc 各个bank的内存配置数据 Option.in…
我们开发软件的时候,经常会遇到到一个问题,就是内存不够,这个时候就纠结了,怎么办,有两种方法,第一种是扩展内存,外加SRAM或者SDRAM:第二种应该就是优化代码,也就是通常所说的把数组大小减一减,代码量缩一缩,变量啥的能少就少.两种方法都不错,但是我觉得一般情况下采用第二种方法最终会以功能减弱为代价完成的,这是以我的水平来看的,因为我觉得要在不影响功能的情况下进行比较大的缩减,确实比较困难,这需要对该系统了解比较深入,要不然很难做到. 这两天我也遇到了这个问题,没怎么想,就打算用第一种方法,因…
在使用KEIL做F4的项目的时候发现RAM区有片上IRAM2选项,查了datesheet后发现这块是CCM内存区 CCM内存是在地址0x1000000映射的64KB块,只提供CPU通过数据D总线进行访问.如何利用这块内存呢? 首先打开工程配置,如上,对IRAM2进行勾选 双击工程文件夹,打开.map,可以看到RW_IRAM2已经使用 但因为这段内存是只能CPU访问的,一旦将数据分配至CCM内存,而同时使用了DMA访问他,那么就会出现问题,如何避免这种情况发生呢 我们可以自己来直接分配 将需要的数…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下将关键函数重定向到RAM中执行的几种方法. 这个关键函数重定向到 RAM 中执行系列文章,痞子衡已经写过 <IAR篇>.<MCUXpresso IDE篇>,今天一鼓作气把 Keil MDK 篇也写了,做个全家桶. 把 Keil MDK 放到最后来写,其实痞子衡是有用意的.第一篇写 IAR,我们基本上是要纯手工改链接文件.第二篇写 MCUXpresso IDE,我们除了手工改链接文件,也在利用它的链接文…
DS-5教程-使用ARM DS-5 和DSTREAM仿真器调试裸机程序 http://bbs.elecfans.com/jishu_453909_1_1.html i2c( 楼主 )2014-10-13 18:23:10  只看该作者8237 | 0倒序浏览 1 概述         本文介绍使用ARM DS-5创建一个裸机程序,并用DS-5里面的ARM编译器进行编译,编译之后通过DSTREAM仿真器将程序加载到MYD-SAMA5D34开发板的SRAM(内存)上. 通过DS-5和DSTREAM,…
原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 以下为摘抄: 一:什么时候使用sca…
KEIL下分散加载文件的使用   对于分散加载的概念,在<ARM体系结构与编程>书中第11章有明确介绍. 分散加载文件(即scatter file 后缀为.scf)是一个文本文件,通过编写一个分散加载文件来指定ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址.如果不用SCATTER文件指定,那么ARM连接器会按照默认的方式来生成映像文件,一般情况下我们是不需要使用分散加载文件的. 但在某些场合,我们希望把某些数据放在指定的地址处,那么这时候SCATTER文件就发挥了非常大的…
STM32的分区从0x2000 0000开始.静态区,堆,栈. 所有的全局变量,包括静态变量之类的,全部存储在静态存储区.紧跟静态存储区之后的,是堆区(如没用到malloc,则没有该区),之后是栈区,栈在程序中存储局部变量 先看启动文件startup_stm32f10x_md.s的定义: ; Amount of memory (in bytes) allocated for Stack; Tailor this value to your application needs; <h> Stac…
7.1 About scatter-loading The scatter-loading mechanism enables you to specify the memory map of an image to the linker using a description in a text file. Scatter-loading gives you complete control over the grouping and placement of image components…
杂记 前言 我总是很希望自己能产生一种感知电压变化的能力,就像B站上的教学动图中,电流从电源流出时导线就像LED亮起来一样,我将指尖触到导线上就能感受到实时的电压变化.我在上学和工作时经常由于无法理解或者认知错误陷入非常迷惘和痛苦中,比如在我理解数学和电磁场的基本理论时,或者我的代码运行中出现了我认…
转:https://blog.csdn.net/zuixin369/article/details/76195186?locationNum=7&fps=1 Keil MDK编译器完成编译链接后,在调试窗口会出现Code,RO,RW,ZI 四种内存分配区域,下面说明其中的意思. Code区:代码区.该区域除了存放指令外,还有全局.静态及局部变量的初始化值.当函数被调用时,该函数用code区内局部变量初始化值来初始化堆栈区内分配的局部变量. RO区:常量区.该区域存放那种类型的数据呢?有字符串常量…
我想让我的程序运行在RAM中而不是在SPI FLASH上,写了一个scatterfile: ROM 0x00000000 0x00200000 ;spi flash{STARTUP +0 { startup.o(RESET, +First) ;*(+RO) }RO 0x20000000 0x00020000 ;运行地址RAM中 { *(+RO) *(+RW) *(+ZI) }} 链接时出现错误: Error: L6202E: entry.o(.ARM.Collect$$$$00000000) c…
SRAM2存储: 1.挂接总线及地址大小 2.地址镜像 3.RDP(read protection)等级 4.不同等级下的访问状态 5.声明位于SRAM2区中的数据 1)在icf文件中定义region 每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件.对于基本的应用,这个.icf文件足以满足你的工程需要.但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf. 给MEM1.MEM2.MAPPING_TABLE添加了region区,定义region区大小位置…
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:<ignore_js_op> 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜了一圈,做如下总结: 这些参数的单位是Byte 图中几个参数分别代表  Code:代码的大小 RO:常量所占空间 RW:程序中已经初始化的变量所占空间 ZI:未初始化的static变量和全局变量以及堆栈所占的空间 上述参数和芯片Flash以及SRAM的对应关系是  Fl…
编译的一个ARM的程序,会得到这样的信息: ============================================================================== Code (inc. data) RO Data RW Data ZI Data Debug 2730 194 250 8 96 16068 Grand Totals 2730 194 250 8 96 16068 ELF Image Totals 2730 194 250 8 0 0 ROM T…
函数代码://demo.c #include<stdio.h> #include<stdlib.h> , global2 = , global3 = ; void function(void) { , local5 = , local6 = ; , static5 = , static6 = ; int *p2 = (int*)malloc(sizeof(int)); printf("子函数 局部变量 : \n"); printf("local4 :…
MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是很有帮助的,在有arm9开发的基础上,下面的东西很容易理解,如果看不懂,证明你还没有入门.下面的是从world复制过来的,格式和博客不太兼容,所有开始以字母q的,是world中的 □ 字符) 本章参考资料: MDK 的帮助手册<ARM Development Tools>,点击 MDK 界面的 “help->uVision Hel…
第48章     MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:MDK的帮助手册<ARM Development Tools>,点击MDK界面的"help->uVision Help"菜单可打开该文件.关于ELF文件格式,参考配套资料里的<ELF文件格式>文件. 在本章中讲解了非常多的文件类…