В секции .bootloader имеется несколько функций. После сброса контроллера управление должно передаться одной из них, которая начинается с адреса, скажем, 0x1E000.
Проблема в том, что в памяти программ эти функции расположены не в том порядке, как они идут в исходном коде.
Ниже приведён фрагмент .map файла:
Код
.bootloader 0x0001e000 0xca bootldr2.o
0x0001e0a0 bootloader_start
0x0001e000 get_uart_char
0x0001e016 get_uart_ctr
0x0001e0a0 bootloader_start
0x0001e000 get_uart_char
0x0001e016 get_uart_ctr
Т.е. вместо bootloader_start управление будет передано функции get_uart_char, что не является правильным...
Как это можно обойти?