Компилятор SDCC для STM8 в linux

26 января 2014 г. 17:03 С   STM8  

STM8 это дешевые 8и-битные микроконтроллеры от фирмы ST. По начинке и цене эти контроллеры превосходят популярные AVR, но одной из больших проблем в их использовании является отсутствие  открытого компилятора, в том числе для ОС linux, под которой работает достаточно много программистов встраиваемых систем. Одним из свежих, и еще толком не испытанных решений является мультицелевой компилятор SDCC - Small Device C Compiler, поддерживающий стандарт ANSI C. Поддержка STM8 еще официально даже не объявлена, однако уже частично реализована. Я решил попробовать компилятор в действии и скомпилировать им простой код, мигающий светодиодами на STM8S. Прошивку я выполнял с помощью программатора Versaloon так как под St-link я пока не нашел linux-софта, способного работать по SWIM. Я купил дешевые контроллеры STM8S с памятью всего в 8 Кб флеша, по этому в них нету встроенного UART-бутлоадера. Для обладателей камней с бутлоадером - 32K (Medium Density) and 128K (High Denisty) - можно в качестве программатора использовать обычный UART преобразователь (например USB-UART на cp1202), а в качестве прошивающего софта попробовать stm8flash (порт бутлоадеровской прошивалки под STM32 stm32flash).

Для того чтобы использовать структуры с периферией и дефайны битов я использовал стандартную библиотеку от ST STM8S/A Standard peripheral library 2.1.0. Так как библиотека не поддерживает компилятор SDCC, мне ее пришлось немного доработать напильником.

Скачать плату, библиотеку STM8 SPL для sdcc, и пример.

Сборка texane/stlink MinGW под Windows

26 января 2014 г. 13:14 STM32  

Texane/stlink - открытое кроссплатформенное программное обеспечение для работы с программаторами st-link и st-link/v2 и предназанченое для программирования микроконтроллеров STM32. В состав пакета входит утилита для обычной прошивки st-flash, и Debug-сервер st-util. Проект расположен на github: https://github.com/texane/stlink.

В этой статье я дам подробный пошаговый туториал по сборке пакета под windows. Мы установим чистый MinGW и linux-подобную среду MSYS, соберем в них библиотеку libusb-1.0 и пакет stlink. Уже собранную мной версию можете скачать тут: Собранный texane stlink 26.01.14 для win32 и инструменты для сборки. Также в архиве присутствуют инсталляторы и дополнительные пакеты которые будут использованы в статье.

Уменьшить Eclipse в GNOME 3 (GNOME Shell)

5 января 2014 г. 17:58 eclipse   gnome  

Запустив eclipse в GNOME Shell можно заметить, что интерфейс мягко говоря, выглядит не рационально. Толстые заголовки панелей, широкие полоски пунктов меню приводят к очень маленькой рабочей области редактора кода и неудобному расположению элементов в других пунктах меню. Чтобы решить эти проблемы, можно создать специальную тему для Eclipse, которая сделает его компактным и удобным. О том как это сделать и будет рассказано в статье.

Модуль регулируемого БП на DC-DC МС34063

28 декабря 2013 г. 22:56 электроника   питание  

Данный модуль может быть использован как с источником постоянного напряжения так и с каким-нибудь понижающим трансформатором с переменным выходным напряжения до 40 В. Модуль рассчитан на питание устройств током до 500 мА. Выходное регулируемое напряжение от 1,8 В до напряжения питания минус несколько вольт падающих на диодном мосте. Важно заметить что верхний предел выходного напряжения также зависит от номинала переменного резистора (при 20 кОм до 26 В).

В основе модуля используется популярный DC-DC преобразователь МС34063. По сути использование DC-DC преобразователей является альтернативой использованию линейных регуляторов(стабилизаторов) напряжений, прозванных на отечестве кренками от названия микросхемы КР142ЕНх. Основаная проблема линейных регуляторов напряжения заключается в линойной зависимости мощности выделяемой на самом стабилизаторе от разности входного и выходного напряжений. Соответственно при большом входном напряжении и маленьком выходном у линейного регулятора будет низкий КПД, и большая часть входной мощности уйдет на нагрев самого регулятора, в этом случае еще и нужно позаботится о достаточном охлаждении регулятора.

DC-DC преобразователи, используют в корне другой механизм стабилизации напряжения. Если линейный регулятор представляет собой делитель напряжения, одно из плеч которого изменяет свое сопротивление, что бы обеспечить одинаковое выходное напряжение, то в DC-DC работает в ключевом режиме, обеспечивая то свое максимальное сопротивление, то минимальное. Такое переключение выполняется очень быстро и часто, отсюда эти стабилизаторы напряжения называют импульсными, или широтно-импульсными. Когда электронщики обсуждают цепи питания, то часто можно услышать как они называют DC-DC регуляторы просто ШИМ-ами. А вот обеспечение стабилизированного постоянного напряжения тут выполняется с помощью еще одного элемента называемого интегратором. В качестве интегратора используется конденсатор, интегрирующий напряжение и катушка, интегрирующая ток.

Самодельный программатор/отладчик ST-LINK/V2 для STM8 и STM32

18 ноября 2013 г. 21:03 STM32   STM8  

ST-LINK/V2 позволяет программировать и отлаживать контроллеры STM32 и STM8, и поддерживается такими популярными средами разработки как Keil uVision, IAR EWARM, CoIDE, IAR EWSTM8 и другими. Оригинальный программатор стоит около 50$ (в чайне видел такой же за 35$). Также у этого программатора куча китайских клонов, различающихся степенью урезаности (отсутствием компонентов), вплоть до свистков за 7$. Кроме того, программатор распаян на платах STM*Discovery, опять же в урезанной версии и умеющий работать только с STM32 или только с STM8 в зависимости от того, какая дискавери. 

