ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
16 октября
1607925 Топик полностью
AlexBi (Сегодня, 11:21, просмотров: 96)
Наверное я что-то не так делаю, но работа с открытым ПО у меня почему-то не заладилась. Исходной задачей было организовать запись Artyery AT32F407 из командной строки в Windows, и вот что из этого получилось. 

Сразу скажу, действовал по подсказкам дипсика, без него я бы не продвинулся и на полшага. Надо очень много знать заранее, что бы суметь этим воспользоваться, интуитивно в этом открытом ПО ни чего не понятно, для меня.

Для решения моей задачи выбор пал на DAPlink (CMSIS-DAP), сделанный из BluePill, и OpenOCD. Скачал готовую сборку OpenOCD 0.12.0 с сайта openocd, в ней есть файл target\artery\at32f4x.cfg, собрал командную строку, запускаю, фиг вам, на экране много букв, что случилось не понятно. Хорошо дипсик перевел это на русский, оказывается файл at32f4x.cfg в сборке есть, но нет встроенного драйвера Flash для AT32, он не добавляется отдельным файлом, а должен быть скомпилирован исходно. Нужна сборка от Artery в ней этот драйвер должен быть. Как подсказал дипсик, китайские партизаны спрятали свою сборку OpenOCD в материалы для AN0130, которая называется типа "как организовать работу в vscode". Скачиваю эти материалы, 500Мб однако, нахожу в них сборку OpenOCD, запускаю, почти работает. Оказалось, что мой DAPlink говорит, что умеет работать как Bulk (v2), но фактически не умеет, поэтому надо сказать OpenOCD что бы работало с ним как с HID. В итоге чип зашился, пусть и не быстро. Но у меня остался свободный вечер и я подумал, почему бы не найти прошивку для BluePill, которая могла бы работать в режиме Bulk, я явно не первый кто задается таким вопросом. Спрашиваю робота, ответ - да есть такой вариант, на github проект dap42. Но там нет готового образа, надо его скомпилировать. Хорошо, погружаюсь в мир свободного ПО в исходниках. Робот сразу мне сказал, что скомпилировать это в винде очень сложно, т.е. не получится, надо ставить MSYS2 и компилировать там. Хорошо, ставлю MSYS2. После установки самого MSYS2 появилось три варианта: MSYS, MINGW64, UCRT64. Дальше надо установить всякие программы в этот MSYS. Вроде все просто, надо запустить pacman с нужными параметрами, хорошо что робот все подсказывает. Запускаю 'pacman -S make python', фиг вам, устанавливается не всё, оказывается основное зеркало не отзывается, а перейти на другое в списке ему ума не хватает. Переставляю порядок зеркал в списке, запускаю, устанавливается. Дальше надо установить компилятор для ARM. Запускаю 'pacman -S mingw-w64-x86_64-arm-none-eabi-gcc', фиг вам, нет такого пакета. Оказывается этот пакет есть только в MSYS2 UCRT64, в MSYS и MINGW64 его нет. Хорошо, установилось в UCRT64. Запускаю компиляцию, все скомпилировалось, но линковка вылетает с ошибкой 'linker script file '../libopencm3/lib\cortex-m-generic.ld (./stm32f042/stm32f042x6.ld)' appears multiple times ' Робот говорит, что изменилась библиотека libopencm3, изменились какие-то опции, а проект dap42 рассчитывает на "старый" вариант и из-за этого не собирается. Действительно, этот libopencm3 подключается к проекту как субмодуль, но мне казалось, что проект должен быть привязан к какому-то правильному коммиту или к нужной ветке, но получается, что оно не так, при клонировании берется последняя версия, которая может быть не совместима с остальным проектом (прямо DLL HELL какой-то). Попытки найти, что надо исправить, что бы оно собралось, успехом не увенчались, робот не смог найти что исправить и откуда берется повторное включение файла. Попытки откатиться на более старые коммиты в libopencm3 тоже не дали результата. В итоге миссия провалена, но хотелось бы понять причину провала. У меня не хватает знаний, умений, опыта для использования ПО в исходных кодах? Возможно я не понимаю общий принцип сборки таких проектов? Или это нормальное явление для исходного кода с GitHub-а?