|
AVR признали !, C переходом в рассуждения о контроллерах |
|
|
|
 |
Ответов
(75 - 89)
|
Aug 9 2007, 19:55
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(=GM= @ Aug 9 2007, 18:26)  Самый простой тест требует переноса содержимого 64-байтного массива A[64] сначала в массив B[64], а затем из массива B[64] в массив C[64]. GM, давайте чуть чуть усложним задачку. Пусть есть два 64 байтных массива A[64] и B[64], а в массив С[64] будем писать типа С[i] = A[i] (&, | или ^) B[i]; И оценим скорость на пике и авр как в машинных циклах, так и реальное время выполнение на максимальной частоте кристала. Кстати задачка не высосана из пальца а вполне реально необходимая при обслуживании Modbus. P.S. Кстати, эта задачка также хороша для религиозной войны IAR vs WinAVR
|
|
|
|
|
Aug 9 2007, 20:13
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(defunct @ Aug 9 2007, 21:04)  А почему тогда не ARM? Здесь вопрос достаточно сложный. Из первого знакомства с ARM вынес следующее: 1. Дорогая среда разработки (EWARM от IAR). 2. Отсутствие хорошего бесплатного компилятора С (сам не пробовал, но отзывы о GCC не очень лестные). 3. Дорогостоящее оборудование для отладки. 4. Излишне сложная система команд (привычка начинать знакомство с Ассемблера). Прошу учесть, что это мое личное мнение, не претендующее на абсолютную истинность.
|
|
|
|
|
Aug 9 2007, 20:34
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Прохожий @ Aug 9 2007, 23:13)  1. Дорогая среда разработки (EWARM от IAR). Лукавите  Цитата 2. Отсутствие хорошего бесплатного компилятора С (сам не пробовал, но отзывы о GCC не очень лестные). Одного поля ягода с так называемым WinAVR, который, как я понимаю, 'устраивает'. Цитата 3. Дорогостоящее оборудование для отладки. -Для любительско/халявных вариантов Wiggler дорогостоящ  ? -клоны профессиональных стоят одинаково - в пределах десятков долларов. -оригинальные - несколько сотен для любого из контроллеров. Цитата 4. Излишне сложная система команд (привычка начинать знакомство с Ассемблера). Привычка на данном историческом этапе 'дурная' - ARM контроллер при сопоставимых ценах с AVR девайс другой весовой категории. С ASM начинать не надо. Бегло просматривать результат компиляции, изредка писать пару десятков команд безусловно надо, но плотно изучать и начинать писать вполне достаточно в процессе работы и постфактум.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 9 2007, 20:41
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Всё что я пишу ниже, мой взгляд на данную тему.Цитата(oran-be @ Aug 8 2007, 23:10)  Что по нынешним временам есть в ней хорошее - это то, что их везде, как грязи, и дешево, и халявный С компилятор. ВСЕ. Так это "ВСЁ", уважаемый, два из моих 5 пунктов. А третий (производительность на СИ) вы переврали, в чём вас тут же и уличили. Цитата По производительности PIC18 имеет АВР по полной, несмотря на в 2 раза меньшее значение MIPS. Загрузка-выгрузка все сводит на нет. Это совершенно неверный вывод. Видимо вы не работали по другому. Либо не интересовались исследованиями в данной области. Для 90% вычислений будет достаточно регистров РОН имеющихся у AVR. Загрузка и выгрузка применяется крайне редко. Если не верите, то проанализируйте любую программу на AVR. Причём компилятор Си от IAR прекрасно этим пользуется. Цитата Уже не говоря про обработку прерываний. АВРы на этом тормозят ваще. PIC18 и 51-е умеют переключать контекст. За Pic говорить не буду, но контекст x51 это всего 8 регистров.А рабочих - 8. Никто не мешает в AVR распределить регистры тем же способом. Вообще переключение контекста не понадобится!!! То есть данный постулат - откровенный бред. (по x51) Цитата А 51 по нынешним временам есть Силиконовские - они имеют АВР по MIPS конкретно. И Микрочипсы заваяли новые PIC18, которые по стоимости вставляют АВРы. По стоимости и доставабельности AVR и вообще Atmel в России и СНГ - вне конкуренции. Здесь они просто молодцы. В других странах судя по отчётам motorolla лидирует. Цитата Зато АВРы можно считать первым ядром, которое раскрутили не за счет его достоинства, а за счет маркетингово правильно составленных технических возможностей и документации. Одни только виртуальные ассемблерные команды чего стоят, не говоря уже о раздутой донельзя производительности. В итоге на этой маркетинговой раскрутке Атмелы воспитали, можно сказать с пеленок, целое поколение МК программеров, в которых маркетинговые штампы уже записаны на генетическом уровне и которые уже не могут видеть преимущества других ядер. На момент перехода на AVR, я лично, не читал ни одной рекламной статьи. Более того существовало не более 10 кристаллов. За минусом 1200(12МГц) все остальные работали до 8МГц. На сайте Atmel - писали "повышения тактовой частоты в будущем не планируется". Я перешёл только из-за того, что писал на АСМе и даже слепому, вопреки вашему утверждению, видно что архитектура на голову выше. Выбрал я их поиском. Оценивал очень разные (К примеру PIC и Scenic). Читал сразу даташит. Что касается "виртуальных комманд", то это широко распространнённая практика ещё с исторических времён. И впервые её использовали сами программисты. На 8080 вместо CLR A использовали xor a,a. Не вижу здесь злого умысла. Очень удобно. Не каждый знает эти "фокусы", но если есть соответствующая мнемоника, то лучше использовать tst a, чем or a,a , как мы это делали на 8080. Цитата У АВРов есть еще одна хорошая черта - обилие глюков дает разработчикам повод лишний раз пообщаться(человеческим языком  ). АВРы - самая плодотворная тема для общения. "АВР признали!" Удивительно! До появления АТМег8 и 16 среди АВРов вообще не было рабочих контроллеров. Для серьезных применений. Как минимум они имели тенденцию само вытираться. По поводу серьёзных применений с вами бессмысленно спорить. Безусловно применение МК вами - серьёзно, а мной - несерьёзно. Цитата(Прохожий @ Aug 8 2007, 23:10)  Девайс монтируется непосредственно у исполнительных модулей приблизительно на 40...50 Ампер. Не знаю как AVR, а PIC18F работает достаточно устойчиво вот уже порядка трех лет в нескольких сотнях девайсов. На форуме Точки опоры один человек утверждал, что его мега128 управляет станком искрорезки. Установлена в 20см от самой искры и работает прекрасно. Ни единого сбоя. И тоже год или что-то возле этого. Я могу привести пример, подтверждённый документально, что мои изделия в количестве 40 штук поставили на замену днепропетровским. По причине, что мои за неделю тестирования не зависли ни разу, а днепропетровские за два дня повисали практически все. Мои на меге днепропетровские на пике. (Причина - помехи) Но это не повод ругать пики. Это повод ругать программеров и схемотехников. Цитата(Alex B. @ Aug 8 2007, 23:10)  12F683 - ADPCM декодер (ADPCM симметричный, поэтому что кодер, что декодер ...) + I2C программный + wavetable синтез - пожарный извещатель (нужен голос и сирена). На Си, без особого напряга и хитростей, 8 МГц внутренний генератор. ШИМ правда аппаратный, но и программный бы туда влез на раз. [поправил] - не, наверное не влез бы На меге 8 на 16МГц я вводил/выводил сигнал битовый поток на 32кГц и вводил/выводил байтовый поток на 8кГц. Фактически транскодер ИКМ в АДИКМ и обратно. Попутно делал 12 цифровых фильтров. Естественно "внутри" сигнал был 16-ти битный. Конкуренты на PICе так и не смогли повторить. Их изделие использовало 2 PIC 16 + дополнительную микруху с фильтрами. И сравнивать производительность надо всётаки именно на СИ. Причина проста. На СИ пишут большенство программистов. Таким образом "кривизна" компилятора как раз имеет значение в конечном устройстве. Так почему я не должен её учитывать при выборе? Отсутствие хорошего компилятора - это серьёзный минус. Отсутствие бесплатного - ещё один. Невозможность использования библиотек, написанных под GNU - третий. Отсутствие портов для популярных ОСей - для некоторых (например zltigo  ) - просто смерть данного семейства. Цитата(singlskv @ Aug 9 2007, 22:55)  GM, давайте чуть чуть усложним задачку. Пусть есть два 64 байтных массива A[64] и B[64], а в массив С[64] будем писать типа С[i] = A[i] (&, | или ^) B[i]; И оценим скорость на пике и авр как в машинных циклах, так и реальное время выполнение на максимальной частоте кристала. Кстати задачка не высосана из пальца а вполне реально необходимая при обслуживании Modbus. P.S. Кстати, эта задачка также хороша для религиозной войны IAR vs WinAVR  Всётаки задачка высосана из пальца, потому что правильнее всётаки минимум два массива (B и С) формировать одновременно во время приёма B. И лишних пересылок, при этом не будет.
|
|
|
|
|
Aug 9 2007, 20:48
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(singlskv @ Aug 9 2007, 23:55)  GM, давайте чуть чуть усложним задачку. Пусть есть два 64 байтных массива A[64] и B[64], а в массив С[64] будем писать типа С[i] = A[i] (&, | или ^) B[i]; И оценим скорость на пике и авр как в машинных циклах, так и реальное время выполнение на максимальной частоте кристала. Кстати задачка не высосана из пальца а вполне реально необходимая при обслуживании Modbus. P.S. Кстати, эта задачка также хороша для религиозной войны IAR vs WinAVR  К стати, скажу по секрету, что для обслуживания любой шины, связанной с USART, AVR подходит несколько лучше, чем PIC. Это связано с тем, что в AVR реализован аппаратный контроль четности, а в PIC - нет. Скажите (действительно интересно), а где при обслуживании MODBUS требуются такие действия? Что же касается теста, то для PIC будет приблизительно следующее: Код Loop movf postinc0,w,0; 1 andwf postinc1,w,0; 1 movwf postinc2,0 ; 1 decf counter,f,0 ; 1 bnz Loop ; 2 Получилось 6 МЦ или 600 нс при частоте кварца 10 МГц и включенном PLL.
|
|
|
|
|
Aug 9 2007, 20:54
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(SasaVitebsk @ Aug 9 2007, 23:41)  Отсутствие портов для популярных ОСей - для некоторых (например zltigo  ) - просто смерть данного семейства. Лично я способен и сам оси оптимальные с точки зрения нужной мне функциональности писать, что и проделывал неоднократно  . И использовать и модифицировать 'непопулярные' тоже могу. И портировать 'популярные' могу. И без осей могу, но уже последние лет 15-17 это крайне редко делаю - опыт, однако. Так-что поминать меня всуе не надо  Цитата Отсутствие хорошего компилятора - это серьёзный минус. Отсутствие бесплатного - ещё один. Ну заметно плохих компиляторов уже пожалуй нет - вымерли, динозавры  А бесплатность - пусть лучше будет уверенность с развитии и соответственно в том, что компилятор не станет аутсайдером. Ибо плата даже за 'дорогой' компилятор вполне сопоставима c месячной зарплатой программиста, даже уже в Российских условиях.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 9 2007, 20:55
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(mse @ Aug 9 2007, 18:12)  Ну согласитесь, сравниватьТМС320 с ПИКо-АВРами некорректно. И не только из-за ТМСовой крутизны. ПИКо-АВРы требуют вокруг себя меньше обвязки, меньше жрут, меньше занимают места. Стоят дешевле. Из этого и исходить. Лёгкое ядро, оно всегда себе дырочку найдёт. ;О) Так я и не сравнивал! Я отвечал г.Прохожему Цитата(Прохожий @ Aug 9 2007, 16:37)  Хотелось бы узнать мнение уважаемого коллектива. Если не PIC18 и не AVR, то что?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 21:06
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(zltigo @ Aug 10 2007, 00:34)  Лукавите  Нисколько. Цитата(zltigo @ Aug 10 2007, 00:34)  Одного поля ягода с так называемым WinAVR, который, как я понимаю, 'устраивает'. Ну Вам виднее. Я лично не пользовался ни тем, ни другим. Цитата(zltigo @ Aug 10 2007, 00:34)  -Для любительско/халявных вариантов Wiggler дорогостоящ  ? -клоны профессиональных стоят одинаково - в пределах десятков долларов. -оригинальные - несколько сотен для любого из контроллеров. Дело в том, что я как бы любитель, поэтому в данном случае речь идет о моих личных материальных средствах. С PIC все ясно. Купил ICD2 за 6000 руб и, в принципе, можешь заниматься любым контроллером от 18-го до 24-го. Можно даже позволить себе и REAL ICE за 16 000 руб. Это, практически, все затраты, поскольку все остальное официально халявное. Цитата(zltigo @ Aug 10 2007, 00:34)  Привычка на данном историческом этапе 'дурная' - ARM контроллер при сопоставимых ценах с AVR девайс другой весовой категории. С ASM начинать не надо. Бегло просматривать результат компиляции, изредка писать пару десятков команд безусловно надо, но плотно изучать и начинать писать вполне достаточно в процессе работы и постфактум. Боязно как-то отдавать все на откуп дядям, написавшим компилятор и компоновщик. Хотя может быть я и не прав.
|
|
|
|
|
Aug 9 2007, 21:09
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(SasaVitebsk @ Aug 10 2007, 00:41)  Всётаки задачка высосана из пальца, потому что правильнее всё таки минимум два массива (B и С) формировать одновременно во время приёма B. И лишних пересылок, при этом не будет. Неа, не прокатит, если в массиве есть многобайтовые значения, то сначала прием всего пакета, а только потом операции над данными. Для многобайтовых значений, в А[] часть байтов многобайтового значения может поменяться между приемами в B[], соответственно в С[] получим полный бардак. Но вобще то это совсем другая тема, я просто предложил чуть усложнить задачку  P.S. Вот интересно, Вы предпочитаете AVR и я то же. Это что, начало спора IAR vs WinAVR ?
|
|
|
|
|
Aug 9 2007, 21:12
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Прохожий @ Aug 9 2007, 23:13)  1. Дорогая среда разработки (EWARM от IAR). Есть также Keil, RealView, CrossWorks.. Keil и CrossWorks дружат с gcc тулчейном. Цитата 2. Отсутствие хорошего бесплатного компилятора С (сам не пробовал, но отзывы о GCC не очень лестные). Для PIC'ов насколько я осведомлен тоже не густо в этом плане. Общепризнанный лучший компилятор от HT и он небесплатный.. Цитата 3. Дорогостоящее оборудование для отладки. Wiggler $10-$15 J-Link клон - сопоставим по цене с ICD2 Цитата 4. Излишне сложная система команд (привычка начинать знакомство с Ассемблера). ~40 мнемоник. даже меньше чем у новых PIC. Цитата Прошу учесть, что это мое личное мнение, не претендующее на абсолютную истинность. нет проблем, просто может быть вас просто дезинформировали. Загляните в АРМы
|
|
|
|
|
Aug 9 2007, 21:20
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Не сообразил ответить сразу, отвечу здесь. Цитата(mse @ Aug 9 2007, 18:12)  По поводу пересылок: пересылка массива памяти, сама по себе, никому не нужна. Нахрен пересылать массив из одного места в другое, если работать можно сразу в том месте? Ну да ланна, это на любителя. ;О) Сергей, я тащусь от вашей рассудительности(:-). Объясните тогда, за каким шутом разместили этот тест в бенчмарках на сахаре? Похоже там одни любители собрались и вы в том числе, э?(:-). Цитата(singlskv @ Aug 9 2007, 19:55)  GM, давайте чуть чуть усложним задачку. Пусть есть два 64 байтных массива A[64] и B[64], а в массив С[64] будем писать типа С[i] = A[i] (&, | или ^) B[i]; И оценим скорость на пике и авр как в машинных циклах, так и реальное время выполнение на максимальной частоте кристала. Кстати задачка не высосана из пальца а вполне реально необходимая при обслуживании Modbus. P.S. Кстати, эта задачка также хороша для религиозной войны IAR vs WinAVR  За пик г.Прохожий уже ответил, 6 МЦ. У авра, увы, будет 10 МЦ. Так что разрыв увеличивается(:-(. Так глядишь, с вашей лёгкой руки я стану экспертом по пикам, а я в них не особо петрю, плаваю короче(:-)...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 21:25
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(SasaVitebsk @ Aug 9 2007, 23:41)  Всётаки задачка высосана из пальца, потому что правильнее всётаки минимум два массива (B и С) формировать одновременно во время приёма B. И лишних пересылок, при этом не будет. В тестовой программе пересылки быть должны. Естественно, массовые пересылки массивов это зачастую неудачое решение задачи, но и сводить решаемые контроллерами задачи к обработке чисто синхронных потоков явно неправильно - это вообще отмирающаяя область применения контроллеров общего назначения, ибо с этим много легче справляются дешевеющие FPGA или на худой конец не отстающие от них по динамике цен DSP. То, что для меня является привычно/обычной задачей для небольшого перефирийного контроллера - можете, хотя-бы мельком, глянуть, что из себя представляют телекоммуникационные протоколы. Ну для конкретности пусть будут протоколы 2 уровня семиуровневой модели OSI - LAPD/LAPV5/MTP2/...) Без буферизации и пересылок там никуда. Как впрочем и без 'осей' с их задачами и очередями сообщений и таймерам все это писать чистое извращенное и ненадежное решение.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 9 2007, 21:26
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Прохожий @ Aug 10 2007, 00:48)  Скажите (действительно интересно), а где при обслуживании MODBUS требуются такие действия? Вобще-то по стандарту, над любыми данными должны быть реализованы четыре варианта действий: REP, OR, AND и XOR. Конечно мало кто это реализует в своих контроллерах, но по стандарту нужно, особенно если присутствуют железки или софт сторонних производителей. Цитата Что же касается теста, то для PIC будет приблизительно следующее: Код Loop movf postinc0,w,0; 1 andwf postinc1,w,0; 1 movwf postinc2,0 ; 1 decf counter,f,0 ; 1 bnz Loop ; 2 Получилось 6 МЦ или 600 нс при частоте кварца 10 МГц и включенном PLL. Не знал что там есть 3 "виртуальных" счетчика. Тогда да, разницы почти нет, по машинным циклам выигрывает пик, по реальной скорости авр. А какой пик ? Интересно глянуть.
|
|
|
|
|
Aug 9 2007, 21:36
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Прохожий @ Aug 10 2007, 00:06)  Дело в том, что я как бы любитель, поэтому в данном случае речь идет о моих личных материальных средствах. С PIC все ясно. Купил ICD2 за 6000 руб и, в принципе, можешь заниматься любым контроллером от 18-го до 24-го. Можно даже позволить себе и REAL ICE за 16 000 руб. Для конкретности - затраты, например J-Link за примерно те-же 250USD или вообще его клон, баксов за 70 и можно заниматься любыми ARMx любых производителей. Можно, конечно, покруче и подороже - J-Trace. Только зачем? Ядро отлаживать? Я вообще совсем не представляю, каким местом отладчика я буду отлаживать, например, поминаемый ранее LAPD. Я вообще не представляю для чего внутрисхемный отладчик для подавляющего большинства случаев отладки хоть сколь-нибудь сложных задач.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
|
|
|