嵌入式C语言--Pragma Section与Map文件

嵌入式C语言–Pragma Section与Map文件

嵌入式C语言--Pragma Section与Map文件

  • 嵌入式C语言--Pragma Section与Map文件
    • 一. Pragma修饰符
    • 二. Map文件
      • 1)什么是map文件
      • 2)map文件的构成
      • 3)常用的段映射地址
      • 4)map文件生成
    • 三. Section修饰符
      • 1)定义
      • 2)作用

一. Pragma修饰符

#pragma命令的作用: 是设定编译器的状态或者是指示编译器完成一些特定的动作
它是一个预编译指令,它的格式: #pragma 参数
#pragma once保证头文件被编译一次,
#pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译
#pragma resource “.dfm“ 表示把.dfm文件中的资源加入工程.
#pragma warning(disable:4507) 不显示4507警告信息.
#pragma warning(once:4385) : 4385号警告信息仅报告一次;
#pragma warning(error:164) : 把164号警告信息作为一个错误
#pragma pack(n) 从这开始对后面的结构成员进行对齐,既如果结构成员1的大小<n则将成员1扩大到n个大小;  
如果成员1的大小>n则使用成员1的大小.
#pragma comment(lib, “aaa.lib”)添加链接库
#pragma warning( push ) : 保存所有警告信息的现有的警告状态

二. Map文件

1)什么是map文件

map文件是软件编译后产生的有关所有程序、数据及IO空间的一种映射文件。
通过map文件可以知道函数大小,入口地址等一些重要信息。
Map文件可以理解成为它就是程序的地图。

2)map文件的构成

map文件大概分为文件头、内存配置、段映射、全局符号四部分。
段映射部分与cmd文件中的SECTION指令关联,在该部分程序中所有的段实际映射的起始地址与实际长度均有详细说明。可以具体到程序中PROGMA指定的段和各个单独文件产生的obj文件。

3)常用的段映射地址

Section放置位置说明
RO-data位于FLASH中指除了内联数据(inline data)之外的常量数据
RW-data位于RAM中指可读写(RW)、已初始化的变量数据
Rozdata位于RAM中指未初始化(ZI)的变量数据

4)map文件生成

编译后产生,在编译完生成mot文件的同时,生成一个同名的map文件。
在这里插入图片描述

三. Section修饰符

1)定义

使用section关键字可以将我们指定的结构体或变量放入到我们自定义的输入段中
同时函数也可以放到我们自定义的输入段当中。

2)作用

对代码的安全校验、扩展移植都会有很好的效果。
小型项目、独立开发看不出效果,但对复杂的多人合作的项目,合适的关键字对代码的稳定性和架构是锦上添花的。

将函数放入到my_fun这个段当中。
将变量aaa放入到my_val这个段当中。

int __attribute__((section("my_val"))) aaa; 
int __attribute__((section("my_fun"))) test1(int a,int b) 
{ 
return (a+b); 
}

不同编译器对section属性的定义略有差异,但效果相同、在这里可以了解一下。

#if defined(__CC_ARM) || defined(__CLANG_ARM)      		 /* ARM Compiler */
#define SECTION(x)    __attribute__((section(x)))
#elif defined (__IAR_SYSTEMS_ICC__)                     		/* for IAR Compiler */
#define SECTION(x)     @ x
#elif defined (__GNUC__) 					/* GNU GCC Compiler */ 
#define SECTION(x) __attribute__((section(x)))
・・・

在map当中的Section。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/680588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【安装笔记-20240529-Windows-Wireshark 网络协议分析工具】

安装笔记-系列文章目录 安装笔记-20240529-Windows-Wireshark 网络协议分析工具 文章目录 安装笔记-系列文章目录安装笔记-20240529-Windows-Wireshark 网络协议分析工具 前言一、软件介绍名称&#xff1a;Wireshark主页官方介绍 二、安装步骤测试版本&#xff1a;Wireshark-4…

halcon3d算子之get_circle_pose详解

get_circle_pose -从圆的2D投影角度确定圆的3D姿态。 Description 图像中的每个椭圆都可以解释为一个圆在图像中的透视投影。事实上,对于给定半径的圆,在3D中存在两个不同方向的圆,它们会产生相同的投影。get_circle_pose确定这两个圆的3D位置和方向。首先,每个轮廓由一个…

【优选算法】BFS解决FloodFill算法

一、经验总结 什么是FloodFill算法&#xff1f; FloodFill算法是一种用于填充连通区域的算法&#xff0c;通常用于图像处理和计算机图形学中。它从给定的起始点开始&#xff0c;向周围相邻的像素进行扩散填充&#xff0c;直到遇到边界或者其他指定条件停止。 FloodFill算法还…

H5即时通讯群聊源码无限建群创群/H5聊天系统聊天网站源码/H5语音聊天系统

源码介绍 支持自助建群 管理群 修改群资料支持自动登录 登陆成功可自助修改资料后台可查看群组聊天消息记录支持表情 动态表情 图片发布支持消息语音提醒

6月4(信息差)

&#x1f30d;AI预测极端天气提速5000倍&#xff01;微软发布Aurora&#xff0c;借AI之眼预测全球风暴 &#x1f384;理解老司机&#xff0c;超越老司机&#xff01;LeapAD&#xff1a;具身智能加持下的双过程自驾系统&#xff08;上海AI Lab等&#xff09; 论文题目&#xf…

Java_List集合

