mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stm32f0 Ungenutzte Vektoren zweckentfremdem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: J. W. (nuernberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe eine Stm32F0-Applikation mit Bootloader, eigentlich 
"in-application programming (IAP)".
D.h. der Bootloader steht ab 0x8000000, wird bei einem Reset 
angesprungen und lauscht 50ms lang nach SPI-Kommandos, die ihm 
möglicherweise eine neue Firmware (ab 0x8004000) aufspielen würden, und 
springt anderfalls zur Applikation bei 0x8004000.
Jetzt würde ich gerne den Bootloader erweitern, dass er jedesmal einen 
CRC-Check macht, bevor er die Applikation anspringt.
(Beim Programmieren einer neuen Applikation macht er sowieso einen 
CRC-Check, dass ist im Kommunikations-Protokoll enthalten)

Dazu müsste die CRC16 an einem festen Platz stehen im Image stehen.
3 Bytes, 2 Byte für CRC16, 1 Byte für die Länge des Image in 
1024Byte-Sektoren.
Wenn ich mir die ersten 2x48 Bytes anschaue (Vektoren-Tabelle), da gibt 
es etliche Stellen, wo die 3 Bytes problemlos unterbringen könnte.
D.h. die Stellen mit 0, oder Vektoren, die ich garantiert niemals 
benutzen würde.
Was denkt ihr dazu?
  .word _estack
  .word Reset_Handler
  .word NMI_Handler
  .word HardFault_Handler
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word SVC_Handler
  .word 0
  .word 0
  .word PendSV_Handler
  .word SysTick_Handler
  .word WWDG_IRQHandler
  .word PVD_IRQHandler
  .word RTC_IRQHandler
  .word FLASH_IRQHandler
  .word RCC_IRQHandler
  .word EXTI0_1_IRQHandler
  .word EXTI2_3_IRQHandler
  .word EXTI4_15_IRQHandler
  .word TS_IRQHandler
  .word DMA1_Channel1_IRQHandler
  .word DMA1_Channel2_3_IRQHandler
  .word DMA1_Channel4_5_IRQHandler
  .word ADC1_COMP_IRQHandler 
  .word TIM1_BRK_UP_TRG_COM_IRQHandler
  .word TIM1_CC_IRQHandler
  .word TIM2_IRQHandler
  .word TIM3_IRQHandler
  .word TIM6_DAC_IRQHandler
  .word 0
  .word TIM14_IRQHandler
  .word TIM15_IRQHandler
  .word TIM16_IRQHandler
  .word TIM17_IRQHandler
  .word I2C1_IRQHandler
  .word I2C2_IRQHandler
  .word SPI1_IRQHandler
  .word SPI2_IRQHandler
  .word USART1_IRQHandler
  .word USART2_IRQHandler
  .word 0
  .word CEC_IRQHandler
  .word 0
  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
                            STM32F0xx devices. */
 

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und woher weiß der Bootloader denn, wie lang das Firmware-Image ist? 
Wenn das einfach eine feste Größe ist, kannste auch die CRC in den 
letzten 4 Bytes unterbringen.

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, steht ja oben mit der Länge.. sorry.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.