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