Skip to main content

Тулчейн для STM8 под линукс на базе SDCC

Установка

SDCC

Есть соблазн установить из репозитория:

но, поскольку там довольно старая версия (для такой новой для sdcc архитектуры, как stm8), то рекомендую ставить последний снапшот отсюда: находим нужную нам архитектуру i386 или AMD64 и качаем предскомлиленный архив бинарников:

 Проверить корректную установку можно командой: 

hex2bin

 Аналогично устанавливаем последнюю версию hex2bin, которой получаем бинарь, который в свою очередь будем кормить программатору:

stm8flash

Есть такой замечательный программатор stm8flash, который позволяет зашивать STM8 через стандартный st-link (или его китайские клоны) по интерфейсу SWIM; скачиваем и устанавливаем:

 Дополнительно хорошо бы установить рулы для возможности работы с st-link из под обычного юзера, для чего заимствуем готовые файлы из опенсорсного проекта st-link’а для STM32: 

Альтернативные инструменты

Справедливости ради, отмечу существование stm8flasher — утилиты, которой можно шить по UART старшие STM8, имеющие встроенный загрузчик, но в силу того, что не работаю с «жирными» STM8 эту утилиту не пробовал.

Также, начиная с весны 2016г, стал подностью бесплатным французский компилятор Cosmic, к сожалению, версия для линукса хоть и существует, но недоступна свободно и поставляется на отдельных условиях (с демоном лицензий flex lm).

Использование

Пример

Компиляция проекта из одного файла-исходника:

Конвертация в bin:

Зашивка:

Разбор примера

sdcc

 Основные опции sdcc, которые скорее всего потребуется использовать:

  •  -c для компилирования в объектник (типичный проект с несколькими исходными файлами,  линковка будет запущена отдельной командой)
  • —std-c99 для компиляции согласно стандарта C99 (в действительности, C99-фичи поддержаны только частично, но на моих исходниках необходимо указывать эту опцию, инача sdcc вылетает с ошибкой)
  • —opt-code-size для оптимизации выходного байт-кода по размеру

 hex2bin

  • -p [value] — значение (в hex), которым будут заполняться пустые ячейки (0х75 — недопустимый опкод для архитектуры stm8, его выполнение приводит к переходу в процедуру reset)
  • -s [address] — также есть опциональная возможность задания стартового адреса  (в hex, фактически — смещение)

stm8flash

Общий формат команды:

Note!: В последней версии появилась поддержка формата hex и возможность программирования OptionBytes.

 

Читать далее

Автовставка истории изменений в техническую документацию на AsciiDoc

Задача

При написании технической документации является хорошим тоном включать секцию с историей изменений (т.н. Revision History). Как правило, сама документация также хранится в гите и имеет свою историю изменений, поэтому грех этим не воспользоваться, чтобы автоматизировать процесс.

Решение

Рассмотрим решение задачи на базе стандарта AsciiDoc, который в последнее время набирает всё большую популярность среди прогрессивно настроенных инженеров и причастных к их результатам деятельности тех.писателей.

Примем, что для истории ревизий нам необходима следующая информация:

  • дата изменения
  • имя автора изменения
  • суть изменения

Для формирования таблицы с историей ревизий используем замечательную команду git log:

— как видим на выходе отличная заготовка для asciidoc-таблицы.

Подробнее об опциях команды:

  • —max-count= — указываем желаемое число последних коммитов
  • —branches= — если интересуют только конкретные ветки (например release/production), указываем тут
  • —tags= — аналогично с тегами, можно задавать паттерн типа rev*.*, v?.?.? и т.п.
  • —no-merges — не выводить в лог слияния веток

У меня установлен гит довольно старый (v1.8), в новых версиях появилась кудо более гибкая кастомизация даты. Тонкую настойку на славянский формат даты «19.2.2015» в новом гите можно осуществить следующей командой:

Также в зависимости от того хранится ли документация отдельно либо является частью репозитария СФ-блока будет различаться git log, возмодно потребуется указывать конкретный исходник документа или группу исходников, например:

или: 

Итоговый скрипт

Получившийся скрипт выглядит следующим образом:

Вызов скрипта: 

В сборочном .adoc-файле включаем сгенерированный файл в соответствующую секцию: 

Также будет полезно добавить revhist.adoc в .gitignore (как файл, генерируемый автоматически); и в мейкфайл — как зависимость при сборке конечного PDF.

 

 

Читать далее

asciidoctor-pdf: asciidoc для самых маленьких

Для тех кто хотел попробовать подход единого источника при написании технической документации, но кого смущала монстроузность настройки AsciiDoctor‘a (все эти DocBook, xslt, fopub и прочие прелести) есть альтернатива, которая позволит пощупать все прелести аскидока с легким стартом.

Преимущества документации в asciidoc

