历史上的今天
返回首页

历史上的今天

今天是:2025年02月02日(星期日)

2020年02月02日 | STM32F103ZET XXX.map的可执行映像分析

2020-02-02 来源:eefocus

可执行映像文件的逻辑结构,总共分7大部分:

一、Section Cross References 交叉引用部分

二、Removing Unused input sections from the image.从映像文件中删除输入段中未使用段的统计信息,对应参数-remove

三、Image Symbol Table 映像符号表:域符号映射和全局、局部符号及生成符号映射统计信息,对应参数-symbol

四、Memory Map of the image 印象文件的信息图,对应参数-map,该信息中包含映像文件中的每个加载域、运行域和输入段的大小和地址(工程每个文件的对象obj在存储器中的映射)


PS:要生成此文件,需要设置一下,如下图


五、Image component sizes 映像文件的每个输入文件或库的RO、RW、ZI等统计信息,对应参数-info sizes(工程每个文件按的对象obj的大小)

六、Code (inc. data)   RO Data    RW Data    ZI Data      Debug  XXX工程编译链接后Debug版本的各部分的Program Size

七、//XXX工程最终的Program Size

    Total RO  Size (Code + RO Data)                19124 (  18.68kB)

    Total RW  Size (RW Data + ZI Data)             17264 (  16.86kB)

    Total ROM Size (Code + RO Data + RW Data)      21492 (  20.99kB)



附XXX对应的工程全部映像如下:


Component: ARM Compiler 5.05 update 2 (build 169) Tool: armlink [4d0f33]


==============================================================================

