VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба Где в arm-none-eabi такое видели? В любом проекте стартап компилируется из исходника чаще всего ассемблерного .s, либо нормальный на С. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 4 минуты назад, VladislavS сказал: ...либо нормальный на С. Это раСизм по оношению к asm Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба Не вижу ни одного довода в пользу стартапа на asm для кортексов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 7 минут назад, VladislavS сказал: Не вижу ни одного довода в пользу стартапа на asm для кортексов. Например, тот, что к Keil-ам, IAR-ам и GCC-based IDE asm-стартапы идут из коробки в скачиваемых DFP и изобретать ничего не нужно. Я точно так же не вижу доводов в пользу Си-шных стартапов против asm-овых. Шо то, шо это +/- одно и то же. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба Для кортексов все стартапы отличаются только таблицей векторов прерываний. Заменить её для нового проца - дело 1 минуты. А можно вот так сделать, чтобы один стартап под GCC, IAR и Keil был. На асме такое как? 13 минут назад, Arlleex сказал: Я точно так же не вижу доводов в пользу Си-шных стартапов против asm-овых. Cи-шный код оптимизируется лучше, препроцессором им проще управлять. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 1 час назад, VladislavS сказал: Cи-шный код оптимизируется лучше Правда что-ли? .cpp: u32 MotorExec() { u32 j, it; ... if (j = moFault.gen_dly) return it; if (moSensRdy) { moSensRdy = j; MotorCtl(); } return it; } .lst: if (j = moFault.gen_dly) return it; 0x89A0 LDRH R0,[R4, #+12] 0xB928 CBNZ.N R0,??MotorExec_21 if (moSensRdy) { 0x7CE0 LDRB R0,[R4, #+19] 0xB118 CBZ.N R0,??MotorExec_21 moSensRdy = j; 0x2000 MOVS R0,#+0 0x74E0 STRB R0,[R4, #+19] MotorCtl(); 0x.... 0x.... BL _Z8MotorCtlv } return it; ??MotorExec_21: (+1) 0x4628 MOV R0,R5 0xB005 ADD SP,SP,#+20 0xE8BD 0x8FF0 POP {R4-R11,PC} ;; return IAR, максимальная оптимизация. Даже не вдаваясь в глубокие оптимизации, самый посредственный человеко-программист на асме использует R1. И напишет короче на 1 команду, чем мегасупер-оптимизатор си. А если глубоко копнуть в листинги, то окажется что это были только цветочки.... Или другой перл от того же "си-оптимизатора" IAR: VADC.G[3].VFR = VADC.G[2].VFR = VADC.G[1].VFR = VADC.G[0].VFR = B16 - 1; 00000098 0xF04F 0x2240 MOV R2,#+1073758208 0000009C 0xF8DB 0x13A0 LDR R1,[R11, #+928] 000000A0 0xF64F 0x71FF MOVW R1,#+65535 000000A4 0xF8C2 0x15F8 STR R1,[R2, #+1528] 000000A8 0xF8C2 0x19F8 STR R1,[R2, #+2552] 000000AC 0xF8C2 0x1DF8 STR R1,[R2, #+3576] 000000B0 0xF241 0x12F8 MOVW R2,#+4600 000000B4 0xF04F 0x2340 MOV R3,#+1073758208 000000B8 0x5099 STR R1,[R3, R2] RDMB(VADC.G[3].VFR); 000000BA 0x5899 LDR R1,[R3, R2] CCU_ADCF_S.TCSET = B0; //start the fastADC timer 000000BC 0x.... 0x.... LDR.W R2,??DataTable9_4 ;; 0x40024000 А ведь что мешало поместить 4600 в R3, а не в R2? Или выкинуть лишнюю LDR? И такое в быстром ISR! А грамотный asm-программист напишет: MOV R2,#+1073758208 LDR R1,[R11, #+928] MOVW R1,#+65535 STR R1,[R2, #+1528] STR R1,[R2, #+2552] STR R1,[R2, #+3576] MOVW R3,#+4600 STR R1,[R3, R2] LDR R1,[R3, R2] ORR R2, R2, R2, LSL #3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 16 минут назад, jcxz сказал: Правда что-ли? Я не про вообще, а конкретно про стартап для GCC. Беру стандартный асмовый из dfp и свой на С. Делают одно и то же. Код в итоге на С меньше. Оптимизация, инлайн SystemInit и main. Где-то компилятор может паттерн копирования распознать и memcpy применить. А на асме как индус один раз написал, так оно и есть. А в случае с IAR в стартапе для кортексов вообще ничего коме таблицы векторов нет. Зачем там асм вообще непонятно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oldbrowze 0 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 5 часов назад, VladislavS сказал: Проверьте в map-файле, что секция init_array не пустая stm32f401ccux_flash.ld /* ****************************************************************************** ** ** @file : LinkerScript.ld ** ** @author : Auto-generated by STM32CubeIDE ** ** @brief : Linker script for STM32F401CCUx Device from STM32F4 series ** 256Kbytes FLASH ** 64Kbytes RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used ** ** Target : STMicroelectronics STM32 ** ** Distribution: The file is distributed as is, without any warranty ** of any kind. ** ****************************************************************************** ** @attention ** ** <h2><center>© Copyright (c) 2021 STMicroelectronics. ** All rights reserved.</center></h2> ** ** This software component is licensed by ST under BSD 3-Clause license, ** the "License"; You may not use this file except in compliance with the ** License. You may obtain a copy of the License at: ** opensource.org/licenses/BSD-3-Clause ** ****************************************************************************** */ /* Entry Point */ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Memories definition */ MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K } /* Sections */ SECTIONS { /* The startup code into "FLASH" Rom type memory */ .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); } >FLASH /* The program code and other data into "FLASH" Rom type memory */ .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ } >FLASH /* Constant data into "FLASH" Rom type memory */ .rodata : { . = ALIGN(4); *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ . = ALIGN(4); } >FLASH .ARM.extab : { . = ALIGN(4); *(.ARM.extab* .gnu.linkonce.armextab.*) . = ALIGN(4); } >FLASH .ARM : { . = ALIGN(4); __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; . = ALIGN(4); } >FLASH .preinit_array : { . = ALIGN(4); PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); . = ALIGN(4); } >FLASH .init_array : { . = ALIGN(4); PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); . = ALIGN(4); } >FLASH .fini_array : { . = ALIGN(4); PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT(.fini_array.*))) KEEP (*(.fini_array*)) PROVIDE_HIDDEN (__fini_array_end = .); . = ALIGN(4); } >FLASH /* Used by the startup to initialize data */ _sidata = LOADADDR(.data); /* Initialized data sections into "RAM" Ram type memory */ .data : { . = ALIGN(4); _sdata = .; /* create a global symbol at data start */ *(.data) /* .data sections */ *(.data*) /* .data* sections */ *(.RamFunc) /* .RamFunc sections */ *(.RamFunc*) /* .RamFunc* sections */ . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >RAM AT> FLASH /* Uninitialized data section into "RAM" Ram type memory */ . = ALIGN(4); .bss : { /* This is used by the startup in order to initialize the .bss section */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; *(.bss) *(.bss*) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >RAM /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ ._user_heap_stack : { . = ALIGN(8); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(8); } >RAM /* Remove information from the compiler libraries */ /DISCARD/ : { libc.a ( * ) libm.a ( * ) libgcc.a ( * ) } .ARM.attributes 0 : { *(.ARM.attributes) } } out.map сгенерировал путем добавления -Xlinker -Map=out.map в ключи линкера Archive member included to satisfy reference by file (symbol) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o (exit) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) (_global_impure_ptr) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o (__libc_init_array) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o (memset) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) (_exit) Discarded input sections .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o .data 0x0000000000000000 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .text 0x0000000000000000 0x74 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .ARM.extab 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .ARM.exidx 0x0000000000000000 0x8 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .ARM.attributes 0x0000000000000000 0x1c /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o .text 0x0000000000000000 0x14 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o .data 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o .bss 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o .text 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .data 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .bss 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .rodata.APBPrescTable 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/generator.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/generator.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/generator.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/generator.o .text 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/generator.o .data 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/generator.o .bss 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project17rcc_configurationEv 0x0000000000000000 0x18 .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project17pwm_configurationEv 0x0000000000000000 0x3c .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project13configurationEv 0x0000000000000000 0xe .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project17pin_configurationEv 0x0000000000000000 0x2 .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project13set_frequencyEv 0x0000000000000000 0x2 .pio/build/blackpill_f401cc/src/generator.o .text._ZN6Namespace13Project13get_frequencyEv 0x0000000000000000 0x4 .pio/build/blackpill_f401cc/src/generator.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/main.o .group 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/main.o .text 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/main.o .data 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/main.o .bss 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/main.o .text._Z11EXTI_enablev 0x0000000000000000 0x44 .pio/build/blackpill_f401cc/src/main.o .bss._ZGVN6Namespace13Project10tranceiverE 0x0000000000000000 0x4 .pio/build/blackpill_f401cc/src/main.o .bss._ZN6Namespace13Project10tranceiverE 0x0000000000000000 0x8 .pio/build/blackpill_f401cc/src/main.o .text 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .data 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .bss 0x0000000000000000 0x0 .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .text._ZN6Namespace5ghth8transmitESt17basic_string_viewIcSt11char_traitsIcEE 0x0000000000000000 0x26 .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .text.exit 0x0000000000000000 0x28 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .debug_frame 0x0000000000000000 0x28 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .ARM.attributes 0x0000000000000000 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-exit.o) .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .data._impure_ptr 0x0000000000000000 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .data.impure_data 0x0000000000000000 0x60 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .rodata._global_impure_ptr 0x0000000000000000 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .ARM.attributes 0x0000000000000000 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-impure.o) .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .text.memset 0x0000000000000000 0x10 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .debug_frame 0x0000000000000000 0x20 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .ARM.attributes 0x0000000000000000 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-memset.o) .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .text._exit 0x0000000000000000 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .debug_frame 0x0000000000000000 0x20 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .ARM.attributes 0x0000000000000000 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a(_exit.o) .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o .eh_frame 0x0000000000000000 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o .ARM.attributes 0x0000000000000000 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o .text 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o .data 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o .bss 0x0000000000000000 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o Memory Configuration Name Origin Length Attributes RAM 0x0000000020000000 0x0000000000010000 xrw FLASH 0x0000000008000000 0x0000000000040000 xr *default* 0x0000000000000000 0xffffffffffffffff Linker script and memory map LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o LOAD .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o LOAD .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o LOAD .pio/build/blackpill_f401cc/src/generator.o LOAD .pio/build/blackpill_f401cc/src/main.o LOAD .pio/build/blackpill_f401cc/src/stm32f4_ghth.o START GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/libgcc.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libstdc++_nano.a END GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libstdc++_nano.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libm.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a START GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/libgcc.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a END GROUP START GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/libgcc.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a END GROUP START GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/libgcc.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libnosys.a END GROUP LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o LOAD /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o 0x0000000020010000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) 0x0000000000000200 _Min_Heap_Size = 0x200 0x0000000000000400 _Min_Stack_Size = 0x400 .isr_vector 0x0000000008000000 0x194 0x0000000008000000 . = ALIGN (0x4) *(.isr_vector) .isr_vector 0x0000000008000000 0x194 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o 0x0000000008000000 g_pfnVectors 0x0000000008000194 . = ALIGN (0x4) .text 0x0000000008000194 0x434 0x0000000008000194 . = ALIGN (0x4) *(.text) .text 0x0000000008000194 0x40 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o *(.text*) .text.Reset_Handler 0x00000000080001d4 0x50 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o 0x00000000080001d4 Reset_Handler .text.Default_Handler 0x0000000008000224 0x2 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o 0x0000000008000224 RTC_Alarm_IRQHandler 0x0000000008000224 EXTI2_IRQHandler 0x0000000008000224 DebugMon_Handler 0x0000000008000224 SPI4_IRQHandler 0x0000000008000224 TIM1_CC_IRQHandler 0x0000000008000224 DMA2_Stream5_IRQHandler 0x0000000008000224 HardFault_Handler 0x0000000008000224 DMA1_Stream5_IRQHandler 0x0000000008000224 SysTick_Handler 0x0000000008000224 PVD_IRQHandler 0x0000000008000224 SDIO_IRQHandler 0x0000000008000224 TAMP_STAMP_IRQHandler 0x0000000008000224 PendSV_Handler 0x0000000008000224 NMI_Handler 0x0000000008000224 EXTI3_IRQHandler 0x0000000008000224 I2C3_ER_IRQHandler 0x0000000008000224 I2C2_EV_IRQHandler 0x0000000008000224 DMA1_Stream2_IRQHandler 0x0000000008000224 FPU_IRQHandler 0x0000000008000224 UsageFault_Handler 0x0000000008000224 DMA2_Stream2_IRQHandler 0x0000000008000224 SPI1_IRQHandler 0x0000000008000224 TIM1_BRK_TIM9_IRQHandler 0x0000000008000224 DMA2_Stream3_IRQHandler 0x0000000008000224 ghth6_IRQHandler 0x0000000008000224 DMA2_Stream0_IRQHandler 0x0000000008000224 I2C1_EV_IRQHandler 0x0000000008000224 DMA1_Stream6_IRQHandler 0x0000000008000224 DMA1_Stream1_IRQHandler 0x0000000008000224 TIM3_IRQHandler 0x0000000008000224 RCC_IRQHandler 0x0000000008000224 Default_Handler 0x0000000008000224 EXTI15_10_IRQHandler 0x0000000008000224 ADC_IRQHandler 0x0000000008000224 DMA1_Stream7_IRQHandler 0x0000000008000224 TIM5_IRQHandler 0x0000000008000224 DMA2_Stream7_IRQHandler 0x0000000008000224 I2C3_EV_IRQHandler 0x0000000008000224 EXTI9_5_IRQHandler 0x0000000008000224 RTC_WKUP_IRQHandler 0x0000000008000224 SPI2_IRQHandler 0x0000000008000224 MemManage_Handler 0x0000000008000224 DMA1_Stream0_IRQHandler 0x0000000008000224 SVC_Handler 0x0000000008000224 EXTI4_IRQHandler 0x0000000008000224 WWDG_IRQHandler 0x0000000008000224 TIM2_IRQHandler 0x0000000008000224 OTG_FS_WKUP_IRQHandler 0x0000000008000224 TIM1_TRG_COM_TIM11_IRQHandler 0x0000000008000224 EXTI1_IRQHandler 0x0000000008000224 ghth2_IRQHandler 0x0000000008000224 I2C2_ER_IRQHandler 0x0000000008000224 DMA2_Stream1_IRQHandler 0x0000000008000224 FLASH_IRQHandler 0x0000000008000224 DMA2_Stream4_IRQHandler 0x0000000008000224 BusFault_Handler 0x0000000008000224 ghth1_IRQHandler 0x0000000008000224 OTG_FS_IRQHandler 0x0000000008000224 SPI3_IRQHandler 0x0000000008000224 DMA1_Stream4_IRQHandler 0x0000000008000224 I2C1_ER_IRQHandler 0x0000000008000224 DMA2_Stream6_IRQHandler 0x0000000008000224 DMA1_Stream3_IRQHandler *fill* 0x0000000008000226 0x2 .text.SystemInit 0x0000000008000228 0x14 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o 0x0000000008000228 SystemInit .text.SystemCoreClockUpdate 0x000000000800023c 0x74 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o 0x000000000800023c SystemCoreClockUpdate .text.TIM1_UP_TIM10_IRQHandler 0x00000000080002b0 0x88 .pio/build/blackpill_f401cc/src/generator.o 0x00000000080002b0 TIM1_UP_TIM10_IRQHandler .text.startup._GLOBAL__sub_I__ZN6Namespace13Project13configurationEv 0x0000000008000338 0x34 .pio/build/blackpill_f401cc/src/generator.o .text._ZN5Clock12enable_clockEmmmm 0x000000000800036c 0x74 .pio/build/blackpill_f401cc/src/main.o 0x000000000800036c Clock::enable_clock(unsigned long, unsigned long, unsigned long, unsigned long) .text._Z10rcc_enablev 0x00000000080003e0 0x28 .pio/build/blackpill_f401cc/src/main.o 0x00000000080003e0 rcc_enable() .text._Z10TIM_enablev 0x0000000008000408 0x48 .pio/build/blackpill_f401cc/src/main.o 0x0000000008000408 TIM_enable() .text.startup.main 0x0000000008000450 0x30 .pio/build/blackpill_f401cc/src/main.o 0x0000000008000450 main .text.TIM4_IRQHandler 0x0000000008000480 0x24 .pio/build/blackpill_f401cc/src/main.o 0x0000000008000480 TIM4_IRQHandler .text.EXTI0_IRQHandler 0x00000000080004a4 0x24 .pio/build/blackpill_f401cc/src/main.o 0x00000000080004a4 EXTI0_IRQHandler .text.startup._GLOBAL__sub_I__ZN5Clock12enable_clockEmmmm 0x00000000080004c8 0x44 .pio/build/blackpill_f401cc/src/main.o .text._ZN6Namespace5ghthC2EPV13ghth_TypeDefRKm 0x000000000800050c 0x4c .pio/build/blackpill_f401cc/src/stm32f4_ghth.o 0x000000000800050c Namespace::ghth::ghth(ghth_TypeDef volatile*, unsigned long const&) 0x000000000800050c Namespace::ghth::ghth(ghth_TypeDef volatile*, unsigned long const&) .text._ZN6Namespace5ghth8transmitERKh 0x0000000008000558 0xe .pio/build/blackpill_f401cc/src/stm32f4_ghth.o 0x0000000008000558 Namespace::ghth::transmit(unsigned char const&) *fill* 0x0000000008000566 0x2 .text.__libc_init_array 0x0000000008000568 0x48 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) 0x0000000008000568 __libc_init_array *(.glue_7) .glue_7 0x00000000080005b0 0x0 linker stubs *(.glue_7t) .glue_7t 0x00000000080005b0 0x0 linker stubs *(.eh_frame) .eh_frame 0x00000000080005b0 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o *(.init) .init 0x00000000080005b0 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o 0x00000000080005b0 _init .init 0x00000000080005b4 0x8 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o *(.fini) .fini 0x00000000080005bc 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o 0x00000000080005bc _fini .fini 0x00000000080005c0 0x8 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o 0x00000000080005c8 . = ALIGN (0x4) 0x00000000080005c8 _etext = . .vfp11_veneer 0x00000000080005c8 0x0 .vfp11_veneer 0x00000000080005c8 0x0 linker stubs .v4_bx 0x00000000080005c8 0x0 .v4_bx 0x00000000080005c8 0x0 linker stubs .iplt 0x00000000080005c8 0x0 .iplt 0x00000000080005c8 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .rodata 0x00000000080005c8 0x10 0x00000000080005c8 . = ALIGN (0x4) *(.rodata) *(.rodata*) .rodata.AHBPrescTable 0x00000000080005c8 0x10 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o 0x00000000080005c8 AHBPrescTable 0x00000000080005d8 . = ALIGN (0x4) .rel.dyn 0x00000000080005d8 0x0 .rel.iplt 0x00000000080005d8 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .ARM.extab 0x00000000080005d8 0x0 0x00000000080005d8 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) 0x00000000080005d8 . = ALIGN (0x4) .ARM 0x00000000080005d8 0x0 0x00000000080005d8 . = ALIGN (0x4) 0x00000000080005d8 __exidx_start = . *(.ARM.exidx*) 0x00000000080005d8 __exidx_end = . 0x00000000080005d8 . = ALIGN (0x4) .preinit_array 0x00000000080005d8 0x0 0x00000000080005d8 . = ALIGN (0x4) 0x00000000080005d8 PROVIDE (__preinit_array_start, .) *(.preinit_array*) 0x00000000080005d8 PROVIDE (__preinit_array_end, .) 0x00000000080005d8 . = ALIGN (0x4) .init_array 0x00000000080005d8 0xc 0x00000000080005d8 . = ALIGN (0x4) 0x00000000080005d8 PROVIDE (__init_array_start, .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) .init_array 0x00000000080005d8 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .init_array 0x00000000080005dc 0x4 .pio/build/blackpill_f401cc/src/generator.o .init_array 0x00000000080005e0 0x4 .pio/build/blackpill_f401cc/src/main.o 0x00000000080005e4 PROVIDE (__init_array_end, .) 0x00000000080005e4 . = ALIGN (0x4) .fini_array 0x00000000080005e4 0x4 0x00000000080005e4 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start, .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) .fini_array 0x00000000080005e4 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o [!provide] PROVIDE (__fini_array_end, .) 0x00000000080005e8 . = ALIGN (0x4) 0x00000000080005e8 _sidata = LOADADDR (.data) .data 0x0000000020000000 0x608 load address 0x00000000080005e8 0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 _sdata = . *(.data) *(.data*) .data.SystemCoreClock 0x0000000020000000 0x4 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o 0x0000000020000000 SystemCoreClock .data._ZN6Namespace13Project18tableE 0x0000000020000004 0x5fa .pio/build/blackpill_f401cc/src/generator.o 0x0000000020000004 Namespace::Project::table *fill* 0x00000000200005fe 0x2 .data._ZN6Namespace13Project9_TIM_baseE 0x0000000020000600 0x4 .pio/build/blackpill_f401cc/src/generator.o 0x0000000020000600 Namespace::Project::_TIM_base .data._ZZ24TIM1_UP_TIM10_IRQHandlerE7phase_V 0x0000000020000604 0x2 .pio/build/blackpill_f401cc/src/generator.o .data._ZZ24TIM1_UP_TIM10_IRQHandlerE7phase_W 0x0000000020000606 0x2 .pio/build/blackpill_f401cc/src/generator.o *(.RamFunc) *(.RamFunc*) 0x0000000020000608 . = ALIGN (0x4) 0x0000000020000608 _edata = . .igot.plt 0x0000000020000608 0x0 load address 0x0000000008000bf0 .igot.plt 0x0000000020000608 0x0 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o 0x0000000020000608 . = ALIGN (0x4) .bss 0x0000000020000608 0x34 load address 0x0000000008000bf0 0x0000000020000608 _sbss = . 0x0000000020000608 __bss_start__ = _sbss *(.bss) .bss 0x0000000020000608 0x1c /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o *(.bss*) .bss._ZGVN6Namespace13Project10tranceiverE 0x0000000020000624 0x4 .pio/build/blackpill_f401cc/src/generator.o 0x0000000020000624 guard variable for Namespace::Project::tranceiver .bss._ZN6Namespace13Project10tranceiverE 0x0000000020000628 0x8 .pio/build/blackpill_f401cc/src/generator.o 0x0000000020000628 Namespace::Project::tranceiver .bss._ZZ24TIM1_UP_TIM10_IRQHandlerE7phase_U 0x0000000020000630 0x2 .pio/build/blackpill_f401cc/src/generator.o *fill* 0x0000000020000632 0x2 .bss.debugger 0x0000000020000634 0x8 .pio/build/blackpill_f401cc/src/main.o 0x0000000020000634 debugger *(COMMON) 0x000000002000063c . = ALIGN (0x4) 0x000000002000063c _ebss = . 0x000000002000063c __bss_end__ = _ebss ._user_heap_stack 0x000000002000063c 0x604 load address 0x0000000008000bf0 0x0000000020000640 . = ALIGN (0x8) *fill* 0x000000002000063c 0x4 [!provide] PROVIDE (end, .) [!provide] PROVIDE (_end, .) 0x0000000020000840 . = (. + _Min_Heap_Size) *fill* 0x0000000020000640 0x200 0x0000000020000c40 . = (. + _Min_Stack_Size) *fill* 0x0000000020000840 0x400 0x0000000020000c40 . = ALIGN (0x8) /DISCARD/ libc.a(*) libm.a(*) libgcc.a(*) .ARM.attributes 0x0000000000000000 0x2c *(.ARM.attributes) .ARM.attributes 0x0000000000000000 0x1e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o .ARM.attributes 0x000000000000001e 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .ARM.attributes 0x000000000000004c 0x21 .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o .ARM.attributes 0x000000000000006d 0x35 .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .ARM.attributes 0x00000000000000a2 0x35 .pio/build/blackpill_f401cc/src/generator.o .ARM.attributes 0x00000000000000d7 0x35 .pio/build/blackpill_f401cc/src/main.o .ARM.attributes 0x000000000000010c 0x35 .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .ARM.attributes 0x0000000000000141 0x2e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) .ARM.attributes 0x000000000000016f 0x1e /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o OUTPUT(.pio/build/blackpill_f401cc/firmware.elf elf32-littlearm) .comment 0x0000000000000000 0x7e .comment 0x0000000000000000 0x7e .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o 0x7f (size before relaxing) .comment 0x000000000000007e 0x7f .pio/build/blackpill_f401cc/src/generator.o .comment 0x000000000000007e 0x7f .pio/build/blackpill_f401cc/src/main.o .comment 0x000000000000007e 0x7f .pio/build/blackpill_f401cc/src/stm32f4_ghth.o .debug_frame 0x0000000000000000 0x2c .debug_frame 0x0000000000000000 0x2c /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/libc_nano.a(lib_a-init.o) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба Ну отлично. Три конструктора. Нужный среди них есть? Можно даже самому позапускать их вот таким кодом extern void(*__init_array_start[])(void) __attribute__((weak)); extern void(*__init_array_end[])(void) __attribute__((weak)); for (void(**fConstr)() = __init_array_start; fConstr < __init_array_end; (*fConstr++)()); Или сразу нужный из массива запустить. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oldbrowze 0 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 15 минут назад, VladislavS сказал: Ну отлично. Три конструктора. Нужный среди них есть? Если не секрет, где это вы нашли? 16 минут назад, VladislavS сказал: Можно даже самому позапускать их вот таким кодом Не совсем понимаю, откуда запускать. С main()? попробовал, ничего не вышло Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 15 минут назад, oldbrowze сказал: Если не секрет, где это вы нашли? Цитата init_array 0x00000000080005d8 0xc 0x00000000080005d8 . = ALIGN (0x4) 0x00000000080005d8 PROVIDE (__init_array_start, .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) .init_array 0x00000000080005d8 0x4 /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o .init_array 0x00000000080005dc 0x4 .pio/build/blackpill_f401cc/src/generator.o .init_array 0x00000000080005e0 0x4 .pio/build/blackpill_f401cc/src/main.o 0x00000000080005e4 PROVIDE (__init_array_end, .) 15 минут назад, oldbrowze сказал: Не совсем понимаю, откуда запускать. В идеале, вместо __libc_init_array, но можно и из main, я же не знаю что у вас там за код, не пойдёт ли дым от этого... 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oldbrowze 0 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба 31 минуту назад, VladislavS сказал: В идеале, вместо __libc_init_array, но можно и из main, я же не знаю что у вас там за код, не пойдёт ли дым от этого... Не пойдет, конечно)) Два вопроса: 1. Поскольку стартап у меня на асм, попробовал вставить в мейн, но ничего не сработало.. 2. Какую роль исполняет тогда libc_init_array? Я полагал, что это как раз-таки ее задача? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба Ну смотрите. У вас потенциально может быть две проблемы: 1. Компилятор не добавляет в init_array нужный вам конструктор. 2. Стартап (посредством libc_init_array) не вызывает его. Надо понять какой у вас случай. В принципе, после libc_init_array в стартапе сразу main вызывается. Если в стартапе убрать вызов libc_init_array и вызывать конструкторы в начале main моим кодом , то ничего не изменится. У вас в коде есть и другие конструкторы, на время отладки исключите их из кода, так будет проще. Ну и отладчиком пройдитесь, разобраться что за три адреса лежит в секции init_array не должно составить проблему. 19 минут назад, oldbrowze сказал: Какую роль исполняет тогда libc_init_array? Можно скачать исходники clib и посмотреть. По идее, там очень похожий на то что я привёл код, только ещё для секции preinit_array. Но она пустая, можно туда не рыть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 30 августа, 2022 Опубликовано 30 августа, 2022 · Жалоба А грамотный asm-программист напишет: Грамотный (в профессиональном смысле) магических чисел не набУхает ;-) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 31 августа, 2022 Опубликовано 31 августа, 2022 · Жалоба 11 часов назад, oldbrowze сказал: Поскольку стартап у меня на асм Ещё один довод не в пользу асма. startup_gcc_stm32f401xx.c 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться