компилятор С и среда разработки для AVR

Hello Igor.

29 Jun 06 00:24, you wrote to Dmitry Orlov:

DO>> Мне не на экран надо, а в специальное окошко в отформатированном виде, DO>> и чтобы когда я гуляю по этому окошку курср гулял по тому исходнику, в DO>> котором ошибка.

SG>>>>> А прошиваешь в третьей программе (это и делать то не часто SG>>>>> нужно).

Какой смысл обсуждать попусту что лучше и что хуже. Hе пристало уважаемым людям в безплотном обсуждении участвовать. ;-) Все решается очень просто.

formatting link
;-) Hисколько не сомневаюсь, что winavr вполне подходит для этого дела. Hо разница, конечно существенная есть: конструкции типа __EEPROM_DATA(55, 60, 255, 255, 255, 255, 255, 255);

static volatile bit mOut; (регистр, отвечающий за pin имеется ввиду) у gcc вызывают ошибку.

А теперь представь себе, что необходимо перестраиваться при большой наработке на IAR Hitech и т.д. Всетаки GCC для пиков нет, а как без них? Переучивание вполне может вызвать отторжение и непонимание зачем тратить время....

Nicolas

Reply to
Nicolas Minakov
Loading thread data ...

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Igor Ulanov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 28 Jun

2006 23:24:47 +0400:

DO>> Мне не на экран надо, а в специальное окошко в отформатированном DO>> виде, и чтобы когда я гуляю по этому окошку курср гулял по тому DO>> исходнику, в котором ошибка.

IU> Именно так все происходит в winavr, т.е. в связке progrmmers IU> notepad и gcc. Менее удобно чем в iar'e, но не значительно.

Я не сомневаюсь, что можно это сделать, более того, сам делал для разных связок редакторов и компиляторов, и даже для оболочки, которую мы с товарищем написали когда-то давно. Кстати я додумался для разбра вывода компилятора применить регулярные выражения еще в 95 году и такой возможности тогда я нигде не видел.

SG>>>>> А прошиваешь в третьей программе (это и делать то не часто SG>>>>> нужно).

IU> Добавляешь менюшку в notepad и запускаешь из него, что хочешь. А

Добавляешь, делаешь - это все понятно и я так и делаю обычно, потому что привк. А многие привыкли брать готовое и я их отлично понимаю.

IU> ключики для программатора как и фьюзы прописываешь в makefile. Очень IU> удобно. И тут кстати уже говорили, что все что связано со сборкой и IU> прошивкой проекта более удобно держать в текстовом файле, например в IU> makefile - согласен.

Кому-то да, удобней. А кому-то удобней в оболочке проекты сопровождать.

DO>> Вопрос был чем gcc лучше.

IU> А сколько параметров можно передать в функцию в ИАРе? Мне или IU> приглючилось, или только три?

Да откуда мне знать? Я с AVR не работаю, так, пробовал когда-то на проектике типа конкурсного, но обещанный ими 4 года назад кристалл так и не появился... Тогда никаких таких ограничений я не встречал.

Меня тут опять неправильно поняли. Я не говорю что gcc плохой, а IAR хороший, я спрашиваю чем gcc лучше IARa. Чем он хуже я примерно и так знаю. Ответ "тем, что он везде есть" я отверг, как не соответствующий действительности. Так чем он еще лучше?

dima

formatting link

Reply to
Dmitry Orlov

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Nicolas Minakov! You wrote in conference fido7.ru.embedded to Igor Ulanov on Thu, 29 Jun 2006 00:18:00

+0400:

NM> Какой смысл обсуждать попусту что лучше и что хуже. Hе пристало NM> уважаемым людям в безплотном обсуждении участвовать. ;-) NM> Все решается очень просто.

NM>

formatting link
NM> ;-)

:)

NM> Hисколько не сомневаюсь, что winavr вполне подходит для этого дела. NM> Hо разница, конечно существенная есть: NM> конструкции типа __EEPROM_DATA(55, 60, 255, 255, 255, 255, 255, 255);

Это просто макрос, он раскручивается в ассемблерную вставку.

NM> static volatile bit mOut; (регистр, отвечающий за pin имеется ввиду) NM> у gcc вызывают ошибку.

пишешь #define bit char

ошибки не будет, но может перестать влезать в память.

NM> А теперь представь себе, что необходимо перестраиваться при большой NM> наработке на IAR Hitech и т.д.

Ну прийдется поработать.

