Компилятор 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, и пример.

Зачем нужен extern в С ?

26 октября 2012 г. 22:13 С  

Область видимости переменной, описанной в .c фале - это весь файл со строки в которой она объявлена и до последней строки.

Extern указывает что переменная должна ссылается на другую переменную с таким же именем и типом, которая уже описана где то в программе, в глобальной области видимости (не в функции). Рассмотрим пример.