diff --git a/litex/soc/cores/cpu/gowin_emcu/crt0.c b/litex/soc/cores/cpu/gowin_emcu/crt0.c index 95c7a6f1c..bea687093 100644 --- a/litex/soc/cores/cpu/gowin_emcu/crt0.c +++ b/litex/soc/cores/cpu/gowin_emcu/crt0.c @@ -1,4 +1,6 @@ #include +#include "system.h" +#include "generated/soc.h" extern uint32_t _fdata_rom, _fdata, _edata, _fbss, _ebss, _fstack; @@ -6,17 +8,18 @@ void _start(void); void default_handler(void); void _start(void) { - uint32_t *y = &_fdata_rom; - for (uint32_t *x = &_fdata; x < &_edata; x ++) - *x = *y ++; + uint32_t *y = &_fdata_rom; + for (uint32_t *x = &_fdata; x < &_edata; x ++) + *x = *y ++; - for (uint32_t *x = &_fbss; x < &_ebss; x ++) - *x = 0; + for (uint32_t *x = &_fbss; x < &_ebss; x ++) + *x = 0; - // TODO: init uart + UART0->ctrl = 0b11; // set rx and tx enable bits + UART0->baud_div = CONFIG_CLOCK_FREQUENCY / 115200; // FIXME - __asm__("bl main"); - while(1); + __asm__("bl main"); + while(1); } void default_handler(void) { @@ -24,7 +27,7 @@ void default_handler(void) { } -const void* isr_vector[] __attribute__ ((section(".isr_vector"))) = { +const void* isr_vector[] __attribute__((__used__)) __attribute__((section(".isr_vector"))) = { &_fstack, _start, default_handler,