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

 
 
> Изменения в *.h в IAR EW430 5.10.6
=DS=
сообщение Nov 8 2010, 18:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836



Никто не знает, с какого бодуна ИАРовцы решили поменять структуру заголовочных файлов (io430***.h) в новой версии 5.10.6? Сегодня накатил sp6 и вдруг компилятор перестал понимать, что такое UCMST. Полез в io430x26x.h (текуший мой камень), а там выкинута куча #define, частично заменены на struct + enum, причем сделано все через ж... Тот же USMST в UCB0CTL0 переименовали в UCB0MST. а в UCB1CTL0 оставили как USMST, зачем-то ввели для UCB0CTL0 еще одно определение UCB0CTL0__SPI ... В общем, ляпов там выше крыши. Бегло сравнил размеры файлов в INC с предыдщей версией, изменений довольно много. Кто нибудь еще сталкивался с этим? Это у ИАРа идейное (типа, избавляемся от #define, переходим на enum) или просто ляп? Я бы просто откатился назад, но в этой версии появились удобные штучки типа __persistent, __ro_placement... Так что просто подставил старый .h из sp4, но оно не кошерно как-то...
ЗЫ: Не знаю, куда было правильнее поместить тему - в ИАР или МСП, но все-таки ближе к МСП, по-моему.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jan 19 2011, 01:02
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(=DS= @ Nov 8 2010, 21:35) *
Никто не знает, с какого бодуна ИАРовцы решили поменять структуру заголовочных файлов (io430***.h) в новой версии 5.10.6? Сегодня накатил sp6 и вдруг компилятор перестал понимать, что такое UCMST. Полез в io430x26x.h (текуший мой камень), а там выкинута куча #define, частично заменены на struct + enum, причем сделано все через ж... Тот же USMST в UCB0CTL0 переименовали в UCB0MST. а в UCB1CTL0 оставили как USMST, зачем-то ввели для UCB0CTL0 еще одно определение UCB0CTL0__SPI ...

Замена дефайнов на структуры - прогрессивное явление. Дикий атавизм, работая на языке C, с присущей ему системой структур, поддерживающих битовые поля, пользоваться масками, получаемых сдвигом единички влево sm.gif.

Однако, как правило, IAR не искореняет такие дефайны на корню, а создает структуры параллельно старым децинициям, в которых имя бита отождествляется с его номером в байте порта. Поэтому можно писать и так и эдак, если присоединить нужный хидер.

А вот изменение имен битов в портах - это действительно очень болезненно. Старые проекты перестают при этом компилироваться, а переименование имен битов, порой весьма трудоемко и запутанно. В свое время IAR переименовала несколько штук битов в области USB-регистров у AT90USB647, причем таких, назначение которых я не слишком хорошо понимала sm.gif. Из-за этого я была просто вне себя от ярости, ругая IAR на чем свет стоит. Пришлось составлять таблицу соответствия старых и новых названий. При этом оказалось, что в даташите на МК как раз использованы НОВЫЕ названия! Тут-то я и осеклась...

Я не в курсе в отношении MSP430-x, но в отношении моего МК удалось выяснить, что компилятор у IAR зачастую появляется еще загодя, когда МК не только еще не появился в продаже, но и даже тогда, когда на него нет даташита. При этом IAR частенько использует хидеры от AVR Studio, переделывая их под себя. А когда выходят на свет даташиты, то некоторые биты в них оказываются названы по-другому. А то случается и так, что такие переименования происходят при появлении даташита новой ревизии. Такая же история повторилась с AT32UC3C (это архитектура AVR32), когда появились новые регистры, а старые сдвинулись со своих мест вместе с ножками sm.gif по сравнению с UC3A. А ныне грядет внедрение USB в новые модели ATxmega128A1U и ATxmega128B1, тогда как раньше у Xmega USB не было. Надо полагать, что снова начнется чехарда и именами битов, которых у USB-интефейса видимо-невидимо.

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

При этом проще достигается масштабирование, когда МК заменяют другим, с большей памятью. В таких ситуациях нередки случаи, когда какие-то регистры переезжают на другое место. И тут было затруднительно работать с хидерами, определяющими фиксированные адреса и биты. Тогда как с символьными именами проект требует простой перекомпиляции с другим хидером.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2011, 09:49
Сообщение #3


