Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

IAR Embedded Workbench

Непрочитано 21.11.2013, 11:16  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от SasaVitebsk Посмотреть сообщение
Должен признать, что IAR более строго подходит. В некоторых местах, там где GCC молчит IAR ругается.
Это из-за встроенной MISRA, если следовать её правилам, то и в GCC нужно текст править.
Цитата:
В одном случае из под IAR я не смог сделать то, что смог под GCC. По-моему инициализацию структуры, если последний элемент в ней массив строк символов. IAR требовал явного указания длины строки. GCC пропустил и работал правильно.
На то они и разные компиляторы, чтобы отличаться друг от друга.
Реклама:
nahimovv вне форума  
Непрочитано 22.11.2013, 10:12  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Да естественно. Я абсолютно без истерики отношусь к тому или иному событию.
Вообще программист должен видеть, да и видит дальше, чем простой эксплуатационщик. Общаясь с заказчиками ты постепенно становишься спокойным как удав. И приучаешься смотреть на свою программу со всех сторон. Ну а заодно и на чужую ...
Сейчас процессора такие, что вылизывать до такта нецелесообразно. Значительно эффективнее обращать внимание на удобство построения программы. Возможность заимствования наработок в одном проекте для другого. Возможность развития и сопровождения. Ничто не даётся бесплатно. Если ты применяешь ОС, то ясно что будут накладные расходы. Если применяешь драйвера с иерархией, то понятно что будут накладные расходы. Если пишешь какие-то вещи универсально, то ясно что будет избыточность. И здесь нужно искать компромисс.
А задача типа того:
Код:
// хранится во флэши
typedef const struct
{
  const int8_t*			Index;				// Указатель на редактируемый параметр/ смещение для каналов
  const uint16_t		Number;				// Число пунктов
  const uint16_t		Ch;					// 0/ Указатель на канал
  const uint16_t		typeEditing;		// возможножность редактирования
  void					(*savefunc)(void);	// Указатель на функцию записи редактируемых параметров
  const char* const*	ItemName;			// Указатель на имена пунктов
} RadioBtn_t;
Код:
//**************************************************  *************
// @@ 184.
RadioBtn_t rbtTelesign1 =			// Меню "Алгоритм работы"
{
  (const int8_t*)&telesign[0].revim,	// Указатель на редактируемое значение
  3,0,									// Всего 3 пункта, прямое
  ALLEDIT, SaveGlobalSetting,			// Редактировать можно без пароля, сохранять
  strAlgor
};
Код:
const char* const		strAlgor[3] = {"Стандарт. алгоритм","Расшир. алгоритм","по кнопке 'Enter'"};
Так работает IAR.
GCC, естественно так тоже будет, но позволяет массив strAlgor прямо вписывать в структуру. То сути, если я правильно понимаю + 1 указатель получается.
IAR позволяет напрямую сделать, но требует тогда явного указания длины строки. Не могу понять почему (да и не стремился, если честно). То ли он непосредственно строки вписывает в структуру?. GCC похоже стандартно подходит. То есть строки куда-то пихает а в структуру указатели суёт.
Собственно потери небольшие и я остановился на том, что вы видите
SasaVitebsk вне форума  
Непрочитано 22.11.2013, 17:47  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Да, действительно - несмотря на включённую "C99", компилятор этого не понимает. Слажали, значит.

______________
P.S. А вы всё ещё хардкорные табуляции используете?!
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 22.11.2013, 20:19  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от SasaVitebsk Посмотреть сообщение
Вообще программист должен видеть, да и видит дальше, чем простой эксплуатационщик.
Иногда лучше не смотреть что генерирует ИАР, под STM8 в частности. Сам знаешь, писАл же под STM8S20x (и говорил что последний раз). Я понимаю, что платформа молодая и мало кто поддерживает, но голова же не только чтобы траву курить, иначе ни чем такое говноляпство со стороны ИАР объяснить нельзя.
Цитата:
Сейчас процессора такие, что вылизывать до такта нецелесообразно. Значительно эффективнее обращать внимание на удобство построения программы. Возможность заимствования наработок в одном проекте для другого. Возможность развития и сопровождения. Ничто не даётся бесплатно.
Это не повод для говнокода, который генерирует компилятор ИАР под STM8, тем более не бесплатно, что тогда требовать от юзеров. И дело здесь не вопросах, не в документации и не в переводах.
nahimovv вне форума  
Непрочитано 23.11.2013, 20:22  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Уже не вижу смысла в восьмибитниках. Умудрился заложить в одном месте. Там и STM накосячил. Руки дойдут, переработаю.
SasaVitebsk вне форума  
Непрочитано 23.11.2013, 20:36  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от SasaVitebsk Посмотреть сообщение
Там и STM накосячил.
А что именно, если не секрет?
nahimovv вне форума  
Непрочитано 26.11.2013, 15:16  
ua3rad
Временная регистрация
 
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ua3rad на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от oleg110592 Посмотреть сообщение
отладка - можно и в иаре - Ctrl+D

