ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
19 июня
1525402
klen (17.06.2025 17:52, просмотров: 1029)
свежак 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