Гуру
******

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



QUOTE (Xenia @ Jan 19 2011, 03:02) *
Замена дефайнов на структуры - прогрессивное явление. Дикий атавизм, работая на языке C, с присущей ему системой структур, поддерживающих битовые поля, пользоваться масками, получаемых сдвигом единички влево sm.gif.
Особенно когда нужно одной командой записать весь регистр начальным значением или сбросить/установить биты сразу в нескольких битовых полях volatile-переменной. Или когда надо какой-то критический кусок написать на асме - вот тут польза от замены дефайнов на структуры очевидна wink.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jan 19 2011, 15:46
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Сергей Борщ @ Jan 19 2011, 12:49) *
Особенно когда нужно одной командой записать весь регистр начальным значением или сбросить/установить биты сразу в нескольких битовых полях volatile-переменной.

Компайлер должен это дело соптимизировать в одну операцию, и volatile по идее не помешает.
+1 к отказу от текстовых подстановок, макросов.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 19 2011, 17:08
Сообщение #5


фанат дивана
******

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



Цитата(jorikdima @ Jan 19 2011, 20:46) *
Компайлер должен это дело соптимизировать в одну операцию, и volatile по идее не помешает.


Компилятор не имеет права оптимизировать две операции
Код
SFR_bit0 = 1;
SFR_bit1 = 1;

в одну
Код
SFR |= (1<<0)|(1<<1);

, если SFR - volatile.
Поэтому весь этот "синтаксический сахар" в виде структур - вещь весьма неоднозначная.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- =DS=   Изменения в *.h в IAR EW430 5.10.6   Nov 8 2010, 18:35
- - rezident   Всю жизнь с начала освоения MSP430 пользуюсь хедер...   Nov 8 2010, 18:57
|- - =DS=   Цитата(rezident @ Nov 8 2010, 21:57) Всю ...   Nov 8 2010, 19:14
|- - rezident   Цитата(=DS= @ Nov 9 2010, 00:14) У них то...   Nov 8 2010, 19:19
|- - =DS=   Цитата(rezident @ Nov 8 2010, 22:19) Нафи...   Nov 8 2010, 19:28
|- - kriv-73   Цитата(rezident @ Nov 8 2010, 22:19) Я пи...   Jan 18 2011, 19:15
|- - Xenia   Цитата(AHTOXA @ Jan 19 2011, 20:08) Компи...   Jan 19 2011, 19:39
||- - sonycman   Цитата(Xenia @ Jan 19 2011, 22:39) Если б...   Jan 19 2011, 20:10
||- - =DS=   Цитата(Xenia @ Jan 19 2011, 22:39) Именно...   Jan 20 2011, 01:56
|- - zltigo   QUOTE (AHTOXA @ Jan 19 2011, 20:08) Поэто...   Jan 20 2011, 08:13
|- - jorikdima   Цитата(AHTOXA @ Jan 19 2011, 20:08) Компи...   Jan 20 2011, 09:42
- - Dog Pawlowa   Ну, свой хедер может и перебор, но по крайней мере...   Jan 20 2011, 08:58
|- - zltigo   QUOTE (Dog Pawlowa @ Jan 20 2011, 11:58) ...   Jan 20 2011, 10:03
|- - Dog Pawlowa   Цитата(zltigo @ Jan 20 2011, 13:03) однот...   Jan 20 2011, 11:10
|- - zltigo   QUOTE (Dog Pawlowa @ Jan 20 2011, 14:10) ...   Jan 20 2011, 11:16
- - Desperanto   а проекты созданные в 5.1 в 4.20 все же придется п...   Feb 18 2011, 08:33
- - zltigo   QUOTE (Desperanto @ Feb 18 2011, 11:33) а...   Feb 18 2011, 11:02
- - Dog Pawlowa   Цитата(Desperanto @ Feb 18 2011, 11:33) а...   Feb 18 2011, 14:57


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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 19:34
Рейтинг@Mail.ru


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