C语言中__attribute__ ((at())绝对定位的应用
__attribute__( at(绝对地址) )的作用分两个,一个是绝对定位到Flash,另个一是绝对定位到RAM。
1、定位到flash中,一般用于固化的信息,如出厂设置的参数,上位机配置的参数,ID卡的ID号,flash标记等等。
1 const u16 gFlashDefValue[512] __attribute__((at(0x0800F000))) = {0x1111,0x1111,0x1111,0x0111,0x0111,0x0111};//定位在flash中,其他flash补充为00 2 3 const u16 gflashdata__attribute__((at(0x0800F000))) = 0xFFFF;
2、定位到RAM中,一般用于数据量比较大的缓存,如串口的接收缓存,再就是某个位置的特定变量
1 u8 USART2_RX_BUF[USART2_REC_LEN] __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.
注意:
1、绝对定位不能在函数中定义,局部变量是定义在栈区的,栈区由MDK自动分配、释放,不能定义为绝对地址,只能放在函数外定义。
2、定义的长度不能超过栈或Flash的大小,否则,造成栈、Flash溢出。
转自:https://www.cnblogs.com/xyelectric/p/9046048.html
转载于:https://www.cnblogs.com/leo0621/p/9977752.html
C语言中__attribute__ ((at())绝对定位的应用相关推荐
- c语言弱符号与函数指针,浅谈C语言中的强符号、弱符号、强引用和弱引用【转】...
首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...
- C语言:__attribute__((weak)) 弱符号与__attribute__ ((weakref())弱引用
C语言中的__attribute__((weak)) 与 __attribute__((weakref()) 引言:最近在看 linux 中一些驱动代码.驱动代码中为了实现程序的扩展性和兼容性用了很多 ...
- c语言packed,C 语言中 __packed
关键字: __packed,C语言,内存对齐 [正文] 简单的说,__packed用于表示C语言中结构的压缩,即:没有填充和对齐. 定义如下: __packed struct P { ... }; s ...
- 详解 C 语言中的弱符号与弱引用
C语言中的__attribute__((weak)) 与 attribute ((weakref()) 引言:最近在看 linux 中一些驱动代码.驱动代码中为了实现程序的扩展性和兼容性用了很多 C ...
- Go 知识点(19)— Go 语言中的野指针
野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...
- 单片机c语言中的循环语句,单片机c语言教程:C51循环语句
循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 1000 次空语句 才能达到延时的目的( ...
- python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...
在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...
- 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节
C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...
最新文章
- HLSL Texture Object Sample 的一些笔记
- XenApp_XenDesktop_7.6实战篇之十五:StoreFront的配置
- 正则表达式,VI,SED及shell编程2010-12-05
- dockerfile的详细介绍
- 如何找到Angular应用的某个directive是属于哪一个Angular module
- angularJs中的发送请求例子
- NDK 在 Android studio如何使用(Android studio NDK)
- 由需求而产生的一款db导出excel的工具
- Java基础0309
- java下载文件加速_使用Java优化下载速度
- bigemap地图下载器与91位图有何区别
- windows添加hosts
- 万字总结Linux内核过滤框架(Nftables)
- 医院新手入门(一)--医保知识
- 关于推进海洋测绘工作的思考
- MySQL——为表和字段取别名
- 记录Mybatis报Mapped Statements collection already contains value for 的错误的原因
- 1万条数据大概占多大空间_快递信息泄露背后:40元可买超4G简历数据
- 人生如画,一笔一足迹,一步一脚印
- 浩顺考勤机二次开发(第二版,附实测可用的demo)
热门文章
- 20155307 2016-2017 《Java程序设计》第三次实验报告
- 《MySQL必知必会》[01] 基本查询
- 福建工程学院寒假作业G题
- 安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1
- TigerDLNA for ios 集成Tlplayer
- WEB文件上传之JQuery ajaxfileupload插件使用(二)
- CSS3笔记之基础篇(三)文字与字体
- Thread.getContextClassLoader与Thread.getClassLoader()区别
- es6 --- 使用proxy对数据进行劫持
- 第二十二章:动画(六)