Section Cross References



    stm32f10x_adc.o(i.ADC_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_tim.o(i.TIM_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_tim.o(i.TIM_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB1PeriphResetCmd) for RCC_APB1PeriphResetCmd

    stm32f10x_tim.o(i.TIM_ETRClockMode1Config) refers to stm32f10x_tim.o(i.TIM_ETRConfig) for TIM_ETRConfig

    stm32f10x_tim.o(i.TIM_ETRClockMode2Config) refers to stm32f10x_tim.o(i.TIM_ETRConfig) for TIM_ETRConfig

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TI1_Config) for TI1_Config

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TIM_SetIC1Prescaler) for TIM_SetIC1Prescaler

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TI2_Config) for TI2_Config

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TIM_SetIC2Prescaler) for TIM_SetIC2Prescaler

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TI3_Config) for TI3_Config

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TIM_SetIC3Prescaler) for TIM_SetIC3Prescaler

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TI4_Config) for TI4_Config

    stm32f10x_tim.o(i.TIM_ICInit) refers to stm32f10x_tim.o(i.TIM_SetIC4Prescaler) for TIM_SetIC4Prescaler

    stm32f10x_tim.o(i.TIM_ITRxExternalClockConfig) refers to stm32f10x_tim.o(i.TIM_SelectInputTrigger) for TIM_SelectInputTrigger

    stm32f10x_tim.o(i.TIM_PWMIConfig) refers to stm32f10x_tim.o(i.TI1_Config) for TI1_Config

    stm32f10x_tim.o(i.TIM_PWMIConfig) refers to stm32f10x_tim.o(i.TIM_SetIC1Prescaler) for TIM_SetIC1Prescaler

    stm32f10x_tim.o(i.TIM_PWMIConfig) refers to stm32f10x_tim.o(i.TI2_Config) for TI2_Config

    stm32f10x_tim.o(i.TIM_PWMIConfig) refers to stm32f10x_tim.o(i.TIM_SetIC2Prescaler) for TIM_SetIC2Prescaler

    stm32f10x_tim.o(i.TIM_TIxExternalClockConfig) refers to stm32f10x_tim.o(i.TI2_Config) for TI2_Config

    stm32f10x_tim.o(i.TIM_TIxExternalClockConfig) refers to stm32f10x_tim.o(i.TI1_Config) for TI1_Config

    stm32f10x_tim.o(i.TIM_TIxExternalClockConfig) refers to stm32f10x_tim.o(i.TIM_SelectInputTrigger) for TIM_SelectInputTrigger

    stm32f10x_usart.o(i.USART_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_usart.o(i.USART_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB1PeriphResetCmd) for RCC_APB1PeriphResetCmd

    stm32f10x_usart.o(i.USART_Init) refers to stm32f10x_rcc.o(i.RCC_GetClocksFreq) for RCC_GetClocksFreq

    stm32f10x_gpio.o(i.GPIO_AFIODeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_gpio.o(i.GPIO_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_rcc.o(i.RCC_GetClocksFreq) refers to stm32f10x_rcc.o(.data) for APBAHBPrescTable

    stm32f10x_rcc.o(i.RCC_WaitForHSEStartUp) refers to stm32f10x_rcc.o(i.RCC_GetFlagStatus) for RCC_GetFlagStatus

    stm32f10x_spi.o(i.I2S_Init) refers to stm32f10x_rcc.o(i.RCC_GetClocksFreq) for RCC_GetClocksFreq

    stm32f10x_spi.o(i.SPI_I2S_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB2PeriphResetCmd) for RCC_APB2PeriphResetCmd

    stm32f10x_spi.o(i.SPI_I2S_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB1PeriphResetCmd) for RCC_APB1PeriphResetCmd

    stm32f10x_flash.o(i.FLASH_EnableWriteProtection) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_EraseAllBank1Pages) refers to stm32f10x_flash.o(i.FLASH_WaitForLastBank1Operation) for FLASH_WaitForLastBank1Operation

    stm32f10x_flash.o(i.FLASH_EraseAllPages) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_EraseOptionBytes) refers to stm32f10x_flash.o(i.FLASH_GetReadOutProtectionStatus) for FLASH_GetReadOutProtectionStatus

    stm32f10x_flash.o(i.FLASH_EraseOptionBytes) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_ErasePage) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_ProgramHalfWord) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_ProgramOptionByteData) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_ProgramWord) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_ReadOutProtection) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_UserOptionByteConfig) refers to stm32f10x_flash.o(i.FLASH_WaitForLastOperation) for FLASH_WaitForLastOperation

    stm32f10x_flash.o(i.FLASH_WaitForLastBank1Operation) refers to stm32f10x_flash.o(i.FLASH_GetBank1Status) for FLASH_GetBank1Status

    stm32f10x_flash.o(i.FLASH_WaitForLastOperation) refers to stm32f10x_flash.o(i.FLASH_GetBank1Status) for FLASH_GetBank1Status

    stm32f10x_pwr.o(i.PWR_DeInit) refers to stm32f10x_rcc.o(i.RCC_APB1PeriphResetCmd) for RCC_APB1PeriphResetCmd

    startup_stm32f10x_hd.o(RESET) refers to startup_stm32f10x_hd.o(STACK) for __initial_sp

    startup_stm32f10x_hd.o(RESET) refers to startup_stm32f10x_hd.o(.text) for Reset_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.NMI_Handler) for NMI_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.HardFault_Handler) for HardFault_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.MemManage_Handler) for MemManage_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.BusFault_Handler) for BusFault_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.UsageFault_Handler) for UsageFault_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.SVC_Handler) for SVC_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.DebugMon_Handler) for DebugMon_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.PendSV_Handler) for PendSV_Handler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.SysTick_Handler) for SysTick_Handler

    startup_stm32f10x_hd.o(RESET) refers to hardware.o(i.EXTI1_IRQHandler) for EXTI1_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.DMA1_Channel6_IRQHandler) for DMA1_Channel6_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.DMA1_Channel7_IRQHandler) for DMA1_Channel7_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.USB_LP_CAN1_RX0_IRQHandler) for USB_LP_CAN1_RX0_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to hardware.o(i.EXTI9_5_IRQHandler) for EXTI9_5_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to driver.o(i.TIM2_IRQHandler) for TIM2_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to driver.o(i.TIM3_IRQHandler) for TIM3_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to driver.o(i.TIM4_IRQHandler) for TIM4_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to serial.o(i.USART1_IRQHandler) for USART1_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to stm32f10x_it.o(i.USBWakeUp_IRQHandler) for USBWakeUp_IRQHandler

    startup_stm32f10x_hd.o(RESET) refers to driver.o(i.TIM5_IRQHandler) for TIM5_IRQHandler

    startup_stm32f10x_hd.o(.text) refers to system_stm32f10x.o(i.SystemInit) for SystemInit

    startup_stm32f10x_hd.o(.text) refers to entry.o(.ARM.Collect

00000000) for __main

    communicate.o(i.comm_cmd_check_valid) refers to communicate.o(.bss) for comm_recv_buf

    communicate.o(i.comm_cmd_check_valid) refers to main.o(.data) for sender_addr

    communicate.o(i.comm_cmd_check_valid) refers to communicate.o(.data) for cmd_num_this_time

    communicate.o(i.comm_cmd_execution) refers to driver.o(i.timer) for timer

    communicate.o(i.comm_cmd_execution) refers to communicate.o(i.comm_cmd_check_valid) for comm_cmd_check_valid

    communicate.o(i.comm_cmd_execution) refers to printf8.o(i.__0printf$8) for __2printf

    communicate.o(i.comm_cmd_execution) refers to printf8.o(i.__0sprintf$8) for __2sprintf

推荐阅读

史海拾趣

