.s、.c 和 .h 上下文中的 .vec 文件是什么?具体来说,stm32f10x_md.vec
What is .vec file in a .s, .c, and .h context? Specifically, stm32f10x_md.vec
什么是 .s、.c 和 .h 上下文中的 .vec 文件?具体来说,stm32f10x_md.vec。我一直卡在 .vec 文件中的 "ISR_HANDLER USART3_IRQHandler" 上,所有谷歌搜索都让我阅读了有关 openCV 的内容。 .vec 文件似乎不存在于任何地方。最接近的似乎是startup_stm32f10x_md.s。我将 Rowley CrossWorks 与 Nucleo f103rb 一起使用。
这些是文件的全部内容。根据目前的答案,我想知道 .vec 是否特定于 CrossWorks?
ISR_HANDLER WWDG_IRQHandler
ISR_HANDLER PVD_IRQHandler
ISR_HANDLER TAMPER_IRQHandler
ISR_HANDLER RTC_IRQHandler
ISR_HANDLER FLASH_IRQHandler
ISR_HANDLER RCC_IRQHandler
ISR_HANDLER EXTI0_IRQHandler
ISR_HANDLER EXTI1_IRQHandler
ISR_HANDLER EXTI2_IRQHandler
ISR_HANDLER EXTI3_IRQHandler
ISR_HANDLER EXTI4_IRQHandler
ISR_HANDLER DMA1_Channel1_IRQHandler
ISR_HANDLER DMA1_Channel2_IRQHandler
ISR_HANDLER DMA1_Channel3_IRQHandler
ISR_HANDLER DMA1_Channel4_IRQHandler
ISR_HANDLER DMA1_Channel5_IRQHandler
ISR_HANDLER DMA1_Channel6_IRQHandler
ISR_HANDLER DMA1_Channel7_IRQHandler
ISR_HANDLER ADC1_2_IRQHandler
ISR_HANDLER USB_HP_CAN1_TX_IRQHandler
ISR_HANDLER USB_LP_CAN1_RX0_IRQHandler
ISR_HANDLER CAN1_RX1_IRQHandler
ISR_HANDLER CAN1_SCE_IRQHandler
ISR_HANDLER EXTI9_5_IRQHandler
ISR_HANDLER TIM1_BRK_IRQHandler
ISR_HANDLER TIM1_UP_IRQHandler
ISR_HANDLER TIM1_TRG_COM_IRQHandler
ISR_HANDLER TIM1_CC_IRQHandler
ISR_HANDLER TIM2_IRQHandler
ISR_HANDLER TIM3_IRQHandler
ISR_HANDLER TIM4_IRQHandler
ISR_HANDLER I2C1_EV_IRQHandler
ISR_HANDLER I2C1_ER_IRQHandler
ISR_HANDLER I2C2_EV_IRQHandler
ISR_HANDLER I2C2_ER_IRQHandler
ISR_HANDLER SPI1_IRQHandler
ISR_HANDLER SPI2_IRQHandler
ISR_HANDLER USART1_IRQHandler
ISR_HANDLER USART2_IRQHandler
ISR_HANDLER USART3_IRQHandler
ISR_HANDLER EXTI15_10_IRQHandler
ISR_HANDLER RTCAlarm_IRQHandler
ISR_HANDLER USBWakeUp_IRQHandler
我认为 .vec 是您可以在链接描述文件中找到的一个部分。与 MPC56XX 一样,有一个名为 .vect 的部分,专门用于中断向量 table.
这是我第一次听说.vec 文件。
这是一个了解更多信息的好机会。
我认为它是一个包含中断向量的一部分的文件 table。考虑一个如下所示的启动程序集文件:
_vectors:
.word __stack_end__
...
ISR_HANDLER SysTick_Handler
#if defined(__TARGET_LD)
#include "STM32F10X_LD.vec"
#elif defined(__TARGET_MD)
#include "STM32F10X_MD.vec"
...
#endif
使用单独的 .vec 文件,您可以在您正在使用的目标微控制器上独立使用相同的顶级 Startup.s 文件,并且仅 customize/include 您的目标特定 .vec 文件
cortex-m 的优点在于您不必用特殊条目或 return 东西来包装异常。因此,除了重置处理 .data 和 .bss 之外,您可以不用 bootstrap 的程序集,但您仍然必须以某种方式生成向量 table 并用函数地址填充它。所以这看起来像是一种方法。我怀疑它特定于该工具链。简单的方法当然是只使用汇编器和汇编器指令,因为你已经有了支持编译器的汇编器。
这是一个普通的程序集文件,应该包含在另一个程序集文件中。名称 ISR_HANDLER
是在其他文件中定义的汇编宏,可能是 startup_stm32f10x_md.s
,看起来像这样(取自 Rowley Associates's STM32_Startup.s
):
.macro ISR_HANDLER name=
.section .vectors, "ax"
.word \name
.section .init, "ax"
.thumb_func
.weak \name
\name:
1: b 1b /* endless loop */
.endm
此宏在中断向量 table 中为命名的中断例程添加一个条目,它还提供该例程的默认实现,即无限循环,以防应用程序未提供以下之一它自己的。
什么是 .s、.c 和 .h 上下文中的 .vec 文件?具体来说,stm32f10x_md.vec。我一直卡在 .vec 文件中的 "ISR_HANDLER USART3_IRQHandler" 上,所有谷歌搜索都让我阅读了有关 openCV 的内容。 .vec 文件似乎不存在于任何地方。最接近的似乎是startup_stm32f10x_md.s。我将 Rowley CrossWorks 与 Nucleo f103rb 一起使用。
这些是文件的全部内容。根据目前的答案,我想知道 .vec 是否特定于 CrossWorks?
ISR_HANDLER WWDG_IRQHandler
ISR_HANDLER PVD_IRQHandler
ISR_HANDLER TAMPER_IRQHandler
ISR_HANDLER RTC_IRQHandler
ISR_HANDLER FLASH_IRQHandler
ISR_HANDLER RCC_IRQHandler
ISR_HANDLER EXTI0_IRQHandler
ISR_HANDLER EXTI1_IRQHandler
ISR_HANDLER EXTI2_IRQHandler
ISR_HANDLER EXTI3_IRQHandler
ISR_HANDLER EXTI4_IRQHandler
ISR_HANDLER DMA1_Channel1_IRQHandler
ISR_HANDLER DMA1_Channel2_IRQHandler
ISR_HANDLER DMA1_Channel3_IRQHandler
ISR_HANDLER DMA1_Channel4_IRQHandler
ISR_HANDLER DMA1_Channel5_IRQHandler
ISR_HANDLER DMA1_Channel6_IRQHandler
ISR_HANDLER DMA1_Channel7_IRQHandler
ISR_HANDLER ADC1_2_IRQHandler
ISR_HANDLER USB_HP_CAN1_TX_IRQHandler
ISR_HANDLER USB_LP_CAN1_RX0_IRQHandler
ISR_HANDLER CAN1_RX1_IRQHandler
ISR_HANDLER CAN1_SCE_IRQHandler
ISR_HANDLER EXTI9_5_IRQHandler
ISR_HANDLER TIM1_BRK_IRQHandler
ISR_HANDLER TIM1_UP_IRQHandler
ISR_HANDLER TIM1_TRG_COM_IRQHandler
ISR_HANDLER TIM1_CC_IRQHandler
ISR_HANDLER TIM2_IRQHandler
ISR_HANDLER TIM3_IRQHandler
ISR_HANDLER TIM4_IRQHandler
ISR_HANDLER I2C1_EV_IRQHandler
ISR_HANDLER I2C1_ER_IRQHandler
ISR_HANDLER I2C2_EV_IRQHandler
ISR_HANDLER I2C2_ER_IRQHandler
ISR_HANDLER SPI1_IRQHandler
ISR_HANDLER SPI2_IRQHandler
ISR_HANDLER USART1_IRQHandler
ISR_HANDLER USART2_IRQHandler
ISR_HANDLER USART3_IRQHandler
ISR_HANDLER EXTI15_10_IRQHandler
ISR_HANDLER RTCAlarm_IRQHandler
ISR_HANDLER USBWakeUp_IRQHandler
我认为 .vec 是您可以在链接描述文件中找到的一个部分。与 MPC56XX 一样,有一个名为 .vect 的部分,专门用于中断向量 table.
这是我第一次听说.vec 文件。
这是一个了解更多信息的好机会。
我认为它是一个包含中断向量的一部分的文件 table。考虑一个如下所示的启动程序集文件:
_vectors:
.word __stack_end__
...
ISR_HANDLER SysTick_Handler
#if defined(__TARGET_LD)
#include "STM32F10X_LD.vec"
#elif defined(__TARGET_MD)
#include "STM32F10X_MD.vec"
...
#endif
使用单独的 .vec 文件,您可以在您正在使用的目标微控制器上独立使用相同的顶级 Startup.s 文件,并且仅 customize/include 您的目标特定 .vec 文件
cortex-m 的优点在于您不必用特殊条目或 return 东西来包装异常。因此,除了重置处理 .data 和 .bss 之外,您可以不用 bootstrap 的程序集,但您仍然必须以某种方式生成向量 table 并用函数地址填充它。所以这看起来像是一种方法。我怀疑它特定于该工具链。简单的方法当然是只使用汇编器和汇编器指令,因为你已经有了支持编译器的汇编器。
这是一个普通的程序集文件,应该包含在另一个程序集文件中。名称 ISR_HANDLER
是在其他文件中定义的汇编宏,可能是 startup_stm32f10x_md.s
,看起来像这样(取自 Rowley Associates's STM32_Startup.s
):
.macro ISR_HANDLER name=
.section .vectors, "ax"
.word \name
.section .init, "ax"
.thumb_func
.weak \name
\name:
1: b 1b /* endless loop */
.endm
此宏在中断向量 table 中为命名的中断例程添加一个条目,它还提供该例程的默认实现,即无限循环,以防应用程序未提供以下之一它自己的。