Tools--›Options...
У меня так и не получилась отладка.
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 45
Размер:	331.4 Кб
ID:	55261   Нажмите на изображение для увеличения
Название: 2.gif
Просмотров: 49
Размер:	194.0 Кб
ID:	55262  
ua3rad вне форума  
Непрочитано 26.11.2013, 16:11  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от ua3rad Посмотреть сообщение
У меня так и не получилась отладка
что-то не так настроено - почему в дебаге загружается hex. Так примерно должно быть:
Цитата:
Loaded debugee: D:\Work\IarAVR.wrk\Example\TestDebug\Debug\Exe\Tes tDebug.d90
и русские имена в путях лучше не использовать.
Настройки линкера у меня:
Миниатюры:
Нажмите на изображение для увеличения
Название: IarLinker.png
Просмотров: 45
Размер:	28.6 Кб
ID:	55263  
oleg110592 вне форума  
Непрочитано 27.11.2013, 08:31  
ua3rad
Временная регистрация
 
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ua3rad на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от oleg110592 Посмотреть сообщение
что-то не так настроено - почему в дебаге загружается hex. Так примерно должно быть:

и русские имена в путях лучше не использовать.
Настройки линкера у меня:
Теперь понял. Я в опциях установил выходной файл hex, а d90 у меня не было. Спасибо
ua3rad вне форума  
Непрочитано 08.03.2014, 17:41  
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Пытаюсь "затолкать" программу в 1к.
Как понять, почему пишется разная длина кода?
Компилятор IAR C/C++ Compiler V5.51.0.50312/W32 for Atmel AVR
МК ATtiny13a, язык С.

Ассемблерный файл листинг main.lst пишет
831 bytes of CODE memory (+ 6 bytes shared)
17 bytes of DATA memory (+ 19 bytes shared)
Код:
Segment part sizes:

     Function/Label           Bytes
     --------------           -----
     _A_TIMSK0                   1
     _A_OCR0A                    1
     _A_MCUCR                    1
     _A_TCCR0B                   1
     _A_OSCCAL                   1
     _A_TCCR0A                   1
     _A_EEAR                     2
     _A_EEDR                     1
     _A_EECR                     1
     _A_PORTB                    1
     _A_DDRB                     1
     _A_PINB                     1
     _A_DIDR0                    1
     _A_ACSR                     1
     _A_ADMUX                    1
     _A_ADCSRA                   1
     _A_ADC                      2
     init                       98
     main                       60
     adc_read_channel           16
     adc_data                  138
     calibr                    112
     mppt                       66
     checkOCR0A                 32
     Led_mode                   60
     T0_OVER                   190
     watt                       17
     watt_last
     delta
     OffVolt1
     OffVolt2
     f_calibr
     cnt_int
     cnt_int_H
     Led_period
     voltAKK
     ampAKK
     ampSLR
     voltSLR
     i
     EEPROM_write               20
     EEPROM_read                14
     ??T0_OVER??INTVEC 6         2
     ?‹Initializer for watt›    17
     ?‹Constant {0, 0, 0, 0}›    8
      Others                     4

 
  19 bytes in segment ABSOLUTE
 806 bytes in segment CODE
   4 bytes in segment INITTAB
   2 bytes in segment INTVEC
   8 bytes in segment NEAR_F
  17 bytes in segment TINY_I
  17 bytes in segment TINY_ID
 
 831 bytes of CODE memory (+  6 bytes shared)
  17 bytes of DATA memory (+ 19 bytes shared)

Errors: none
Warnings: none
Файл module.map пишет
987 bytes of CODE memory (+ 12 range fill )
51 bytes of DATA memory (+ 19 absolute )
Код:
****************************************
                *                                      *
                *      SEGMENTS IN ADDRESS ORDER       *
                *                                      *
                ****************************************


SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC               CODE          00000000 - 00000007           8   com    1
?FILL1               CODE          00000008 - 00000013           C   rel    0
INITTAB              CODE          00000014 - 00000017           4   rel    0
CODE                 CODE          00000018 - 000003D5         3BE   rel    1
TINY_ID              CODE          000003D6 - 000003E6          11   rel    0
ABSOLUTE             DATA               0000001C                     rel    0
                     DATA               0000001D                   
                     DATA               0000001E                   
                     DATA          00000024 - 00000028           5 
                     DATA          00000034 - 00000034           1 
                     DATA          00000036 - 00000038           3 
                     DATA          0000003C - 0000003F           4 
                     DATA          0000004F - 0000004F           1 
                     DATA          00000051 - 00000051           1 
                     DATA          00000053 - 00000053           1 
                     DATA          00000055 - 00000056           2 
                     DATA          00000059 - 00000059           1 
TINY_I               DATA          00000060 - 00000070          11   rel    0
CSTACK               DATA          00000071 - 00000080          10   dse    0
RSTACK               DATA          00000081 - 00000092          12   dse    0

                ****************************************
                *                                      *
                *        END OF CROSS REFERENCE        *
                *                                      *
                ****************************************

 987 bytes of CODE memory (+             12 range fill )
  51 bytes of DATA memory (+ 19 absolute )

Errors: none
Warnings: none
Где правда и какова длина кода на самом деле?
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06


Часовой пояс GMT +4, время: 16:03.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.