by Anonymous » 02 Apr 2025, 06:05
Ich bin C ++ - Entwickler für eingebettete Systeme, dh Mikrocontroller, nicht eingebettete Linux. Daher dieser Beitrag. bereits. Dies liegt daran, dass St. Hal und Cubemx tatsächlich C und nicht C ++ sind. Daher generiert Cubemx einen Anruf wie mx_uart_init und platziert ihn in den Main. Dies: < /p>
Code: Select all
Reset_Handler:
ldr sp, =_estack /* set stack pointer */
/* Call the clock system initialization function.*/
bl SystemInit
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
adds r3, r3, #4
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
bcc CopyDataInit
/* Zero fill the bss segment. */
ldr r2, =_sbss
ldr r4, =_ebss
movs r3, #0
b LoopFillZerobss
FillZerobss:
str r3, [r2]
adds r2, r2, #4
LoopFillZerobss:
cmp r2, r4
bcc FillZerobss
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
.size Reset_Handler, .-Reset_Handler
Systeminit: führt normalerweise sehr grundlegende Dinge wie das Festlegen der Vektortabelle und das Konfigurieren von FPU. /> LoopfillzerobSS: Alle Null -Initialisierungen wie ein Array oder eine Struktur, die initialisiert ist. Darüber hinaus kann zumindest mit GCC
Attribut ((Konstruktor)) verwendet werden, um dieser Liste explizit eine C -Funktion hinzuzufügen. init_hardware zum Startcode rechts Bevor __libc_init_array und platzieren alle mx_init -Funktionen in init_hardware, um zu versichern, dass sie vor einem Konstruktor genannt werden? Code? < /li>
Was sind Ihre Vorschläge, um dieses
Problem zu behandeln? Initialisierungscode einmal im Konstruktor.>
Ich bin C ++ - Entwickler für eingebettete Systeme, dh Mikrocontroller, nicht eingebettete Linux. Daher dieser Beitrag. bereits. Dies liegt daran, dass St. Hal und Cubemx tatsächlich C und nicht C ++ sind. Daher generiert Cubemx einen Anruf wie mx_uart_init und platziert ihn in den Main. Dies: < /p>
[code]Reset_Handler:
ldr sp, =_estack /* set stack pointer */
/* Call the clock system initialization function.*/
bl SystemInit
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
adds r3, r3, #4
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
bcc CopyDataInit
/* Zero fill the bss segment. */
ldr r2, =_sbss
ldr r4, =_ebss
movs r3, #0
b LoopFillZerobss
FillZerobss:
str r3, [r2]
adds r2, r2, #4
LoopFillZerobss:
cmp r2, r4
bcc FillZerobss
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
.size Reset_Handler, .-Reset_Handler
[/code]
Systeminit: führt normalerweise sehr grundlegende Dinge wie das Festlegen der Vektortabelle und das Konfigurieren von FPU. /> LoopfillzerobSS: Alle Null -Initialisierungen wie ein Array oder eine Struktur, die initialisiert ist. Darüber hinaus kann zumindest mit GCC [b] Attribut [/b] ((Konstruktor)) verwendet werden, um dieser Liste explizit eine C -Funktion hinzuzufügen. init_hardware zum Startcode rechts Bevor __libc_init_array und platzieren alle mx_init -Funktionen in init_hardware, um zu versichern, dass sie vor einem Konstruktor genannt werden? Code? < /li>
Was sind Ihre Vorschläge, um dieses [url=viewtopic.php?t=19220]Problem[/url] zu behandeln? Initialisierungscode einmal im Konstruktor.>