港源(GANGYUAN)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,凡是与电视机连接的网络终端设备均可视为机顶盒,其功能已远不止于简单的信号转换。机顶盒不仅能够接收来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,并将其转换为适合电视机播放的格式,还集成了众多增值服务,如电子节目指南、因特网网页浏览等。

在数字电视时代,机顶盒扮演了至关重要的角色。它不仅让用户能够在模拟电视上观看高清乃至4K的超高清电视节目,享受更为细腻的画面和震撼的音效,还赋予了电视机网络交互的能力。通过机顶盒,用户可以轻松接入互联网,进行在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为与用户互动的智能终端。

随着技术的不断进步,机顶盒的功能也在不断扩展。智能化技术的应用,如语音助手、智能推荐等,进一步提升了用户体验。同时,高清、超高清技术的普及,以及云计算、边缘计算等技术的结合,为机顶盒提供了更为高效的内容分发和管理能力。未来,随着5G、虚拟现实和增强现实等新技术的融入,机顶盒的娱乐、教育等应用将更加广泛,为用户带来更为沉浸式和互动式的观影体验。

综上所述,机顶盒作为连接电视与外部信号源及互联网的桥梁,正以其丰富的功能和不断升级的技术,为现代家庭娱乐生活带来前所未有的便捷与享受。

ADLINK公司的发展小趣事

ADLINK 是一家全球领先的嵌入式计算解决方案提供商,以下是该公司发展的五个相关故事:

  1. 公司创立与初期发展: ADLINK 成立于1995年,总部位于台湾新北市。公司专注于为工业自动化、通讯、医疗保健、交通运输等领域提供高性能的嵌入式计算和连接解决方案。在创立初期,ADLINK 主要专注于硬件产品的开发和销售,如嵌入式计算板卡、模块、工业计算机等。

  2. 技术创新与产品扩展: 随着市场需求的不断变化和技术的发展,ADLINK 不断进行技术创新,积极拓展产品线。除了传统的嵌入式计算硬件产品外,公司还推出了嵌入式操作系统、软件工具和解决方案等,以满足客户在物联网、人工智能、工业4.0 等领域的需求。

  3. 全球业务布局与国际化发展: ADLINK 在全球范围内建立了广泛的销售网络和服务体系,拥有多个全球研发和生产基地,并在美国、欧洲、亚洲等地设有分支机构和办事处。通过与全球领先企业的合作和市场拓展,ADLINK 的产品和解决方案已经覆盖了全球100多个国家和地区。

  4. 合作伙伴关系与客户案例: ADLINK 与世界各地的行业领先企业建立了紧密的合作伙伴关系,共同开发创新性的解决方案,应用于工业自动化、智能交通、医疗保健等领域。例如,公司与德国西门子、美国英特尔等知名企业合作,在工业物联网、边缘计算等领域取得了一系列成功案例。

  5. 未来展望与持续发展: 面对快速变化的市场环境和日益激烈的竞争,ADLINK 将继续致力于技术创新和产品研发,不断提升解决方案的质量和性能,以满足客户日益增长的需求。公司将继续秉承“创新、合作、可靠”的核心价值观,努力成为全球领先的嵌入式计算和连接解决方案提供商。

Alpha-Micro Electronics公司的发展小趣事

Alpha-Micro Electronics是一家提供嵌入式系统解决方案的公司,专注于设计和制造微控制器、传感器和其他嵌入式设备。以下是关于Alpha-Micro Electronics公司发展的五个相关故事:

  1. 公司成立:Alpha-Micro Electronics公司成立于1982年,总部位于德国斯图加特。公司的创始人是一群电子工程师,他们致力于为各种应用领域提供高性能的嵌入式系统解决方案。

  2. 技术创新:在公司创立之初,Alpha-Micro Electronics就开始致力于技术创新。他们不断投资于研发,推出了一系列先进的微控制器和传感器产品,以满足客户对功能强大和性能稳定的需求。

  3. 解决方案定制:Alpha-Micro Electronics公司注重与客户的紧密合作,提供定制化的解决方案。他们的工程团队具有丰富的经验和专业知识,能够根据客户的具体要求设计和制造符合其需求的嵌入式系统。

  4. 国际扩展:随着业务的不断发展,Alpha-Micro Electronics逐渐拓展了国际市场。除了在德国的总部和研发中心外,公司还在全球范围内建立了销售和服务网络,包括在美国、亚洲和欧洲的分支机构和合作伙伴。

  5. 行业合作与创新:Alpha-Micro Electronics公司积极参与行业合作和创新项目,与其他企业、研究机构和学术界合作,共同推动嵌入式技术的发展。通过与行业领先者合作,公司不断探索新的技术和应用领域,为客户提供更具竞争力的解决方案。

