свежак KGP для мелко-riscv. народ негодует от того что я бинари для
хост проца zen4 avx512 собираю... сочувствую. для бомжей в госНИИ
(меня интересует а как они масдай 11 ставят на это?) и любителей
замшелого антиквара - собрано статически и для haswell avx2. масье Nikolay_Po обещался потестить. binutils
GNU ld (Klen's_GNU_package_(KGP)_for_target::riscv32-kgp-elf(ilp32/ilp32f/medlow/Os/Ofast/lto)_host::x86_64-kgp-linux-gnu_haswell-avx2<<lespedeza>>) 2.44.50.20250617
gdb
GNU gdb (Klen's_GNU_package_(KGP)_for_target::riscv32-kgp-elf(ilp32/ilp32f/medlow/Os/Ofast/lto)_host::x86_64-kgp-linux-gnu_haswell-avx2<<lespedeza>>) 17.0.50.20250617-git
gcc
16.0.0 20250617 (experimental) (Klen's_GNU_package_(KGP)_for_target::riscv32-kgp-elf(ilp32/ilp32f/medlow/Os/Ofast/lto)_host::x86_64-kgp-linux-gnu_haswell-avx2<<lespedeza>>)
newlib/newlib-nano
4.5.0
все что выше - должно работать статически на любой машине haswell avx2 и выше со всеми не очень старыми ядрами linux
если не захочет и будет упитася - сообщайте сюда, буду исправлять косяк.
на всякий случай закинул в архив openocd-wch
Open On-Chip Debugger 0.11.0+dev-gcc55ef9b3 (2025-06-17-15:51)
однако оное невозможно слинковать статически ибо оно требует libudev... а это часть systemd, я не знаю как это обойти - только если линковать под конкретное ядро что ли ...
тем не менее /lib/ сложил сошки которые openocd-wch требует. можно попробовать оттуда их через ldconfig взять.
напоминаю нахуа возможно кому это все нужно:
1. gcc16
наисвежайший С++ (-std=c++26 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
починеный LTO по сравнению в 15 веткой, во всяком случае я забыл про периодические взбрыки и глюки
моя поддержка процессов -mcpu/-mune=< scr1 qkv2a qkv3a qkv3b qkv3c qkv4a qkv4b qkv4c qkv4f gd32vf103
к1948вк018 k1948vk018 ch32v003 ch32m030 ch32v103 ch32l103 ch32v203
ch32v208 ch32x033 ch32x034 ch32x035 ch32v303 ch32v305 ch32v307 ch32v317>
моя реализация поддержки аппаратного стека на прерываниях (актуально для ядер qkv2a qkv3a qkv3b qkv3c qkv4a qkv4b qkv4c qkv4f) :
__attribute__((aligned(4),naked)) обработчик "голый" без генерации эпилога/пролога. код тела обработчика (аффтар обработчика) должен сам позаботьися о сохранении и восстановлении контекста и генерации команды "mret"
__attribute__((aligned(4),interrupt)) обработчик с стандартным (генерит компилятор) управлением генерацией эпилогом/прологом
__attribute__((aligned(4),interrupt("machine_hpe"))) обработчик с аппаратным сохранением контекста( сохраняются все регистры )
__attribute__((aligned(4),interrupt("machine_hpei"))) обработчик с аппаратным сохранением контекста( сохраняются только целочисленные регистры )
выдрана поддержка всратых С++ исключений.
собрано gcc/newlib с мультлибом:
/lib/kgp/rv32ec.ilp32e.medlow
/lib/kgp/rv32ec.ilp32e.medlow.Ofast
/lib/kgp/rv32ec.ilp32e.medlow.Os
/lib/kgp/rv32imac.ilp32.medlow
/lib/kgp/rv32imac.ilp32.medlow.Ofast
/lib/kgp/rv32imac.ilp32.medlow.Os
/lib/kgp/rv32imafc.ilp32f.medlow
/lib/kgp/rv32imafc.ilp32f.medlow.Ofast
/lib/kgp/rv32imafc.ilp32f.medlow.Os
/lib/kgp/rv32imbc.ilp32.medlow
/lib/kgp/rv32imbc.ilp32.medlow.Ofast
/lib/kgp/rv32imbc.ilp32.medlow.Os
/lib/kgp/rv32imc.ilp32.medlow
/lib/kgp/rv32imc.ilp32.medlow.Ofast
/lib/kgp/rv32imc.ilp32.medlow.Os
это сделагно чтоб лучше приладится к конкретному микроконтроллеру. т.е если всунуть ключи :
-mcpu=ch32v303 -mcmodel=medlow -mabi=ilp32f -Os
то при линковке автоматом потянутся либы из /lib/kgp/rv32imafc.ilp32f.medlow.Os
2. gdb - просто свежий.
3. могут быть косяки но я старалсо!
http://klen.org/Files/DevTools/kgcc/x86_64-kgp-linux-gnu_haswell-avx2/riscv32-kgp-elf/riscv32-kgp-elf_%40_x86_64-kgp-linux-gnu_h aswell-avx2.tar.lzma