使用gcc 工具链开发单片机程序,怎么查看内存映像

这篇具有很好参考价值的文章主要介绍了使用gcc 工具链开发单片机程序,怎么查看内存映像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

  • 一、概述
    • 1.1 功能
    • 1.2 命令格式
    • 1.3 支持的目标文件
  • 二、基本应用示例
    • 2.1 查看单个对象文件
    • 2.2 查看整个工程的内存映像
  • 三、命令选项描述
    • 3.1 以不同的进制格式显示内存映像
      • 示例:以十六进制格式显示
    • 3.2 不同的输出方式
      • 3.2.1 可选的表示方式与对应的选项
      • 3.2.2 -A (–format=sysv) 方式描述
        • 3.2.2.1 使用示例
        • 3.2.2.2 输出
      • 3.2.3 -B (–format=berkeley) 方式描述
        • 3.2.3.1 使用示例
        • 3.2.3.2 输出
      • 3.2.4 -G (–format=gnu) 方式描述
        • 3.2.4.1 使用示例
        • 3.2.4.2 输出

一、概述

1.1 功能

列出二进制文件的内存映像大小。

1.2 命令格式

       size [-A|-B|-G|--format=compatibility]
            [--help]
            [-d|-o|-x|--radix=number]
            [--common]
            [-t|--totals]
            [--target=bfdname] [-V|--version]
            [objfile...]

1.3 支持的目标文件

elf32-littlearm elf32-littlearm-fdpic elf32-bigarm elf32-bigarm-fdpic elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex plugin

二、基本应用示例

2.1 查看单个对象文件

arm-none-eabi-size main.o

2.2 查看整个工程的内存映像

arm-none-eabi-size app.elf

三、命令选项描述

3.1 以不同的进制格式显示内存映像

[-d|-o|-x|--radix=number]
  • -d or —radix = 10 , 以十进制格式(decimal)显示;
  • -o, or --radix=8 ,以八进制格式输出(octal)显示;
  • -x, or --radix=16 ,以十六进制格式输出(hexadecimal)显示;

示例:以十六进制格式显示

arm-none-eabi-size  -x ./build/app.elf

3.2 不同的输出方式

3.2.1 可选的输出方式与对应的选项

输出方式 选项缩写 选项详细表示
类似 System V -A –format=sysv
Berkeley size -B –format=berkeley
GNU size -G –format=gnu

默认输出选项是 -B 即 berkeley 方式。

3.2.2 -A (–format=sysv) 方式描述

3.2.2.1 使用示例
 arm-none-eabi-size  -A -x ./build/app.elf
3.2.2.2 输出
./build/app.elf  :
section                size         addr
.isr_vector           0x1e4    0x8000000
.text                0x4694    0x80001e4
.rodata                0x9c    0x8004878
.init_array             0x4    0x8004914
.fini_array             0x4    0x8004918
.data                  0xdc   0x20000000
.bss                  0xd18   0x200000e0
._user_heap_stack     0x600   0x20000df8
.ARM.attributes        0x29          0x0
.comment               0xa7          0x0
.debug_info         0x1835c          0x0
.debug_abbrev        0x3dd7          0x0
.debug_loc           0xb0d9          0x0
.debug_aranges        0xbf8          0x0
.debug_ranges         0xe88          0x0
.debug_line          0xb221          0x0
.debug_str           0x3dd5          0x0
.debug_frame         0x1bbc          0x0
Total               0x3f61e

如上所示,详细列出了向量表、text、rodata、data、bss、_user_heap_stack 等段的起始地址和size。文章来源地址https://www.toymoban.com/news/detail-805685.html

3.2.3 -B (–format=berkeley) 方式描述

3.2.3.1 使用示例
arm-none-eabi-size  -B -x ./build/app.elf
3.2.3.2 输出
   text    data     bss     dec     hex filename
 0x4914    0xe4  0x1318   23824    5d10 ./build/app.elf
  • 只读变量统计到 text 段,而不是 data 段。
  • dec 和 hex 列分别以十进制和十六进制显示 text、data、bss 三列的和。

3.2.4 -G (–format=gnu) 方式描述

3.2.4.1 使用示例
arm-none-eabi-size  -G -x ./build/app.elf
3.2.4.2 输出
      text       data        bss      total filename
    0x4694      0x364     0x1318     0x5d10 ./build/app.elf
  • 只读变量统计到 data 段,而不是 text 段。