特点、特有方法 ArrayList : 有序、可重复、有索引。 LinkedList&#xff1a;有序、可重复、有索引。 底层实现不同&#xff01;适合场景不同&#xff01; List 集合的特有方法 List 集合因为支持索引&#xff0c;所以多了很多索引相关的方法&#xff0c;当然&#xff0c;C…

Java多线程核心工具类

1.Thread类&#xff1a;代表一个线程。你可以通过继承Thread类或实现Runnable接口来创建线程。 2.Executor框架&#xff1a;java.util.concurrent.Executors和java.util.concurrent.Executor接口提供了一种创建和管理线程池的方法&#xff0c;可以减少在创建和销毁线程上的开销…

Hive 基本操作

1.启动Hadoop集群 2.将学生信息上传到/bigdata/hive/hive_stu目录下 查看测试数据 3.进入hive,切换到db_test库&#xff08;如没有&#xff0c;可以先创建 create database db_test&#xff09;

webf 开发工具:数据库持久层基础文件生成工具

WZW.SqlMapHelpForJava是运行在.Net Framework4.0上的数据库持久层基础文件生成工具&#xff0c;支持多种关系型数据库的持久层基础文件、Java类的生成以及对配置文件的更新&#xff0c;与webf框架进行紧密配合&#xff0c;减少了数据库持久层基础文件编写工作量&#xff0c;提…

常用运维工具之 WGCLOUD(国产软件)介绍

WGCLOUD是一款免费开源的运维监控软件&#xff0c;轻量高效&#xff0c;部署方便&#xff0c;上手简单&#xff0c;界面简单流畅 WGCLOUD是国产运维软件&#xff0c;可以适配大部分的信创环境&#xff0c;比如麒麟、统信等操作系统 WGCLOUD具体支持监控的操作系统如下&#x…

Qt OPC UA通信

介绍 OPC UA全称Open Platform Unified Architecture&#xff0c;开放平台统一架构&#xff0c;是工业自动化领域通用的数据交换协议&#xff0c;它有两套主要的通信机制&#xff1a;1.客户端-服务器通信&#xff1b;2.发布订阅。Qt对OPC UA通信标准也提供了支持&#xff0c;目…

【前端】微信小程序前端开发通过weixin://wxpay/bizpayurl生成支付二维码

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xff1a;洲与AI。 &#x1f913; 欢迎大家关注我的专栏&#xff0c;我将分享Web前后端开发、…

2024深圳市福田区幼儿园地图小程序

根据深圳教育2024年福田区幼儿园名单制作了一个简单的幼儿园地图。 数据来源&#xff1a;https://www.szftedu.cn/gk/xxxx/202302/t20230203_143313.html 2024年福田区幼儿园名单&#xff1a;https://www.szftedu.cn/gk/xxxx/202302/P020240402526108008524.pdf 源码&#x…

代理记账公司的五大问题及其解决方案

代理记账公司是现代企业管理中不可或缺的一部分&#xff0c;它为企业的日常运营提供了专业、高效的服务&#xff0c;随着行业的发展和竞争的加剧&#xff0c;代理记账公司的面临的问题也日益突出&#xff0c;这些问题主要表现在以下几个方面&#xff1a; 业务流程不规范 许多代…

腾讯云centos上安装docker

下面的操作是在root用户下操作的,如果非root用户在命令行前加上sudo 1. 系统及内核查看 操作系统&#xff1a;64位的CentOS 7或更新版本。内核版本&#xff1a;最低要求是3.10&#xff0c;推荐使用3.10或更高版本。 #查看内核版本 (base) [klfwjfweaVM-0-6-centos ~]$ uname…

Java-springBoot常用注解讲解

一、Configuration 注解和Bean 注解 Configuration 可以理解为spring xml配置中的<beans>标签,Bean可理解为用spring的时候xml里面的<bean>标签Configuration 注解的是类,Bean 注解域为方法,对象在Spring Boot 5.2之后的Configuration注解多了一个属性proxyBeanMet…

数据结构:一般哈希

数据结构&#xff1a;一般哈希 题目描述参考代码拉链法开放寻址法 题目描述 输入样例 5 I 1 I 2 I 3 Q 2 Q 5输出样例 Yes No参考代码 拉链法 #include <iostream> #include <cstring> using namespace std;const int N 100003;int h[N], e[N], ne[N], idx;vo…

基于PHP+MySQL开发的一套游泳馆预约报名小程序开发源码模板

最近新开发了一套游泳馆线上预约报名小程序&#xff0c;其主要功能有预约功能&#xff0c;报名功能&#xff0c;支付功能&#xff0c;个人中心&#xff0c;订单管理&#xff0c;商品管理等等。 游泳馆预约报名小程序系统-运行环境 开发语言&#xff1a;PHP 数据库&#xff1a;M…

对接专有钉钉(浙政钉)登陆步骤

背景 因为项目需要对接浙政钉&#xff0c;我想应该和之前对接阿里云的钉钉登陆钉钉登陆类似&#xff0c;就上网搜索看看&#xff0c;出现了个专有钉钉的概念&#xff0c;就一时间搞不清楚&#xff0c;钉钉&#xff0c;专有钉钉&#xff0c;浙政钉的区别&#xff0c;后续稍微理…

向阳而生,逐光而行。—定制化系统解决方案—

风之所及&#xff0c;皆有麦浪 目之所及&#xff0c;皆为所向