NM> Всетаки GCC для пиков нет, а как без них? Переучивание вполне может NM> вызвать отторжение и непонимание зачем тратить время....

Из широко применяемых восьмибиток, gcc только для avr и есть...

dima

formatting link

Reply to
Dmitry Orlov

Vladimir, ты ещё здесь сидишь?

Среда Июнь 28 2006 20:30, Vladimir Vassilevsky wrote to Dmitry Orlov:

DO>> - это высококачественный звук. VV> Приличное полупрофессиональное оборудование (Beringer и пр.) VV> уже стоит столько, что самодельщина имеет смысл только ради процесса.

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

Типичная проблема - подверженность внешним наводкам. Hа экранах и фильтрах экономят :-/

Георгий

Reply to
George Shepelev

Потому, что быстрый? Афтар жжошь.

Время потраченное на избавление от глюков, вменяемый программист...

Reply to
Kirill Frolov

Здравствуйте

Dmitry Orlov пишет:

Для 51 го семейства тоже есть - называется sdcc. Компилятор - порт gcc под Винду, свободный, среда разработки - платная. Но компилятор нормально цепляется к сигналовской IDE, например. С уважением, Шаповалов Алексей

Reply to
Shapovalov Alexey Ivanovich

Далеко не факт. Ручками я могу заранее знать тип указателя. Конечно и в IAR могу, но скорей всего не буду по причине собственной лени.

"C" под него и расчитывалось.

"Слышен грохот шум и свист -- грузится компьютер Вист" -- на тот, который под столом стоит. Для отЛаживания.

Думаю, там в том или ином виде всё есть. И макросы прикрутить можно.

Reply to
Kirill Frolov

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Shapovalov Alexey Ivanovich! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 29 Jun

2006 08:21:08 +0000 (UTC):

NM>>> Всетаки GCC для пиков нет, а как без них? Переучивание вполне NM>>> может вызвать отторжение и непонимание зачем тратить время....

SAI> Для 51 го семейства тоже есть - называется sdcc. Компилятор - порт

SDCC - это не gcc, но именно его я прежде всего имел в виду, говоря о неприемлимости качества его работы.

dima

formatting link

Reply to
Dmitry Orlov

Вот это - весьма легко - икеа в большинстве случаев - склад дерьма

Reply to
Arcady Schekochikhin

Объясню медленно, на пальцах - PDP-11 в лице ее средних представителей типа PDP-11/34 и далее - поддерживала работу ОС реального (РЕАЛЬНО) времени RSX-11M управляющей например ускорителем и в которой одновременно в режиме разделения времени (тайм-шаринг) могли работать и еще несколько пользователей за терминалами - редактировать, компилировать, гонять програмки. При этом к машине подключались по тем временам крутые диски - штуки 4, штук 8 терминальных линий. Вот ты пожалуйста назови "Современные мелкие (в буквальном смысле мелкие) контроллеры" которые "давно превосходят PDP-11". Одно-два названия - больше не надо.

Reply to
Arcady Schekochikhin

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 29 Jun

2006 10:37:50 +0000 (UTC):

DO>>>> Сегодня я знаю только одну область, где самодельное может DO>>>> конкурировать с покупным

VV>>> У моей жены чудесный огород. Овощи и фрукты - никакого сравнения VV>>> с покупными :)

AS> Вот это - весьма легко - икеа в большинстве случаев - склад дерьма

Да и продуктовая лавка не склад амброзии.

dima

formatting link

Reply to
Dmitry Orlov

Hello Igor.

Wed Jun 28 2006 23:24, Igor Ulanov wrote to Dmitry Orlov:

DO>> Вопрос был чем gcc лучше. IU> А сколько параметров можно передать в функцию в ИАРе? Мне или IU> приглючилось, или только три?

Интересно, откуда такие глюки? :) Современный IAR поддерживает расширенный EC++, приближенный к "полному" C++. Hапример, есть там темплейты и namespaces.

Dimmy.

Reply to
Dimmy Timchenko

Hello Kirill.

Thu Jun 29 2006 12:26, Kirill Frolov wrote to me:

KF> Далеко не факт. Ручками я могу заранее знать тип указателя.

Значит, и IAR сможет - и оптимизирует. :)

The AVR IAR C/C++ Compiler uses different memory types to access data that is placed in different areas of the memory. There are different methods for reaching memory areas, and they have different costs when it comes to code space, execution speed, and register usage. The access methods range from generic but expensive methods that can access the full memory range, to cheap methods that can access limited memory areas. Each memory type corresponds to one memory access method. By mapping different memories - or part of memories - to memory types, the compiler can generate code that can access data efficiently.

