KEIL生成的ELF格式文件分析

这篇博客探讨了在深入研究GCC之前,作者对于KEIL生成的ELF格式文件的初步理解,提及了在学习GCC之前需要先掌握Linux应用开发和BSP开发的重要性。
摘要由CSDN通过智能技术生成

ARMCC库的分离方法

【库是以AR格式存放的】


惭愧,还是没结果,唉,还是希望能有人能解答,总觉得做技术还是深究一步的好。

为了鼓励看贴的同仁,附上对KEIL C语言的运行库分析步骤:

1.可从 map文件中查到你的程序中用到哪些库中的函数及在哪个库中

2.运行库的目录为:keil\arm\rv31\lib\armlib

3.用armar -x 命令从库中解出相应的.o文件

4.用fromelf -c 命令反汇编相应的.o文件,也可加-output 来何在反汇编结果到文件中

具体命令参数可直接打命令查看



【ELF格式现在不仔细分析,等学到GCC的时候再去分析】

【不过学GCC之前要去学linux应用开发和BSP开发,还有很多路要走】




生成命令:



程序源码:

stm32f10x_startup.s

;***************************************************************************************
; Amount of memory (in bytes) allocated for Stack and Heap
; Tailor those values to your application needs          
;***************************************************************************************
Stack_Size   EQU     0x400
Heap_Size    EQU     0x200

;*******************************************************************************
; Allocate space for the Stack
;*******************************************************************************
  AREA    STACK, NOINIT, READWRITE, ALIGN=3

Stack
    SPACE   Stack_Size

;*******************************************************************************
; Allocate space for the Heap
;*******************************************************************************
  AREA    HEAP, NOINIT, READWRITE, ALIGN=3

Heap
    SPACE   Heap_Size

;********************************************************************************
;*  Declarations for the interrupt handlers that are used by the application.                                                                     
;********************************************************************************
  		IMPORT  __main

  		IMPORT  OSPendSV
  		IMPORT  SysTickHandler
  		IMPORT  WWDG_IRQHandler
  		IMPORT  PVD_IRQHandler
  		IMPORT  TAMPER_IRQHandler
  		IMPORT  RTC_IRQHandler
  		IMPORT  FLASH_IRQHandler
  		IMPORT  RCC_IRQHandler
  		IMPORT  EXTI0_IRQHandler
  		IMPORT  EXTI1_IRQHandler
  		IMPORT  EXTI2_IRQHandler
  		IMPORT  EXTI3_IRQHandler
  		IMPORT  EXTI4_IRQHandler
  		IMPORT  DMAChannel1_IRQHandler
  		IMPORT  DMAChannel2_IRQHandler
  		IMPORT  DMAChannel3_IRQHandler
  		IMPORT  DMAChannel4_IRQHandler
  		IMPORT  DMAChannel5_IRQHandler
  		IMPORT  DMAChannel6_IRQHandler
  		IMPORT  DMAChannel7_IRQHandler
  		IMPORT  ADC_IRQHandler
  		IMPORT  USB_HP_CAN_TX_IRQHandler
  		IMPORT  USB_LP_CAN_RX0_IRQHandler
  		IMPORT  CAN_RX1_IRQHandler
  		IMPORT  CAN_SCE_IRQHandler
  		IMPORT  EXTI9_5_IRQHandler
  		IMPORT  TIM1_BRK_IRQHandler
  		IMPORT  TIM1_UP_IRQHandler
  		IMPORT  TIM1_TRG_COM_IRQHandler
  		IMPORT  TIM1_CC_IRQHandler
  		IMPORT  TIM2_IRQHandler
  		IMPORT  TIM3_IRQHandler
  		IMPORT  TIM4_IRQHandler
  		IMPORT  I2C1_EV_IRQHandler
  		IMPORT  I2C1_ER_IRQHandler
  		IMPORT  I2C2_EV_IRQHandler
  		IMPORT  I2C2_ER_IRQHandler
  		IMPORT  SPI1_IRQHandler
  		IMPORT  SPI2_IRQHandler
  		IMPORT  USART1_IRQHandler
  		IMPORT  USART2_IRQHandler
  		IMPORT  USART3_IRQHandler
  		IMPORT  EXTI15_10_IRQHandler
  		IMPORT  RTCAlarm_IRQHandler
  		IMPORT  USBWakeUp_IRQHandler

		IMPORT     TIM8_BRK_IRQHandler       ; TIM8 Break
		IMPORT     TIM8_UP_IRQHandler        ; TIM8 Update
		IMPORT     TIM8_TRG_COM_IRQHandler   ; TIM8 Trigger and Commutation
		IMPORT     TIM8_CC_IRQHandler        ; TIM8 Capture Compare
		IMPORT     ADC3_IRQHandler           ; ADC3
		IMPORT     FSMC_IRQHandler           ; FSMC
		IMPORT     SDIO_IRQHandler           ; SDIO
		IMPORT     TIM5_IRQHandler           ; TIM5
		IMPORT     SPI3_IRQHandler           ; SPI3
		IMPORT     UART4_IRQHandler          ; UART4
		IMPORT     UART5_IRQHandler          ; UART5
		IMPORT     TIM6_IRQHandler           ; TIM6
		IMPORT     TIM7_IRQHandler           ; TIM7
		IMPORT     DMA2_Channel1_IRQHandler  ; DMA2 Channel1
		IMPORT     DMA2_Channel2_IRQHandler  ; DMA2 Channel2
		IMPORT     DMA2_Channel3_IRQHandler  ; DMA2 Channel3
		IMPORT     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
  
          
		PRESERVE8

;**********************************************************************************
;*  Reset code section.                                                                                                           
;**********************************************************************************
        AREA    RESET, CODE, READONLY
        THUMB

;*******************************************************************************
; Fill-up the Vector Table entries with the exceptions ISR address
;*******************************************************************************
    	EXPORT  __Vectors
__Vectors                      
    	DCD  Stack + Stack_Size            ; Top of Stack
    	DCD  Reset_Handler
    	DCD  NMIException
    	DCD  HardFaultException
    	DCD  MemManageException
    	DCD  BusFaultException
    	DCD  UsageFaultException
    	DCD  0                 ; Reserved
    	DCD  0                 ; Reserved
    	DCD  0                 ; Reserved
    	DCD  0                 ; Reserved
    	DCD  SVCHandler
    	DCD  DebugMonitor
    	DCD  0                 ; Reserved
    	DCD  OSPendSV
    	DCD  SysTickHandler
    	DCD  WWDG_IRQHandler
    	DCD  PVD_IRQHandler
    	DCD  TAMPER_IRQHandle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值