ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
12 июня
1524156
Связанные сообщения
Ch32Ch32V003Ch579GccGdbGd32Vf103
Про FLASH в CH32V203. Вкратце: похоже, что при частичной записи страницы, автоматически стирается и перезаписывается вся страниц...2025-04-02
Вот моё творчество:2025-03-09
В приличном обществе принят BOM (Byte Order Mark). 0xEF 0xBB 0xBF в начале файла.2025-03-04
У CH32V003 отладка и загрузка ПО по одному проводу идет что ли? О.о2025-02-28
всунул и протянул. gcc теперь умеет так: riscv32-kgp-elf-g++ ..... -mcpu=к1948вк018 ...., мой вклад в импортозамещение - буквы р...2024-10-10
Приемлемо, но всегда в 2 провода обмотки мотались, а 2 выходных что бы 2 диода экономить? Там разбаланс можно получить, даже из ...2024-07-11
Я тут как-то выкладывал самопальный FlashLoader для CH579, там довольно тривиально все. Вот сорцы от него.2024-05-16
Если кто пропустил, флаги компилятора GCC для Embedded разработки.2024-04-11
[09.01.2024] по ходу подпрыгивании на тему "подъема-взлета" ch32v003 всунул в него CoreMark. промерил...2024-01-09
нашел на китайской версии сайта WCH ннфографику про семество riscv ch32 - сделал картинку. теперь легче понять отличия. удобно ч...2023-12-11
[заработало] у кого есть удачный опыт "i2c заработало в ch32v003" ? промудохалсо весь выходной... выводы неоднозначные. может чт...2023-08-09
Пришел десяток CH32V003 в soic8 с Ali по 13 руб. Показались удобными для всяческой мелкой хренотени. Ну и как у китайцев положен...2023-07-26
Тож с хабарки: Zigbee координатор.2023-07-18
Столько полезной информации...2023-07-03
проект выходного дня....вроде заработало! свежак KGP для riscv32-kgp-elf с поддержкой CH32Vxxx (QingKeV4, QingKeV4B, QingKeV4C, ...2023-04-10
Китайцы выложили официяльный ангельский даташит на CH5792021-12-07
Проц среди прочей периферии имеет некий LED Controller. Шо это такое и куда его применить - понять не удается никак. Если кто по...2021-06-01
Ура! Заработало! Если в InfoFlash сбросить битик CFG_BOOT_EN (можно не стирать флеш, ноль поверх единицы прекрасно пишется), то ...2021-05-31
Простейший драйвер Ethernet, просто иллюстрация отправки и приема пакетов2021-05-24
Поддержка чипа в IAR. FlashLoader, регистры, файлы линкера. Просто развернуть поверх установленного IAR в соответствующие папки....2021-05-23
"Сводный системный топик" :-) по китайской микрухе CH579. Предлагаю сюда добавлять кто чего нарыл. Для начала гугл-перевод даташ...2021-05-23
У Cortex-M0 отсутствует регистр VTOR, т.е. перенести вектора прерываний нельзя. Что несколько неприятно для реализации бутлодера...2021-05-23
Починил работу с PHY. В общем, вот минимальный пример. Без прерываний, без нихера. Просто принять и отправить пакет.2021-05-21
Есть китайский сорец на це, в нем камменты на китайском. Кто знает: какая там кодировка используется? Можно ли преобразовать во ...2021-05-18
Обновил. Запилил для IAR поддержку чипов CH57X, если вдруг кому надо. Линковка, прошивка, отладка с регистрами. Развернуть архив...2021-05-15
Что то пока не удается совокупить NRF52 c CH579 без BLE стека, используя только трансивер - железо BLE у китайцы прячут... Решил...2021-05-01
Не знаю пока, как там с радио, но то, что уже наблюдаю, очень сильно впечатляет. Пришла сейчас платка с CH579M. Начал с примера ...2020-12-21
Переведенный датаговн CH579.2020-11-26
кто нибудь знает? GigaDevice планирует в gd32vf всунуть FPU или еще что нибудь, нигде не нашел их планов по захвату поляны - я б...2020-02-12
Использование gdb для распечатки значений в контрольных точках. Демонстрация концепции по ссылке.2019-11-08
IAR сливает однозначно. Наверняка масса багов и нет публичного бэктрекера (у GCC есть). В IAR масса опенсоурс кода не скомпилитс...2016-01-30
свежак GCC под2010-07-27
например2010-02-01
klen (Вчера, 02:08, просмотров: 879)
свежак KGP для riscv:32 gcc16.0.0 bu2.44.50.20250610 хост x86_64 zenv4 avx512 linux. похоже мне наконец то удалась таки сделать полностью статическую сборку. никаких сошек. 

http://klen.org/Files/DevTools/kgcc/x86_64-kgp-linux-gnu_znver4-avx512/riscv32-kgp-elf/riscv32-kgp-elf_@_x86_64-kgp-linux-gnu_zn ver4-avx512_20250611_lespedeza.tar.7z


напоминаю ключевые особенности

1. все либы (весь мултилиб, libgcc, libstc++, .... итд ) насквозняк прошито компиляцией с LTO