这些故事展示了Alpha-Micro Electronics公司在技术创新、解决方案定制、国际扩展和行业合作方面的发展历程,以及其在电子行业中的重要地位和影响力。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

随着物联网、可穿戴设备等新兴领域的兴起,Goldentech敏锐地捕捉到了市场的新机遇。公司迅速调整战略方向,加大在微型化、低功耗半导体器件的研发投入。通过引入先进的制造工艺和封装技术,Goldentech成功推出了一系列适用于物联网和可穿戴设备的高性能离散半导体产品。这些产品凭借出色的性能和稳定性,在市场中获得了广泛认可,为公司的持续发展注入了新的动力。

ECLIPSE公司的发展小趣事

随着Eclipse项目的不断发展,越来越多的知名公司加入到这一开源社区中,如Oracle、Red Hat等。这些公司不仅为Eclipse贡献了代码,还提供了资金支持。Eclipse的功能日益完善,逐渐成为了Java开发领域的佼佼者。同时,Eclipse也支持其他编程语言,如C/C++、Python等,进一步扩大了其用户群体。

AAC [American Accurate Components]公司的发展小趣事

随着业务的不断拓展,AAC公司意识到美国市场的巨大潜力。于是,在1996年,AAC决定在美国设立分公司,专门负责美国市场的销售。与此同时,为了满足不断增长的市场需求,AAC还在深圳设立了美欧电子有限公司,专门批量生产手机用讯响器。这一系列的举措使得AAC的产品线更加丰富,产能也得到了大幅提升。

问答坊 | AI 解惑

车载传感器的应用与分类(zz)

将当今的汽车说成是电子产品毫不过分,而且有人预言今后还会在安全、环保和信息化这三个领域加速实现电子化。这一趋势今后肯定只会加速而不可能停滞。因为汽车厂商在安全、环保和信息化这三个领域里早就提出了加速实现电子化的方针。而其中最值得关 ...…

查看全部问答>

ADS调用外部的DLL

ADS中是否可以调用外部的DLL,如果可以调用如何去设置? 哪位高手回复一下.…

查看全部问答>

8051串口接收数据

8051如何从串口接收数据?我有4位数码管,如从串口发送1234,则数码管上显示1234。请给出程序,不会复杂的吧…

查看全部问答>

求MMC卡的specification

哪位大哥有The MultiMediaCard System Specification Version 3.31 有较早的版本的也可以,100分相谢,要是分不够我可以再加!谢谢了! 因为我想要读取一些MMC卡的基本信息。 可以发到我的邮箱:m-ja@163.com…

查看全部问答>

以太网学习的一点心得

前一段时间是针对专门的问题,发了一些帖子,这次在从最基本简单的入手,让我们一起逐步地深入吧。 1.首先我们可以在桌面上创建一个文件夹,my_proj。 2.把StellarisWare下的一些文件夹复制到my_proj下,其中progjects文件夹用来保存我们要创建的 ...…

查看全部问答>

向版主请教:在3.xx固件库中STM32PWM模式的默认电平设置

版主及各位大师好 小弟想请教一下STM32 通用定时器PWM输出时 默认电平控制问题 原来基于1.0的库写的一段TIM2定时器3通道的PWM输出配置 将 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  时开机上电 及软件关闭3 ...…

查看全部问答>

同时获得余数和商

例如 A / B,现在我需要获得 商和余数, C = A / B; D = A % B ; 这样需要两次运算,现在我想利用一次运算得到C和D,各位大虾,请告知,谢谢! 以前用TI的DSP可以直接读取ACC的低16位为商,高16位为余数,请问在STM32的芯片里能实现相同的 ...…

查看全部问答>

ePWM如何配置强制高、强制低?

在2812使用EV的时候可以直接写EVx.ACTRx直接控制PWM输出的强制高、强制低,在使用ePWM的器件上应该怎么配置,从而可以强制高、强制低呢…

查看全部问答>

上班族的悲惨生活

每天8小时工作、2小时公交或地铁、7小时睡眠;吃着三流的餐饮,呼吸着二流的空气,却承受着各种一流的价格。没时间也没精力互相温存,更没心情没经济去搞文艺。周末放假了,本想到处逛逛感受下帝都的繁华与精彩,早上醒来却发现已过中午,半天已去 ...…

查看全部问答>

关于dht11传感器采集数据

我用dht11采集温湿度数据传回到串口助手上为什么只有整数部分是正确的,小数部分为0呢? 这是我将采集到得数据赋给变量的程序(都是uchar变量):          wendu_shi=ucharT_data_H/10; //温度整数十位部分 &nbs ...…

查看全部问答>