STM32F1xx vlastn bootloader

Miroslav Mraz mraz na seznam.cz
Neděle Květen 18 13:46:29 CEST 2014


To jsme na tom podobně. Asi je důležitější ta cesta než výsledek, 
protože když vám někdo napoví jak, stejně se pak ptáte proč. Člověk pak 
líp pochopí, jak to funguje. Pro srandu jsem přepsal i ten startup do C. 
Jen proto, že to jde. A pak jsou ty statické konstruktory celkem sranda:
/// V linker skriptu
   extern void (*__init_array_start) ();
   extern void (*__init_array_end) ();
/// Inicializace statických konstruktorů - použít explicitně po celkové 
inicializaci systému
   static inline void static_init() {
     void (**p) ();
     // Tohle je sice konstrukce značně nepřehledná, leč funguje.
     for (p = &__init_array_start; p < &__init_array_end; p++) (*p) ();
   }

Mrazík

On 05/18/2014 11:04 AM, Jaroslav Buchta wrote:
> Dlouho jsem odolaval ale nakonec jsem zjistil, ze prechod z C na C++ 
> je pomerne jednoduchy - asi +5 radku do skriptu pro linker, 10 radku 
> do startup assembleru (staticke konstruktory) a zalozit zdrojak s 
> priponou cpp misto c ;-)


Další informace o konferenci Hw-list