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