Easyelectronics.ru

Электроника для всех
Текущее время: 06 июл 2022, 22:10

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 05:34 
Только пришел

Зарегистрирован: 29 сен 2011, 19:37
Сообщения: 21
Итак, в наличии IAR 1.40.1/6.5.3.2581 для STM8.
Есть функция
Код:
inline void clrCS(void){
  GPIO_WriteLow(SPI_CS_GPIO,SPI_CS_PIN);
}

Есть функция юзающая ее
Код:
void writeByte(uint8_t byte){
  clrCS();
  while(((SPI->SR & (uint8_t)SPI_FLAG_TXE) == (uint8_t)RESET)){};
  SPI->DR = byte;
  while ((SPI->SR & (uint8_t)SPI_FLAG_BSY) != (uint8_t)RESET) { ; }
  SPI->DR;
}

Питаемся компилировать без наличия оптимизации High, ЕПТ
Код:
Error[Li005]: no definition for "clrCS" [referenced from C:\stm8\workspace\pid\Debug\Obj\spi.o]
Error while running Linker

Это нормально?
Вопрос в основном к иароводовцам. Никогда до иара такого не видел, ЧТО ЗА НАХ???
Может я неправильно применяю inline? Не, можно было бы написать
Код:
#define clrCS() GPIO_WriteLow(SPI_CS_GPIO,SPI_CS_PIN)

Или даже
Код:
#define clrCS() SPI_CS_GPIO->ODR &= (uint8_t)(~SPI_CS_PIN)

Но с какого хрена?
Файл приложен, чтоб непоняток не было. Функция объявлена выше ее первого использования.
При оптимизации High все ОК.


Вложения:
spi.c [2.69 Кб]
Скачиваний: 530


Последний раз редактировалось Markusha 18 дек 2014, 05:50, всего редактировалось 4 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 05:36 
Только пришел

Зарегистрирован: 29 сен 2011, 19:37
Сообщения: 21
О! Я тут по нужде на ИАР присел, ждите сравнительную статью, касабельно удобства ИАР'а как едитора для кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 12:58 
Старожил
Аватара пользователя

Зарегистрирован: 03 дек 2012, 10:42
Сообщения: 438
в хидере опишите функции

#ifndef __SPI_H
#define __SPI_H

inline void clrCS(void);

#endif


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 13:14 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2012, 17:24
Сообщения: 525
Markusha писал(а):
касабельно удобства ИАР'а как едитора для кода.

Это что, такой тонкий стеб?
Или я настолько от жизни отстал, и иар таки стал удобным едитором?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 13:28 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
MrYuran писал(а):
Markusha писал(а):
касабельно удобства ИАР'а как едитора для кода.

Это что, такой тонкий стеб?
Или я настолько от жизни отстал, и иар таки стал удобным едитором?


Попробовал я IAR, то скажу досточно удобный у него редактор.
Во всяком случае при хождении по определениям туда и обратно, не глючит так как Кейл скажем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 13:36 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2012, 17:24
Сообщения: 525
fr0ster писал(а):
Попробовал я IAR, то скажу досточно удобный у него редактор.
Во всяком случае при хождении по определениям туда и обратно, не глючит так как Кейл скажем.

Вот за кейл как раз не скажу, а после эклипса и кодеблокса иар своими серыми окошками просто наводит смертельную тоску


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 13:47 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Ну у эклипса свои плюшки и особенности, у IAR свои.
Мне пришлось иметь дело с кучей редакторов кода.
Потому тоску вызывают не серые окошки, а глюки в навигации по коду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 14:04 
Старожил

Зарегистрирован: 08 окт 2012, 00:25
Сообщения: 871
Цитата:
после эклипса и кодеблокса иар своими серыми окошками просто наводит смертельную тоску

"Вам шашечки или ехать?"(С)...
Эклипс глюкавое и тормознутое гуано для задротов...
ИАР под STM8... ИМХО... сделали по типу "на, и отъебись"... несуразности просто зашкаливают... это просто позор для ИАРа...
Единственное оправдание... что лучше ничего и нет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 14:26 
Старожил
Аватара пользователя

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 5585
Откуда: КЧР, поселок Нижний Архыз
dark_user писал(а):
лучше ничего и нет...

geany + sdcc. Превосходно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 14:51 
Старожил

