ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
12 июля
1529733 Топик полностью
Nikolay_Po (Вчера, 10:43, просмотров: 91) ответил klen на проект выходного дня....вроде заработало! свежак KGP для riscv32-kgp-elf с поддержкой CH32Vxxx (QingKeV4, QingKeV4B, QingKeV4C, QingKeV4F)
Тащ Клён! Разрешите обратиться! Обновился EVT WCH для CH32V3xx. И вот такую штуку они зафигачили в обработчик прерываний: 
__attribute__( ( always_inline ) ) RV_STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
{ NVIC->IRER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); __asm volatile ("fence.i"); }


Код работает в GCC12 от WCH. Компилятор сборки riscv32-kgp-elf_@_x86_64-kgp-linux-gnu_haswell-avx2 с параметрами:


-march=rv32imafc -mabi=ilp32f -mtune=rocket -mcmodel=medlow -msmall-data-limit=8 -msave-restore -mcpu=ch32v317 -Ofast -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fsingle-precision-constant -flto=auto -Wunused -Wuninitialized -Wall -g3

ругается на последнюю строчку кода:


Assembler messages:
.../Core/core_riscv.h:185: Error: unrecognized opcode `fence.i', extension `zifencei' required

При этом, в версии 1.0.1 core_riscv.h этой инструкции не было. В текущей версии заголовков 1.0.2 (китайцы буквально вчера обновили CH32V307EVT.ZIP) fence.i появилась.


Неужели в архитектуре сh32v317 есть zifencei? Если есть, то нужно добавить в набор параметров -mcpu=ch32v317 и иже с ними.