Для тех, кто забыл или не в теме, напомню основные пункты:

  • Текстовый формат мета-языка разметки (тут же такие wiki-форматы как Markdown, reStructuredText, DokuWiki, etc)
  • Контроль изменений (версионирование в отличие от бинарных форматов документов, позволяющее делать простой diff между ревизиями
  • WYSIWIG-превью в лайв-режиме
  • Возможность накрутки своего корпиративного стиля при генерации различных выходных форматов: pdf, epub,mobi, fb2, html

asciidoctor-pdf

Основное отличие от AsciiDoctor’a  — использование вместо апачевского FO-процессора FOP (java) движка Prawn (Ruby). Также используется значительно облегченная (по сравнению с AsciiDoctor) система конфигов на основе микроразметки YAML.

Установка

Несмотря на то, что asciidoctor-pdf требует наличия ruby >= 2.0.0, по факту его можно установить без ошибок и эксплуатировать лишь на более свежих версиях, к несчастью в CentOS7 установлена 2.0.0:

Чтож, методом проб, ошибок и гугленья устанавливаем 2.3.1:

Ставим зависимости для asciidoctor-pdf:

Ставим сам asciidoctor-pdf:

либо последнюю версию в разработке:

Опционально, для подсветки синтаксиса можно доустановить один из движков на выбор (рекомендуют Rouge как предпочтительный):

Настройка

Конфиг можно иметь по-проектно, либо вынести основные настройки в глобальный конфиг (в нём полезно например хранить настройки шрифтов):

Примеры конфигов для оформления, которые можно использовать как базу  для оформления собственных стилей:

Тестовый запуск примера из репозитория asciidoctor-pdf:

Кириллизация

Шрифты

Из-за подхода к набору символов в шрифтах по умолчанию на кириллических документах вылезает неприятное сообщение:

И кирилические символы не отображаются в выходном документе. Эту проблему можно решить, если подключить внешние шрифты, для этого надо сделать две вещи:

  1. Прописать в конфиг-файле соответствие шрифта и файла, в котором он содержится
  2. При вызове asciidoctor-pdf указать путь к папке, в которой хранятся шрифты (к сожалению, на текущий момент можно передать только один путь)

В конфиге пишем что-то вроде:

Далее указываем где будут использоваться в документе эти шрифты:

Теперь вызываем с указанием, в которой хранятся шрифты (в RHEL/CentOS это, например, /usr/share/fonts):

Метазаголовки

Для корректной локализации различных служебных маркеров, в самом файле документа adoc в самом начале переопределяем переменные (на свой корпоративный вкус):

Дополнительные утилиты

Также в комплекте идёт шелл-скрипт optimize-pdf, который использует Ghostscript для сжатия и минификации выходного pdf.

В системе должен быть установлен Ghostscript >= 9.10, поэтому Cent OS7  в пролете:

 

Ссылки по теме

Читать далее

Работа с IP-XACT на примере Kactus2 в CentOS7

Сборка и установка

Устанавливаем зависимости:

Скачиваем и собираем:

(далее…)

Читать далее

[Clock Solution] Формирователи тактовых сигналов

В этой заметке буду  собирать информацию о решениях для формирования и менеджмента тактовых сигналов (преимущественно для ПЛИС), добытые из схемотехнических решений (открытых и не очень) разнообразных отладок на FPGA.

ФАПЧи, «менеджеры» и разветвители

  •  SI5342/SI5344/SI5345 — $20/$20/$30, ФАПЧ с ультранизким джиттером, 2/4/10 диф.выходами и четырьмя входами, управляемая по I2C, диапазон выходных частот: от 100 Гц до 1028 МГц
  • SI5338A$15, ФАПЧ с низким джиттером, четырьмя диф.выходами и двумя входами, управляемая по I2C, диапазон выходных частот: 0.16..710 МГц
  • SI5351B$2.5, ФАПЧ и независимый ГУН (управляемый с наружной ножки),  восемь выходов, управление по I2C, диапазон выходных частот: 2,5 кГц..200 МГц
  • SI5351A$1, две ФАПЧ, от 3х до 8ми выходов, управление по I2C, диапазон выходных частот: 2,5 кГц..200 МГц

 

 Источники тактового сигнала

  • SiT8208A — $1.5, MEMS-генератор с перестраиваемой выходной частотой в пределах 1..80 МГц и стабильностью до ±20ppm, доступные размеры: от 2*2.5мм до 5*7мм

Читать далее

Начало работы с ATMEL SAM V71 в CLI

Установка arm-none-eabi-gcc

Ставим по привычке в /opt:

Настроечный файл тулчейна /opt/arm-2015q3.setup:

(далее…)

Читать далее

[PoM] Power-on-Module: питание мощных FPGA-потребителей на PCB

Задача

  1. Подбор All-in-One компактных DC/DC-преобразователей для обеспечения всех нужных питаний для нежирных ПЛИС. В большинстве из них сделан упор на компактность и минимальное вмешатесльтво в управление работой со стороны системы
  2. Подбор мощных DC/DC-преобразователей на несколько (десятков) ампер для запитки жирных ПЛИС и/или процессоров. Большинство из них проектировались специально для использования с сильножружими ПЛИС

 

Компакт класс (All-in-One)

Linear Technology

  • LTC3569 — отлично подойдёт для какого-нибудь середнячка типа Spartan-6: три DC/DC (1.2A и 2×600мA), высокая частота преобразования (до 3МГц —  можно индуктивности покомпактнее), входной диапазон: 2.5..5.5V (хочешь от USB питай, хочешь от LiIon)

(далее…)

Читать далее