|
sdcc для stm8 - кто пробовал?, Работает? |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 15)
|
Oct 2 2013, 09:17
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
С этим компилятором надо быть готовым к сюрпризам в самых неожиданных местах. Причем никак не связанным с конкретной целевой платформой. Помню, когда в 2007 использовал его для PIC18 он не умел правильно генерить константные массивы, путался в их размерах (если обьявлен один массив через [] с инициализацией 10 элементами, то и все объявленные в этом файле через [] будут иметь 10 элементов). Баг-репорт об этом провисел почти год. Баг-репорт о второй ошибке висит до сих пор - этим летом пришло уведомление, что его переместили в категорию PIC16. Месяц назад помогал коллеге с программой для x51 (казалось бы, он для них от рождения, многие программы столько вообще не живут) - там тоже поймал чудеса буквально в первый час: передача в функцию массива как массива и через указатель на первый элемент давали колоссальную разницу в коде и использовании ОЗУ. Размер переменных, объявленных с размещением по конкретному адресу, при линковке не учитывается. То есть использовать можно, но только в крайнем случае и быть готовым обходить баги.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 26 2014, 19:49
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(dotnot @ Jan 27 2014, 00:38)  Спасибо, это радует. Цитата(umup @ Jan 27 2014, 01:36)  а смысл ходить по граблям если есть 32F030 с бутлоадером и кошерным ARM-GCC ? Ну вот, как пример: У 32F030 - только -40 .. +85 °; у STM8 - есть automotive исполнение.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Apr 23 2015, 09:53
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
После последних багфиксов sdcc вполне довели до более-менее нормального уровня. К сожалению, до gcc ему еще ой как далеко (производимый sdcc ассемблерный код тяжело назвать хоть немного оптимизированным), но больше никаких компиляторов под STM8 нет, увы. Вот еще, правда, есть косяк с stm8flash: он не умеет писать EEPROM и стирать залоченные МК, приходится для этого заводить виртуалобкс с хрюнделем и стирать... Если кому интересно, все мои велосипеды для STM8 на сосфорже компиляются sdcc и прошиваются при помощи stm8flash.
|
|
|
|
|
May 3 2015, 14:10
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
Цитата(Эдди @ Apr 23 2015, 14:42)  Ебилд написал и установил. У меня сейчас версия 3.4.0 стоит. А в официальных репах только 2.5.0. А вообще, надо ебилд обновить. Вроде бы в sdcc еще что-то интересное добавили... А что именно там побагфиксили? У меня снапшот двухмесячной давности и я как-то не вижу особых изменений в качестве выходного кода Код $ sdcc -v SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.4.3 #9191 (Mar 7 2015) (Linux) основных претензий две: - для того чтобы не выкидывал логику, приходится в некоторых ситуациях едва ли не половину переменных объявлять как volatile. - в выходной hex попадают абсолютно все функции - вне зависимости используете вы их или нет, как пример - в файле filter.c две функции, реализующих фильтр: u8 Filter8(u8 *) и u16 Filter16(u16 *), так вот если использовать в проекте filter.с для вызова функции Filter8, то Filter16 так же попадёт в итоговый hex. проблема старая и давно известная, но в качестве workaround, увы, предлагается использовать дробление на файлы функций.
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|