2. добавлены атрибуты генерации продога/эпилога обработчиколв прерываний для поддержки аппаратного сохранения контекста если процессор это поддерживает (напримев ядрах QingKeV4 в микросъемах ch32v307)

__attribute__((aligned(4),interrupt))                 void irq_irq_handler() {...}              // обработчик с стандартым управлением генерацией эпилогом/прологом
__attribute__((aligned(4),interrupt("machine_hpe")))  void irq_irq_handler() {...}             // обработчик с аппаратным сохранением контекста( сохраняются все регистры )
__attribute__((aligned(4),interrupt("machine_hpei"))) void irq_irq_handler() {...}           // обработчик с аппаратным сохранением контекста( сохраняются только целочисленные регистры )

как это работает и как я это реализовал я писал здесь https://caxapa.ru/1300017.html


3. под наши микроконтроллерные задачи сделан кастомный мультилиб

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32ec.ilp32e.medlow

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32ec.ilp32e.medlow.Ofast

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32ec.ilp32e.medlow.Os

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imac.ilp32.medlow

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imac.ilp32.medlow.Ofast

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imac.ilp32.medlow.Os

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imafc.ilp32f.medlow

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imafc.ilp32f.medlow.Ofast

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imafc.ilp32f.medlow.Os

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imbc.ilp32.medlow

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imbc.ilp32.medlow.Ofast

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imbc.ilp32.medlow.Os

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imc.ilp32.medlow

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imc.ilp32.medlow.Ofast

./kgcc/riscv32-kgp-elf/riscv32-kgp-elf/lib/kgp/rv32imc.ilp32.medlow.Os


4. для варианта rv32imafc.ilp32f.medlow* ( что соответсвует ch32v3xx у которых есть FPU ) добавлен порт библиотеки GNU GSLперекостыленный под базовый тип float.


5. newlib в двух вариантах:

обычный :

--enable-newlib-multithread \

--disable-newlib-supplied-syscalls \

--enable-newlib-io-long-long \

--enable-newlib-io-c99-formats \

--enable-newlib-reent-check-verify \

--enable-newlib-register-fini \

--enable-newlib-retargetable-locking


и nano

--enable-newlib-multithread \

--disable-newlib-supplied-syscalls \

--enable-newlib-reent-check-verify \

--enable-newlib-reent-small \

--enable-newlib-retargetable-locking \

--disable-newlib-fvwrite-in-streamio \

--disable-newlib-fseek-optimization \

--disable-newlib-wide-orient \

--enable-newlib-nano-malloc \

--disable-newlib-unbuf-stream-opt \

--enable-lite-exit \

--enable-newlib-global-atexit \

--enable-newlib-nano-formatted-io


5. протянуты через описание микроархитектур ядра микросхем CH32, GD32 и Амура ( посмотреть так: riscv32-kgp-elf-gcc --target-help ) )

Known valid arguments for -mcpu= option:

sifive-e20 sifive-e21 sifive-e24 sifive-e31 sifive-e34 sifive-e76 sifive-s21 sifive-s51 sifive-s54 sifive-s76 sifive-u54 sifive-u74 sifive-x280 sifive-p450 sifive-p670 thead-c906 xt-c908 xt-c908v xt-c910 xt-c910v2 xt-c920 xt-c920v2 tt-ascalon-d8 xiangshan-nanhu xiangshan-kunminghu mips-p8700 gd32vf103 к1948вк018 k1948vk018 ch32v003 ch32m030 ch32v103 ch32l103 ch32v203 ch32v208 ch32x033 ch32x034 ch32x035 ch32v303 ch32v305 ch32v307 ch32v317

Known valid arguments for -mtune= option:

rocket sifive-3-series sifive-5-series sifive-7-series sifive-p400-series sifive-p600-series tt-ascalon-d8 thead-c906 xt-c908 xt-c908v xt-c910 xt-c910v2 xt-c920 xt-c920v2 xiangshan-nanhu xiangshan-kunminghu generic-ooo size mips-p8700 bamblebee scr1 qkv2a qkv3a qkv3b qkv3c qkv4a qkv4b qkv4c qkv4f sifive-e20 sifive-e21 sifive-e24 sifive-e31 sifive-e34 sifive-e76 sifive-s21 sifive-s51 sifive-s54 sifive-s76 sifive-u54 sifive-u74 sifive-x280 sifive-p450 sifive-p670 gd32vf103 к1948вк018 k1948vk018 ch32v003 ch32m030 ch32v103 ch32l103 ch32v203 ch32v208 ch32x033 ch32x034 ch32x035 ch32v303 ch32v305 ch32v307 ch32v317


6. новая комбинация оптимизаций хорошо подходящая для маленькихн но злых mcu -Oz ( в следующий раз думаю что добавлю этот вариант в мультилиб)


7. С++: gnu++26 cо всеми сопутствующими блэкджеками и шлюхами (например coroutine реализованные на уровне языка )


8. при сборке libgcc выдран с мясом и корнями функционал отвечающий за размотку стека С++ исключений - ибо нехер хуйней заниматся в эмбеддеде.


9. Вроде бы наконец то удалось все исполняймые файлы собрать в виде статических бинарей... хахахахаааа!