ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
12 ноября
1553643 Топик полностью
il-2 (Сегодня, 06:36, просмотров: 48) ответил AlexG на Перенес в MounRiver Studio 2 (RISC-V) из IAR(ARM) старый проект на смеси C и C++, а конструкторы классов то и не вызываются. На сколько я понимаю, в startup от WCH не хватает вызова функции которая всё это делает. Где-бы взять нормальный полноценный startup для CH32V?
Я давно про это писал, но народ как-то не ценит, никому не надо. 

https://caxapa.ru/1504568.html

https://caxapa.ru/1345348.html

В общем - в ассемблерном стартапе надо заменить вызов _main на _start. Обнуление .bss убрать - он есть в _start

Для корректного обнуления .bss с помощью _start надо еще добавить в линкерный скрипт нужные метки. Подробностей не помню, но у меня там такой комментарий:

/* GCC v8 use _edata..._end for init BSS section to 0 (_start) */

/* GCC v12 use __bss_start..._end for init BSS section to 0 (_start) */

Т.е. желательно задать все 3 метки - _edata = __bss_start, и _end