ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
560195 Топик полностью
Dingo (17.11.2014 09:44 - 10:01, просмотров: 213) ответил GDI на После добавления секции init что изменилось? Вообще Вам надо смотреть в map файл и менять что то в ld. В прикрепленном мапе видно что секции .data и .init действительно перекрываются. Теперь надо смотреть что изменилось после добавления секции. Я
Ругань прекратилась, сборка прошла. А дальше - веселуха. управление на main не передаётся. Раскопки дали следующее: использую библиотеку STM32F4xx_DSP_StdPeriph_Lib_V1.4.0, перетягиваю всё из примеров, и не работает. В файле startup_stm32f40xx.s перед передачей управления такой код: /* Call the clock system intitialization function.*/ bl SystemInit /* Call static constructors */ bl __libc_init_array /* Call the application's entry point.*/ bl main bx lr Если ставлю на начало этого фрагмента - "есть контакт", если после SystemInit - "есть контакт", если как задумано - "фигвам". По идее, убирать совсем не стоит, в lss файле такое: 08000358 <__libc_init_array>: 8000358: b570 push {r4, r5, r6, lr} 800035a: 4e0f ldr r6, [pc, #60] ; (8000398 <__libc_init_array+0x40>) 800035c: 4d0f ldr r5, [pc, #60] ; (800039c <__libc_init_array+0x44>) 800035e: 1b76 subs r6, r6, r5 8000360: 10b6 asrs r6, r6, #2 8000362: d007 beq.n 8000374 <__libc_init_array+0x1c> 8000364: 3d04 subs r5, #4 8000366: 2400 movs r4, #0 8000368: 3401 adds r4, #1 800036a: f855 3f04 ldr.w r3, [r5, #4]! 800036e: 4798 blx r3 8000370: 42a6 cmp r6, r4 8000372: d1f9 bne.n 8000368 <__libc_init_array+0x10> 8000374: 4e0a ldr r6, [pc, #40] ; (80003a0 <__libc_init_array+0x48>) 8000376: 4d0b ldr r5, [pc, #44] ; (80003a4 <__libc_init_array+0x4c>) 8000378: 1b76 subs r6, r6, r5 800037a: f000 f815 bl 80003a8 <_etext> 800037e: 10b6 asrs r6, r6, #2 8000380: d008 beq.n 8000394 <__libc_init_array+0x3c> 8000382: 3d04 subs r5, #4 8000384: 2400 movs r4, #0 8000386: 3401 adds r4, #1 8000388: f855 3f04 ldr.w r3, [r5, #4]! 800038c: 4798 blx r3 800038e: 42a6 cmp r6, r4 8000390: d1f9 bne.n 8000386 <__libc_init_array+0x2e> 8000392: bd70 pop {r4, r5, r6, pc} 8000394: bd70 pop {r4, r5, r6, pc} 8000396: bf00 nop 8000398: 00000000 .word 0x00000000 800039c: 00000000 .word 0x00000000 80003a0: 00000000 .word 0x00000000 80003a4: 00000000 .word 0x00000000 Ассемблер этих камней не знаю, но возврата в основной код не вижу (а значит, и ячейки для хранения результатов могут исполняться?). Последние команды оперируют с pc, но достаточно ли этого? Если это баг, куда репорт кидать?
gcc version 4.8.4 20140725 (release) [ARM/embedded-4_8-branch revision 213147] (GNU Tools for ARM Embedded Processors)