...

Memory attribute Pointer size Memory space Address range Max object size __tiny 1 byte Data 0-0xFF 128 bytes __near 2 bytes Data 0-0xFFFF 32 Kb __far 3 bytes Data 0-0xFFFFFF 32 Kb __huge 3 bytes Data 0-0xFFFFFF 8 Mb __tinyflash 1 byte Code 0-0xFF 128 bytes __flash 2 bytes Code 0-0xFFFF 32 Kb __farflash 3 bytes Code 0-0xFFFFFF 32 Kb __hugeflash 3 bytes Data 0-0xFFFFFF 8 Mb __eeprom 1 bytes EEPROM 0-0xFF 128 bytes __eeprom 2 bytes EEPROM 0-0xFFFFFF 32 Kb __io N/A I/O space 0-0x3F 4 bytes __io N/A Data 0x60-0xFF 4 bytes __ext_io N/A Data 0x100-0xFFFF 4 bytes

__generic 2 bytes Data/Code 32 Kb 3 bytes 8 Mb The most significant bit (MSB) determines whether this pointer points to code space (1) or data space (0). The small generic pointer is generated for the processor options -v0 and -v1.

__regvar N/A Data 0x4-0x0F 4 bytes

...

POINTERS AND MEMORY TYPES

Pointers are used for referring to the location of data. In general, a pointer has a type. For example, a pointer that has the type int * points to an integer. In the AVR IAR C/C++ Compiler, a pointer also points to some type of memory. The memory type is specified using a keyword before the asterisk.

For example, a pointer that points to an integer stored in farflash memory is declared by:

int __farflash * p;

Note that the location of the pointer variable p is not affected by the keyword. In the following example, however, the pointer variable p2 is placed in tiny memory. Like p, p2 points to a character in farflash memory.

char __farflash * __tiny p2;

*Whenever possible, pointers should be declared without memory attributes*. For example, the functions in the standard library are all declared without explicit memory types.

Собственно, нет особой необходимости одному и тому же указателю ссылаться на разные типы памяти. Лучше таких фокусов избегать. Я вообще стараюсь указателями поменьше пользоваться: для строк/массивов использую синтаксис array[item], для передачи параметров в функции по ссылке - ссылочный тип. Hу, естественно, для динамических буферов и списков/деревьев их сам Вирт велел использовать. :)

KF> Конечно и в IAR могу, но скорей всего не буду по причине собственной KF> лени.

Hу, __flash-то я для строк или таблиц всегда укажу. А остальное обычно определяется типом процессора и "моделью памяти".

KF> "C" под него и расчитывалось.

Собственно, большинство ЯВУ под такую архитектуру заточены...

KF> "Слышен грохот шум и свист -- грузится компьютер Вист" -- на тот, KF> который под столом стоит. Для отЛаживания.

Математики, что ли? Так её и в симуляторе можно. А если на PC - то полная совместимость необязательна. Отладил алгоритм, потом подправил исходник под МК.

KF> Думаю, там в том или ином виде всё есть.

"Голых" указателей нет. Это не Турбо-Паскаль. :)

KF> И макросы прикрутить можно.

Макросы противоречат идеологии этого языка. Там масса выразительных средств на уровне самого языка. Вплоть до многозадачности.

Dimmy.

Reply to
Dimmy Timchenko

(ещё для Z80 был недоделанный вариант...)

Афтар жжот! Пишу изпацстула! Пешы из-чо!

Там реальные альтернативы -- только keil и hitech.

Reply to
Kirill Frolov

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Shapovalov Alexey Ivanovich on Thu, 29 Jun 2006 18:10:20 +0000 (UTC):

KF> Афтар жжот! Пишу изпацстула! Пешы из-чо!

KF> Там реальные альтернативы -- только keil и hitech.

Если ты про х51 компиляторы, то я лично знаком с Keil, IAR, Tasking, Hitech - и все они весьма на уровне.

dima

formatting link

Reply to
Dmitry Orlov

Вера в Ленина и Светлое Будущее не истребима... НЕТ ТАКИХ ЧУДЕС. НЕ БЫВАЕТ. Он предельно туп -- по типу определяет. Тип ты ручками пишешь, в исходнике. Как напишешь, так и будет.

[проскипано...]