Зарегистрирован: 08 окт 2012, 00:25
Сообщения: 871
Да там всё ещё хуже... )))
http://sdcc.sourceforge.net/mediawiki/i ... _code_size
Фетиш для командностроковых извращенцев... ))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:00 
Старожил
Аватара пользователя

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 5585
Откуда: КЧР, поселок Нижний Архыз
Насрать. Зато работает. Что лучше: вообще ничего или хотя бы что-то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:03 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Как можно сравнивать редактор и компилятор?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:10 
Старожил
Аватара пользователя

Зарегистрирован: 03 дек 2012, 10:42
Сообщения: 438
dark_user писал(а):
Цитата:
после эклипса и кодеблокса иар своими серыми окошками просто наводит смертельную тоску

"Вам шашечки или ехать?"(С)...
Эклипс глюкавое и тормознутое гуано для задротов...
ИАР под STM8... ИМХО... сделали по типу "на, и отъебись"... несуразности просто зашкаливают... это просто позор для ИАРа...
Единственное оправдание... что лучше ничего и нет...


Пересел с KEIL под STM32 на IAR для STM8 (на складе их дохОЧЕНЬ много) отладка только SWIM... это кабздец!!!
быстрей бы они на складе закончились :)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:14 
Старожил
Аватара пользователя

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 5585
Откуда: КЧР, поселок Нижний Архыз
fr0ster писал(а):
Как можно сравнивать редактор и компилятор?

Редактор - geany, компилятор - sdcc.
Жаль, что gcc не работает для такой мелочевки, как пики, STM8 и подобные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:24 
Старожил

Зарегистрирован: 08 окт 2012, 00:25
Сообщения: 871
Цитата:
отладка только SWIM... это кабздец!!!

SWIM как SWIM... что не так???
Вот когда флаги прерываний не взведены... а отладчик лезет в прерывание... вот "это кабздец"!!!... Какого хрена???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 15:28 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Eddy_Em писал(а):
fr0ster писал(а):
Как можно сравнивать редактор и компилятор?

Редактор - geany, компилятор - sdcc.
Жаль, что gcc не работает для такой мелочевки, как пики, STM8 и подобные.


Я не про sdcc я про переход от EclipseVsIAR в размер кода собираемого sdcc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 21:30 
Только пришел

Зарегистрирован: 29 сен 2011, 19:37
Сообщения: 21
DIZEL писал(а):
в хидере опишите функции

#ifndef __SPI_H
#define __SPI_H

inline void clrCS(void);

#endif

Пробовал.
Вот если бы оно еще сработало((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 21:32 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Если пробовать методом научного тыка, можно еще static добавить к ф-ции.
Говорят сработает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 22:07 
Только пришел

Зарегистрирован: 29 сен 2011, 19:37
Сообщения: 21
fr0ster писал(а):
Говорят сработает.

И таки работает!
Но мне интересно почему?
Мне даже во сне не пришла бы в голову идея написать static.
Ведь для функции модификатор static ограничит область видимости этим файлом.
Чудеса, да и только.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 23:10 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Историческая шняга с компиляцией.
Точно уже не помню, давно читал про это.
Поскольку инлайн ф-ции предполагалось в хидере размещать, область видимости не критична.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 23:16 
Старожил
Аватара пользователя

Зарегистрирован: 03 дек 2012, 10:42
Сообщения: 438
я про хидер и говорил. в IARе много разных...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 23:38 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
инлайн можно и не в хидере поместить, только это бесполезно.
Ну и объявлять как static надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 18 дек 2014, 23:54 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
И самое главное, речь именно о stm8 компиляторе IAR.
Для STM32 или ia64_86, инлайн ф-ции не требуют объявления как static.
А тут за каким то интересом надо, иначе линковщик генерит ошибку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 19 дек 2014, 00:19 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Кроме как static к инлайн ф-ции можно в проекте галку C++ inline semantics взвести в настройках C/C++ compiler


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интересное поведение IAR
СообщениеДобавлено: 19 дек 2014, 00:24 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3332
Ага, вот он секрет, для STM32 убрать эту C++ inline semantics и та же ошибка.
В общем ларчик просто открывался, в одном случае используется "C++ inline semantics" и объявлять как static не надо, в друго не используется "C++ inline semantics"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB