2016-03-30 15 views
0

.s, .c ve .h bağlamında bir .vec dosyası nedir? Özellikle, stm32f10x_md.vec. .vec dosyasında "ISR_HANDLER USART3_IRQHandler" üzerine takılıyorum ve tüm googling bana openCV hakkında okumaya yol açıyor. .vec dosyası herhangi bir yerde mevcut görünmüyor. En yakın şey startup_stm32f10x_md.s gibi görünüyor. Nucleo f103rb ile Rowley CrossWorks kullanıyorum..vec dosyası .s, .c ve .h içeriğinde nedir? Özellikle, stm32f10x_md.vec

Bunlar, dosyanın tüm içeriğidir. Şimdiye kadar verilen cevaplara dayanarak, .vec'in CrossWorks'e özgü olup olmadığını merak ediyorum.

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 
+1

Kesintisiz vektör tablosu –

+0

olduğuna inanıyorum Bu CrossWorks'e özgü değildir, tüm STM32 tabanlı projeler (ve temel olarak tüm kesimleri destekleyen mikro denetleyiciler için tüm projeler) bir kesme olayını ilişkilendiren bir tabloya (C veya derlemede) sahiptir. Bir işlev (buna kesinti vektör tablosu veya IVT denir). Kesme hattı bir olay ile her tetiklendiğinde (ve bu kesinti maskelenmemişse), ilgili fonksiyon çağrılır. Örnek olarak, DMA1_Channel1 interrupt tetiklendiğinde, DMA1_Channel1_IRQHandler işlevi çağrılır. –

cevap

1

Bu bir kesme vektör tablosunun bir bölümünü içeren bir dosya olduğunu düşünüyorum. Ayrı .vec dosyalarını kullanma

_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 

size kullandığınız hedef mikrodenetleyici üzerinde bağımsız aynı üst düzey Startup.s dosyası kullanmak ve sadece/özelleştirmek hedef özgü şunları içerebilir: gibi görünen bir başlangıç ​​montaj dosyası düşünün. vec dosya

0

.vec'in linker komut dosyasında bulabileceğiniz bir bölüm olduğunu düşünüyorum. MPC56XX gibi, özellikle kesme vektör tablosu için .vect adlı bir bölüm vardır.

Bu, .vec dosyası hakkında ilk duyduğum zamandır.

Daha fazla bilgi için bu soruyu takip etmek için harika bir fırsat.

0

cortex-m'ler, özel giriş veya iade ile özel durumları sarmak zorunda DEĞİLDİR. Yani, .data ve .bss ile sıfırlama işleminden başka, önyükleme için hiçbir derlemeden kurtulabilirsiniz, ancak yine de vektör tablosunu bir şekilde oluşturmak ve adresleri işlevlerle doldurmak zorundasınız. Yani bu, bunu yapmanın bir yolu gibi görünüyor. Bu alet zincirine özgü olduğundan şüpheleniyorum. Kolay bir şekilde, derleyiciyi destekleyen derleyiciye sahip olduğunuzdan, sadece assembler ve assembler direktiflerini kullanmak yeterlidir.

1

Başka bir derleme dosyasına dahil edilmesi gereken sıradan bir derleme dosyası. adı ISR_HANDLER başka dosyada, belki startup_stm32f10x_md.s tanımlanan bir montaj makro ve (Rowley Associates's STM32_Startup.s alınan) böyle bir şey görünecektir:

.macro ISR_HANDLER name= 
    .section .vectors, "ax" 
    .word \name 
    .section .init, "ax" 
    .thumb_func 
    .weak \name 
\name: 
1: b 1b /* endless loop */ 
.endm 

Bu makro rutin kesme adında için kesme vektör tablosunda bir giriş koyar Ayrıca, uygulamanın kendi başlarından birini sağlamadığı durumlarda, rutin bir sonsuz döngü olmasını da sağlar.