openocd + gdb + codeblocks
вот листиг дизассемблера
CODE
dee4: 7fffe9ac svcvc 0x00ffe9ac
dee8: 00000001 andeq r0, r0, r1
Disassembly of section .vectors_in_ram:
40000000 <_data-0x38>:
...
Disassembly of section .data:
40000038 <status>:
40000038: 00000101 andeq r0, r0, r1, lsl #2
dee8: 00000001 andeq r0, r0, r1
Disassembly of section .vectors_in_ram:
40000000 <_data-0x38>:
...
Disassembly of section .data:
40000038 <status>:
40000038: 00000101 andeq r0, r0, r1, lsl #2
то есть с адреса deeС должна лежать копия сгмента данных
то есть _data = 40000038
однако openocd или gdb тупо выревнивает его и пишет
Код
Info : Padding image section 0 with 4 bytes
Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (1125). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (1125). Workaround: increase "set remotetimeout" in GDB
что получается теперь сегменты данных выравниваются по 8 байт что ли?
Если простотреть дам памяти то
Код
0xdee0: b0 af 02 80 ac e9 ff 7f|01 00 00 00 ff ff ff ff
0xdef0: 01 01 00 00 00 a2 4a 04|00 00 00 00 2c 03 00 40
0xdef0: 01 01 00 00 00 a2 4a 04|00 00 00 00 2c 03 00 40
В итоге openocd просто сместил копию сегмента памяти? Нагло вставил 0xffffff?