Но иногда проще и интереснее сделать программатор самому, особенно если для этого не  нужно много усилий. Все детали мне обошлись меньше чем в 5$ в местном магазине радиодеталей. Прошить сам программатор можно по интерфейсу UART (например с помощью любого преобразователя USB- UART).

Что умеет программатор/отладчик ST-LINK-V2:

  • Прошивка и отладка STM32 по интерфейсу SWD (пины SWCLK и SWDIO) + RST (не обязательно)
  • Необязательный пин SWO для последовательного терминала с внешним STM32 без дополнительных UART-ов и т.д. (Можно выполнять printf/scanf на STM32 с помощью программатора)
  • Прошивка и отладка STM8 по интерфейсу SWIM 
  • Выдача внешнего питания 3.3В от программатора
  • Подключение по mini-usb

stlink2cloneview(1).jpg

Дешевый преобразователь USB-UART на CP2102

7 октября 2013 г. 1:28 UART  

UART, пожалуй, является самым простым интерфейсом для связи какого-нибудь цифрового устройства с ПК. Для того, чтобы физически получить информационные линии UART-а от ПК, которые можно подключать к микросхеме с уровнями CMOS/TTL, необходимо использовать, либо переходник RS232-UART (по сути просто преобразователь уровней, например MAX232), либо переходник USB-UART. В связи с тем, что RS232 весьма устарел да и откровенно говоря неудобен, нужен второй вариант.

Из всех USB-UART преобразователей, мне известны, по крайней мере 4 варианта:

  • FT232RL от FTDI - стоит ~4$ (хотя есть более продвинутый вариант дороже), кроме UART-а, есть еще куча всего, также можно реализовать управление выводами I/O, и на основе этого работу со всякими протоколами, можно купить в удобно паяемом SSOP-28.
  • PL2303 от Prolific - стоит тоже около 4$, да и встретить в продаже саму микросхему сложно. Зато она очень часто встречается в готовых китайских преобразователях, видел в SSOP-28.
  • Любой микроконтроллер с программной или аппаратной реализацией интерфейса USB и UART и внутреннего буфера между ними. Возможно это самый дешевый способ  для создания преобразователя USB-UART, но учитывая что сам контроллер тоже нужно чем-то прошить удобен не для всех: нужна прошивка, драйвера к ней, программатор и соответственно время что бы все это реализовать либо внедрить.
  • CP2102 от SILICON LABS - стоит ~2$, дешевый аналог FT232 и PL2303, именно по этому я буду использовать его. Большим минусом микросхемы является маленький корпус QFN-28. Тем не менее мне удалось с первого раза запаять его без фена с использованием обычной зажигалки. Также корпус вполне можно запаять заостренным паяльником.

Тест скорости браузеров

28 сентября 2013 г. 14:30 Аналитика   web  

Общение, работа, образование, развлечения, все эти области человеческой деятельности все дальше и дальше уходят в веб, и для доступа к ним уже достаточно одной лишь программы - интернет браузера. Сколько часов в день вы проводите в программе для просмотра интернета? Три? четыре? десять часов? А довольны ли вы скоростью работы своего браузера? Временем открытия открытия страничек, отображением графики на сайтах, временем реакции на нажатия кнопок, ссылок и т. д. Хотелось ли бы вам оптимизировать это время?

В статье я не буду выполнять ни каких рассуждений по поводу скорости браузеров, а вместо этого я приведу результаты тестирования нескольких браузеров, самых популярных на данный момент. Тесты будут выполнены с помощью онлайн-бенчмарка  Peacekeeper, финской компании Futuremark. Бенчмарк тестирует разнообразные возможности браузера, связанные с отображением и обработкой элементов типичных веб-страничек, часто встречающихся на разных сайтах интернета. 

STM32 SPI Slave и интерфейс SPI в Versaloon (USB_TO_SPI)

22 сентября 2013 г. 17:44 STM32   Versaloon  

Serial Peripheral Interface - один из самых простых и быстрых интерфейсов, часто применяемый как для подключения периферийных устройств так и для связи микроконтроллеров между собой. Про принципы работы этого интерфейса написано очень много информации, по этому смысла рассказывать о них здесь нет. Вместо этого в статье я покажу пример практического использования SPI для связи контроллера STM32 (на демоплатке) с компьютером посредством переходника USB_TO_SPI, запущенном на базе платформы Versaloon. На стороне демоплаты это будет реализовываться с помощью аппаратного модуля SPI, настроенного в режиме Slave(ведомый). В то же время мы настроем Versaloon внутри себя на интерфейс SPI-Master (ведущий), и с помощью программы vsprog будем рулить им. 

Пример будет делать следующее(придумано от фонаря): сначала мы посылаем демоплате 5 байт, и параллельно принимаем от нее 5 байт 0xAA (напомню, что отправляя один байт по SPI слейву, мы получаем один байт в ответ от него, то есть происходит так называемый полнодуплексный, двухсторонний обмен). Демоплата, приняв эти 5 байт от мастера сохраняет их у себя. Затем мастер отправляет еще 5 байт, и параллельно слейв отдает обратно 5 байт, полученные за первый раз. В дополнение мы также помигаем светодиодами после второго 5и-байтного обмена. Сначала один светодиод помигает столько раз, сколько отправлено в первом байте второго обмена, затем второй светодиод помигает столько раз сколько отправлено во втором байте второго обмена. Наверное формулировка задания весьма сложная, попробую объяснить визуально. Вот так должны выглядеть эти два обмена по 5 Байт каждый:

spiobmen(1).jpg