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

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

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

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

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

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


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

Сообщение от SasaVitebsk Посмотреть сообщение
Должен признать, что IAR более строго подходит. В некоторых местах, там где GCC молчит IAR ругается.
Это из-за встроенной MISRA, если следовать её правилам, то и в GCC нужно текст править.
Цитата:
В одном случае из под IAR я не смог сделать то, что смог под GCC. По-моему инициализацию структуры, если последний элемент в ней массив строк символов. IAR требовал явного указания длины строки. GCC пропустил и работал правильно.
На то они и разные компиляторы, чтобы отличаться друг от друга.
Реклама:
nahimovv вне форума  
Непрочитано 22.11.2013, 10:12  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 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.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 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,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

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

Уже не вижу смысла в восьмибитниках. Умудрился заложить в одном месте. Там и STM накосячил. Руки дойдут, переработаю.
SasaVitebsk вне форума  
Непрочитано 23.11.2013, 20:36  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
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.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
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.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
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, время: 05:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot