当前位置: 首页 > article >正文

【编译链接】什么是Copy Table及如何使用Copy Table

目录

前言

正文

1.GHS编译器

1.1. Clear and Copy Tables

1.2 Ifx_Ssw_C_InitInline实现

2.GNU编译器

2.1 Clear and Copy Tables

2.2 Ifx_Ssw_C_InitInline实现

3.Tasking编译器

3.1 Clear and Copy Tables

3.2 Ifx_Ssw_C_InitInline实现

3.3 调试分析

4.总结


前言

嵌入式工程师应该都知道没有初始值的全局变量或者静态局部变量存放在.BSS段,有初始值的全局变量或者静态局部变量存放在.DATA段,芯片上电后我们需要将.BSS段都初始化为0值,将ROM中保存的全局变量或者静态局部变量的初始值拷贝到RAM中也就是.DATA段中。

那么问题来了,在哪个地方进行.BSS段清零以及.DATA段中RAM初始值的拷贝了?

熟悉英飞凌TC3xx芯片的朋友应该知道英飞凌芯片的启动分为6个阶段(Phase1 - Phase6),在__StartUpSoftware_Phase6()中完成.BSS段和.DATA段的初始值拷贝。TC3xx芯片的启动流程参考以下的文章:

参考文章:https://zhuanlan.zhihu.com/p/644563274

如下图所示,最终由Ifx_Ssw_C_InitInline()函数完成初始化C运行时变量,也就说.BSS段的清零及.DATA段的初始化。

Ifx_Ssw_C_InitInline()函数的具体实现根据编译的不同而不同,本文就来介绍3个常用编译器如何完成


http://www.kler.cn/a/407101.html

相关文章:

  • ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略
  • Flutter:shared_preferences数据存储,数据持久化,token等信息存储
  • 三层交换机静态路由实验
  • 单头蜗杆铣刀计算——记录一下
  • Nuxt3:拉取项目模板失败问题解决方法
  • 设计模式之创建模式篇
  • 【MYSQL】七种 SQL JOINS 的实现
  • RabbitMQ学习-One
  • 关于图论建模的一份介绍
  • 代理IP在后端开发中的应用与后端工程师的角色
  • 企业级服务器BIOS配置
  • 培训机构中教务系统的架构设计与实现
  • STM32 蜂鸣器报警
  • 设计模式之 适配器模式
  • Redis自学之路—高级数据结构具体方法解析(六)
  • <硬件有关> 内存攒机认知入门,内存的选择 配置 laptop PC 服务器
  • Wekan看板安装部署与使用介绍
  • 使用OpenSSL创建CA,并基于CA创建证书
  • ctfshow
  • 彻底理解Redis的持久化方式
  • type和interface的区别
  • 蓝队基础,网络七杀伤链详解
  • [C语言]第十三节 指针一基础知识到高级技巧的全景探索
  • BERT的中文问答系统39
  • 4644 DCDC电源芯片在相控阵雷达的应用(完整版)
  • Metasploit模块具体有哪些?