到了这里,关于使用gcc 工具链开发单片机程序,怎么查看内存映像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建

    为摒弃在接受keil邮件,研究了下gun编译,以STM32F407为例,简单记录 Git 选择对应版本直接安装即可https://git-scm.com/download/win make gcc ​ 1)将上述软件包放置于C盘根目录 2)添加环境变量 3)cmd命令行测试环境 分别输入 启动文件及LD文件 目录路径表示问题 字节对齐及指定位置存

    2024年02月07日
    浏览(56)
  • 【51单片机】如何设置中断函数(场景:在定时器工作完跳转到中断程序时,怎么识别我们的中断程序在哪里呢?)

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本章是【利用定时器和中断实现一个简单项目】中的一部分,感兴趣的老铁可以跳转传送门查看 传送门 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专

    2024年02月19日
    浏览(54)
  • 如何使用CH340G模块给51单片机下载程序

    一、首先准备好材料: 1、CH340G下载器USB转TTL模块+3根杜邦线; 2、51单片机STC89C52RC最小系统板; 3、51单片机STC89C52RC; 4、USB转DC005接口的DC电源线; 二、下载程序步骤 1、给最小系统装好晶振和芯片,如下图所示。注意事项:芯片的朝向,有个缺口的地方朝10针简易牛角这边;

    2024年01月17日
    浏览(56)
  • 使用Atmel Studio开发Arduino的ATmega328P单片机

    摘要 :我们知道Arduino开发板常用的芯片是Atmel公司生产的AVR微控制器系列。最常见的是ATmega328P,被广泛用于Arduino Uno开发板。其他常用的AVR芯片包括ATmega2560和ATmega32U4。使用Arduino平台开发AVR的单片机非常方便。Arduino IDE提供了一个非常简洁、易于使用的开发环境,使编写和上

    2024年02月05日
    浏览(41)
  • 在VSCode平台上使用Embedded IDE搭建单片机开发环境

    本文介绍了如何在VSCode平台上通过Embedded IDE插件搭建单片机开发环境,包括软件安装、插件配置、编译器安装和项目构建等步骤。

    2023年04月08日
    浏览(62)
  • 1-0 51单片机keil5的使用和程序的烧写

    上节课中我们已经安装好了keil5,本节课我们将会教你如何使用keil5.打开keil5. 编译环境的简介 这款软件分为菜单栏,工具栏,工程管理区,代码区和信息输出窗口。 A,菜单栏: 用来新建工程,修改这个软件的参数时使用,在以后的使用中,笔者会逐步的进行讲解。 B,工程管

    2023年04月10日
    浏览(46)
  • 定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小

    下面画出等效电路图  可以知道单片机内必然有一个电阻RX,为了简化分析,我们假设他是线性电阻(不带电容,电感的支路) 还有一个基础知识: 电容器的充电放电曲线: 还需要知道电容电压的变化是连续的,(高数知识)无法跳变。 一个很大的误区就是认为电容一上电

    2024年02月12日
    浏览(54)
  • 单片机-芯片怎么看图连接

    单片机连接数码管 硬件连接线路图 单片机中的IO口连接端子 J25  ,J25 连接 2个电阻 PR14 ,引出管脚 P22 ,P23,P24 P22 、P23、P24  连接 3-8 译码器  三输入、8输出  8 输出 ,连接8个LED1~LED8 用到三个芯片: 单片机芯片:STC89C52 3-8 译码器 ---D 74HC138 双 P 沟道增强型 MOS 管---D74HC24

    2024年02月11日
    浏览(40)
  • 单片机怎么实现真正的多线程?

    不考虑多核情况时,CPU在一个时间点只能做一件事,因为切换的速度快所以看起来好像是同时执行多个线程而已。 实际上就是用定时器来做时基,以时间片的方式分别执行来实现的,只不过实现起来细节比较复杂,核心思想就是你猜想的那样。最近很多小伙伴找我,说想要一

    2024年02月04日
    浏览(40)
  • 学习笔记|ADC|NTC原理|测温程序|STC32G单片机视频开发教程(冲哥)|第十九集:ADC应用之NTC

    NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热

    2024年02月07日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包