реклама на сайте
подробности

 
 
> IAR STM8, Краткий отчет
Dog Pawlowa
сообщение May 18 2010, 18:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Попробовал портировать проект с AVR (ATmega32) на STM8s(Discovery), пользуясь IAR STM8 full.

Портирование делалось в условиях одновременного открытия двух сред IAR AVR/STM8, работающих с одними и теми же файлами с условной компиляцией. Исправления, сделанные для портирования в одной среде, тут же проверялись перекомпиляцией в другой среде.

Заметки на полях в случайном порядке, работа не завершена, нужно дописать вызовы функций библиотеки для STM8, сейчас в коде есть заглушки.

1. __delay_cycles в STM8 отсутствует или не подключилась реализация встроенных функций.

2. Диагностика Pe228 "trailing comma" в STM8 отсутствует (в enum). Странно - разбор синтаксиса должен быть идентичен.

3. В файле stm8s.h нет определений векторов прерываний.
Определения векторов прерываний вообще-то находятся в файле iostm8.h, но, если его подключить, находящиеся в этом же файле определения битов конфликтуют с определениями в stm8s.h, который используется в примерах. В stm8s.h - маски, в iostm8.h - битовые структуры. Видимо, ИАР в ходе работ над компилятором перешел на маски, которые используются в библиотеках от ST для STM8. Пришлось указать определения векторов в своих файлах.

4. При ошибках с векторами прерываний происходит внутренняя ошибка компилятора без указания строки ошибки исходника текста!
Очень неприятно, но с MSP430 бывало и хуже - когда из-за ошибок синтаксиса падала среда.

5. Предупреждение Pe083 (type qualifier specified more than once) при генерации массивов с помощью макросов - вылазит только при компиляции оригинального текста, компиляция результата препроцессора проходит без проблем. К сожалению, этот кусок не поддается анализу в трезвом виде.
Речь идет о __flash/const, для STM8 препроцессор должен заменить __flash на const, для AVR - наоборот. Насколько я помню, такой трюк для AVR<>MSP430 проходил без проблем.

6. __enable_interrupt() __disable_interrupt() не выделяет синеньким(что тоже странно), но по крайней мере ошибку не выдает.

7. Линкер не создает HEX-файл.

8. Размер кода
STM8: 14189 3438 1038 (ro code ro data rw data )

AVR: 16060 1850 45
+ common 64
16 100 bytes of CODE memory (+ 24 range fill )
1 850 bytes of DATA memory (+ 45 absolute )

Непонятна такая разница в размере ОЗУ, буду разбираться, все ли указатели оказались во флэши.
Объем кода и констант выглядит равным, с учетом того, что библиотеки подключены не полностью.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Fktrctq
сообщение Dec 5 2010, 18:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 10-11-05
Из: Таганрог
Пользователь №: 10 659



Аналогия не совсем корректна, в приведенном Вами примере EEPROM - это просто место для гаража, который необходимо построить (создать массив данных) и поставить туда машину (инициализировать). Нет, Вы, конечно в праве построить гараж сами, по собственному чертежу (предварительно изучив основы строительства, закупив стройматериалы и т.п.) ну или прибегнуть к помощи строительной бригады которая сама все сделает за Ваши же деньги. Если инициализировать EEPROM отдельно, т.е. через программатор зашивать в неё данные (поскольку среда этого делать не может) то это равносильно строительству гаража собственными силами, если городить функцию копирования данных из Flash в EEPROM, все равно что нанять (а то и содержать) строительную бригаду.
Возможно у Вас EEPROM используется иначе, а вот в моем случае, в неё необходимо при первоначальной прошивке устройства занести массив (точнее структуру) настроек устройства, которые в процессе работы могут редактироваться. У STM8 памяти конечно не мало, но занимать килобайт ПЗУ только ради того чтоб его один раз использовать для инициализации ЭСППЗУ - это неправильно.
К стати, Atmel и ST тут не причем, речь об IAR, обе платформы и AVR и STM8 имеют возможность чтения/записи EEPROM посредством внутрисхемного программатора, это палка в огород IAR. К слову: STVD+Cosmic прекрасно умеют инициализировать eeprom, только что проверил.

Сообщение отредактировал Fktrctq - Dec 5 2010, 18:38


--------------------
Вы пробовали выключить и снова включить?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 5 2010, 18:39
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Fktrctq @ Dec 5 2010, 22:28) *
но занимать килобайт ПЗУ

Это не единственная альтернатива.
Есть еще доступ через какой-нить интерфейс.
Обычно интерфейс все равно существует, для чтения установок, истории, событий, управления, и проч.
Добавить запись - пара строчек кода.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dog Pawlowa   IAR STM8   May 18 2010, 18:50
- - topkin   Тоже интересуюсь STM8. Вообще их фирмваре библиоте...   May 19 2010, 06:37
|- - demiurg_spb   Хороший отчёт! Но похоже пока сыроват этот тул...   May 19 2010, 09:27
|- - Stanislav_S   Спасибо за отчет! сам сейчас буду переводить п...   May 19 2010, 09:51
|- - _Bill   Цитата(Stanislav_S @ May 19 2010, 13:51) ...   May 19 2010, 10:58
|- - Stanislav_S   Цитата(_Bill @ May 19 2010, 15:58) Я проб...   May 19 2010, 13:24
|- - Dog Pawlowa   Цитата(Stanislav_S @ May 19 2010, 16:24) ...   May 19 2010, 14:55
|- - _Bill   Цитата(Dog Pawlowa @ May 19 2010, 18:55) ...   May 19 2010, 17:27
|- - Fktrctq   Разработчики IAR сами портировали библиотеку STM8 ...   Dec 5 2010, 08:44
|- - Dog Pawlowa   Цитата(Fktrctq @ Dec 5 2010, 11:44) Это к...   Dec 5 2010, 15:58
|- - rezident   Цитата(Fktrctq @ Dec 5 2010, 13:44) особе...   Dec 5 2010, 17:02
- - Fktrctq   Это все конечно понятно, но дело вот в чем: 1. Зач...   Dec 5 2010, 19:03
- - Dog Pawlowa   Проявился неприятный эффект неполного попадания вс...   Apr 19 2012, 13:01
- - scifi   Цитата(Dog Pawlowa @ Apr 19 2012, 17:01) ...   Apr 19 2012, 13:19


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 10:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016