Код запуска MCU и C ++ - Статическая инициализация фиаскоC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Код запуска MCU и C ++ - Статическая инициализация фиаско

Сообщение Anonymous »

Я разработчик C ++ для встроенных систем, что означает микроконтроллеры, а не встроенный Linux. Отсюда этот пост. < /P>
Проблема: < /p>
Допустим, например, у меня есть класс, который реализует какой -то запатентованный протокол (myprotocol) на основе UART и моего класса, следовательно, нуждается в ссылке на структуру UART (HUART), который генерируется CUBEMX. уже. Это потому, что St Hal и Cubemx на самом деле C, а не C ++. Таким образом, Cubemx генерирует вызов, такой как MX_UART_INIT и помещает его в основное. это: < /p>

Код: Выделить всё

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: обычно делает очень основные вещи, такие как настройка векторной таблицы и настройка FPU. /> loopfillzerobss: Все нулевые инициализации, такие как массив или структура, которая нулевой инициализирован. Кроме того, по крайней мере, с помощью GCC атрибута ((конструктор)) можно использовать для явного добавления функции C к этому списку. init_hardware к коду запуска вправо bevor __libc_init_array и размещение всех функций mx_init в init_hardware, чтобы убедиться, что они вызываются перед каким -либо конструктором? Код? Код инициализации один раз в его конструкторе.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ion-fiasco
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»