Цитата(scifi @ Aug 29 2013, 10:20)

Наверное, это потому, что весь программный код складывается в одну большую сплошную секцию. Соответственно, в нулевой сектор попадают оставшиеся крохи: таблица векторов прерываний, константы, начальные значения статических переменных. Можете проверить это предположение, заглянув в MAP файл. Помню, что GCC умеет выделять отдельную секцию для каждой функции, а вот йар - не похоже...
Да, разложил линковщик так:
*******************************************************************************
*** PLACEMENT SUMMARY
***
"A1": place at 0x08000000 { ro section .intvec };
"P1": place in [from 0x08000000 to 0x08003fff] |
[from 0x0800c000 to 0x0807ffff] { ro };
"P2": place in [from 0x20000000 to 0x2001ffff] { rw, block CSTACK, block HEAP };
Section Kind Address Size Object
------- ---- ------- ---- ------
"A1": 0x188
.intvec ro code 0x08000000 0x188 startup_stm32f40xx.o [1]
- 0x08000188 0x188
"P1", part 1 of 2: 0x250
.rodata const 0x08000188 0x0 zero_init3.o [5]
.rodata const 0x08000188 0x0 lz77_init.o [5]
Initializer bytes ro data 0x08000188 0x24f <for P2 s0>
- 0x080003d7 0x24f
"P1", part 2 of 2: 0x10cdc
.text ro code 0x0800c000 0x2060 shell.o [1]
.text ro code 0x0800e060 0x1bc ip_addr.o [1]
.text ro code 0x0800e21c 0xc errno.o [3]
.text ro code 0x0800e228 0x110 xstrerro.o [3]
.text ro code 0x0800e338 0x36 strlen.o [5]
.text ro code 0x0800e36e 0x22 zero_init3.o [5]
.text ro code 0x0800e390 0x3f4 api_lib.o [1]
.....
будет место для констант и инициализаций. Их планируется не мало.