Компилятор CH32V003
Oct. 4th, 2023 09:10 pmКак оказалось, не так-то и просто собрать для него компилятор: в случае с crossdev никаких примеров в интернете нет, совершенно непонятно, какие опции нужны (попробовал несколько вариантов, но все закончились ошибкой). Тогда решил попробовать вручную. И завелось!
Алгоритм простой:
Какое-то время комп подумал-подумал, и собрал. Ну, а теперь остается попробовать какой-нибудь пример. В отличие от CH203, под который я вообще вменяемого кода не нашел, для CH003 добрый человек почти всю нужную работу проделал, отделяя зерна от плевел. Клонируем:
Там же есть и утилита minichlink, которую нужно собрать (я это сделал еще когда получил девборды, чтобы проверить, что wch-link работает и "видит" камни).
Ну и всë: захожу в examples/blink, делаю export PATH=$PATH:/Big/riscv/bin, запускаю make. Бинарник собирается и тут же запускается minichlink, прошивающий его в камень. Подключаю набортные светодиоды проводочками к PD0 и PD4 (или PC0) — мигают! Ураааа!!!!11
Теперь надо из этого "fun" сделать окружение наподобие того, что я делал для STM32. Пожалуй, и некоторые макросы я по аналогии переделаю, чтобы удобней было. И из ld-скрипта надо выкинуть крестовые секции, чтобы не мешались, но добавить секцию для эмуляции EEPROM…
Алгоритм простой:
- качаем тулчейн git clone --depth=1 https://github.com/riscv/riscv-gnu-toolchain;
- конфигурируем под CH32V003 и CH32V203 (нужные флаги я подсмотрел в их Makefile) ./configure --prefix=/Big/riscv --with-multilib-generator="rv32ec-ilp32e--;rv32imac-ilp32--" (я на всякий случай в качестве корня указал доступную для меня директорию — мало ли, что там из непроверенных источников попрет при сборке);
- запускаем make и… вдруг оказывается, что попытка клонировать нужные репозитории (gcc, newlib и binutils) вусмерть зависают; ОК, клонируем их руками:
- теперь уже можно запустить сборку make -j16.
git clone --depth=1 https://gcc.gnu.org/git/gcc.git git clone --depth=1 https://sourceware.org/git/newlib-cygwin.git ln -s newlib-cygwin newlib git clone --depth=1 https://sourceware.org/git/binutils-gdb.git ln -s binutils-gdb binutils
Какое-то время комп подумал-подумал, и собрал. Ну, а теперь остается попробовать какой-нибудь пример. В отличие от CH203, под который я вообще вменяемого кода не нашел, для CH003 добрый человек почти всю нужную работу проделал, отделяя зерна от плевел. Клонируем:
git clone --depth=1 https://github.com/cnlohr/ch32v003fun.git
Там же есть и утилита minichlink, которую нужно собрать (я это сделал еще когда получил девборды, чтобы проверить, что wch-link работает и "видит" камни).
Ну и всë: захожу в examples/blink, делаю export PATH=$PATH:/Big/riscv/bin, запускаю make. Бинарник собирается и тут же запускается minichlink, прошивающий его в камень. Подключаю набортные светодиоды проводочками к PD0 и PD4 (или PC0) — мигают! Ураааа!!!!11
Теперь надо из этого "fun" сделать окружение наподобие того, что я делал для STM32. Пожалуй, и некоторые макросы я по аналогии переделаю, чтобы удобней было. И из ld-скрипта надо выкинуть крестовые секции, чтобы не мешались, но добавить секцию для эмуляции EEPROM…