Сюда это собрание трудов и сочинений совершенно излишне.

И плавно подходим к тому, что релизует gcc...

Я тебе великую тайну открою -- там внутри, на самом то деле, поганый указатель. И никак ты его не выкинешь. Даже счётчик инструкций у цпу -- и тот указатель. Кругом одни указатели...

Вот есть, например, printf. Вот какой тип указателя она понимает?

Можно как угодно. Но на PC -- проще бывает. И симулятор нормальный нужно поискать. Вот для AVR -- нет. Отладил и подправил -- так не бывает. Процесс циклический...

А хорошо ли это?

Значит идеология совсем плохая и негодная.

Reply to
Kirill Frolov

Hello Dmitry.

29 Jun 06 09:35, you wrote to me:

NM>>

formatting link
NM>> ;-)

NM>> Hисколько не сомневаюсь, что winavr вполне подходит для этого дела. NM>> Hо разница, конечно существенная есть: NM>> конструкции типа __EEPROM_DATA(55, 60, 255, 255, 255, 255, 255, 255);

Понял. Hасколько я понял Кирилла это надо засунуть в мейкфайл. RTFM однако.

NM>> static volatile bit mOut; (регистр, отвечающий за pin имеется ввиду) NM>> у gcc вызывают ошибку.

Так и сделал. И вообще уже дополз до гексов. Hо до програматора пока еще далеко. Пока гекс меньше твоего. Hо я работу с EEPROM закоментировал. Опять таки RTFM. Ворнинги на конструкции типа while (c = ptr[i++]) tputch(c);

--------- trm_avr.c: In function `tputstr': trm_avr.c:395: warning: subscript has type `char' trm_avr.c:395: warning: suggest parentheses around assignment used as truth value Hадо асм посмотреть, что оно там наделало.

Вообще если в проекте заменить NTC на термопару, поставить опторазвязку на 232, то я даже знаю куда такое можно воткнуть.

Nicolas

Reply to
Nicolas Minakov

Kirill, ты ещё здесь сидишь?

Четверг Июнь 29 2006 09:41, Kirill Frolov wrote to George Shepelev:

Потому что позволяет выполнять наиболее эффективные действия.

KF> Афтар жжошь.

Ты эхой ошибся.

Георгий

Reply to
George Shepelev

Здравствуйте

Dmitry Orlov пишет:

Угу, ошибся я. На sdcc вышел через сайт BiPOM Electronics, которая предлагала свою среду разработки (Micro-Ide) с компилятором sdcc. Ну иперевёл к тому же ещё не правильно :). Затем (после твоего замечания) глянул по ссылке из доки -

formatting link
ну понял, что чушь спорол. Кстати, вроде бы теперь поддерживают PIC18 (из sdccman.pdf):"The PIC16 port is the portion of SDCC that is responsible to produce code for the Microchip(TM) microcontrollers with 16 bit core. Currently this family of microcontrollers contains the PIC18Fxxx and PIC18Fxxxx." В общем я, похоже, нашёл, что искал. С уважением, Шаповалов Алексей

Reply to
Shapovalov Alexey Ivanovich

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Nicolas Minakov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 29 Jun

2006 23:32:00 +0400:

NM>>> static volatile bit mOut; (регистр, отвечающий за pin имеется NM>>> ввиду) у gcc вызывают ошибку.

NM> Так и сделал. NM> И вообще уже дополз до гексов. NM> Hо до програматора пока еще далеко. NM> Пока гекс меньше твоего. Hо я работу с EEPROM закоментировал. NM> Опять таки RTFM. NM> Ворнинги на конструкции типа while (c = ptr[i++]) NM> tputch(c); NM> --------- NM> trm_avr.c: In function `tputstr': NM> trm_avr.c:395: warning: subscript has type `char' NM> trm_avr.c:395: warning: suggest parentheses around assignment used NM> as truth value NM> Hадо асм посмотреть, что оно там наделало.

Какие-то маловразумительные предупреждения. Некоторые компиляторы предупреждают на присваивание в операторе сравнения, а тут советуют еще одни скобки поставить while ((c = ptr[i++])) - иногда это действительно убирает такое сообщение.

NM> Вообще если в проекте заменить NTC на термопару, поставить NM> опторазвязку на 232, то я даже знаю куда такое можно воткнуть.

Тогда не заменить, а добавить, температуру-то опорного конца все равно знать надо.

dima

formatting link

Reply to
Dmitry Orlov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.