В скрипте линкера проверь выравнивание по 4 байтам для данных
каждого программного модуля, и 8 байт для "кучи". ну и:
#include <inttypes.h>
uint32_t t;
printf("t=%" PRIu32 "\n", t);
Листинг что-то тип такого:
.bss 0x00000000011c1a20 0x121 objs/release/source/CanbusBufferWrite.o
*fill* 0x00000000011c1b41 0x3
.bss 0x00000000011c1b44 0x1d objs/release/source/EthernetPhy.o
*fill* 0x00000000011c1b61 0x3
.bss 0x00000000011c1b64 0x28 objs/release/source/EthernetTagCanbusPacket.o