Перейти к содержанию
    

AVR - любительский конроллер?

Зачем так коверкать русский язык? "Глаза режет".
Поддерживаю. К уважаемым гуру. Имейте хотя бы уважение к автору темы. Или сливайте ваш "русиш" на почтовые ящики друг другу, пощадите Великий и Могучий, а также наши глаза.

 

По теме. Сам факт столь бурного обсуждения достоинств и недостатков АВР микроконтроллеров вышеупомянутыми гуру есть ответ на поставленный вопрос: если эти МК активно применяются в работе даже столь заслуженными людьми, то, следовательно, назвав их "любительскими", можно "профессионально" получить по шапке со всех сторон сразу (после чего дискуссия, несомненно, будет продолжена).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем так коверкать русский язык? "Глаза режет".

А вот я сейчас всем непослушным деткам подарочек под Новый Год устрою :santa2: в виде предупреждений :twak: :smile3046: :smile3009: , а там, глядишь, и говорить научатся.

 

А что касается темы разговора.

Кто-нибудь когда-нибудь слышал, чтобы фирма позиционировала свой продукт как любительский?

Кто-нибудь видел любительский дивайс industrial и automotive исполнения?

Теперь о сроке жизни изделия.

Забудьте, уважаемые господа (кроме тех, у кого есть корпоративный пожизненный заказчик), о таких сроках как 10 - 20 - 30 лет. Сейтас реалии таковы, что если дивайс не обновляет элементной базы (и всего прочего) за 2 - 3 года, то конкуренты обходят и оглянуться не успеешь.

Что касается сложности этого мероприятия, то это уж кто как работу ставит. Мы, например, уже на четвёртую платформу переходим (51-430-AVR-ARM) - и ничего, никаких истерик в течение нескольких лет - в худшим случае, пару месяцев на переход.

Хотя и сертификацию прохотим и аттестацию и любую другую ...ацию и изделия идут десятками тысяч. Всецело поддерживаю мысль, что отсутствие дивайса на рынке это просчёт не разработчика, а снабженца. Т. к. по долгосрочным программам поставки работают практически ВСЕ фирмы и милионные партии товара на складе замораживать не нужно.

Всё!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.................

Всецело поддерживаю мысль, что отсутствие дивайса на рынке это просчёт не разработчика, а снабженца. Т. к. по долгосрочным программам поставки работают практически ВСЕ фирмы и милионные партии товара на складе замораживать не нужно.

Всё!

Согласен. В одной из разработок Вашего покорного слуги используется чип, который уже лет 6-7 нельзя нигде купить и нечем безболезненно заменить. Поставки же по контракту (весьма, надо сказать, небольшому по объёму), тем не менее, производятся регулярно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А на AVR канкретна я спицально залочивал 12 регисторов (r4-r15) и совершенно никакой потери производительности не заметил. Перед этим провел небольшое исследование - типо, насколько эти регистры востребованы/юзабельны - перелопатил кучу файлов листингов компилятора из своих и чужых праэктов - там что-то окло процента или полутора было. Самым нипийятным пабочным эффектом залочивания аказалось то, што арифметика с 64-битными даблами у IAR'а юзает то ли два, то ли четыре младшых ригистра (r4-r7). Фсе, в астальном все клёво было.

уважаемый , разве это недостаток AVR?? имхо компилятора

Не понял вопроса. Про какой недостаток идет речь? Если имеется в виду то, что при 64-битных даблах потребовались несколько младших регистров, то тут дело и не в AVR, и не в компиляторе - а в библиотечной реализации этих самых функций дабловой арифметики. Если переписать эти функции (а они на асме написаны, компилятором они никак не затрагиваются), то и без этих младших регистров можно было бы обойтись... Я все же остаюсь при своем мнении, что 16 младших регистров в AVR бестолковы и почти бесполезны, и заложенный на них ресурс в виде пространства в опкоде и площади кристалла лучше было бы использовать на развитие функциональности старшей половины - хотя бы пусть не все регистровые пары могли бы образовывать указатели, хотя бы еще один или два - уже было бы намного легче. А так порой на сгенеренный код смотреть без слез нельзя.

 

Зачем так коверкать русский язык? "Глаза режет".

Имейте хотя бы уважение к автору темы. Или сливайте ваш "русиш" на почтовые ящики друг другу, пощадите Великий и Могучий, а также наши глаза.

Прошу прощения, не ожидал, что возникнет такая реакция неприятия. :cranky: Стараюсь всегда разговарить с людьми на понятном и приятном им языке, чем и было вызвнано использование легкого "албанского" акцента. :) Еще раз прошу прощения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я все же остаюсь при своем мнении, что 16 младших регистров в AVR бестолковы и почти бесполезны, и заложенный на них ресурс в виде пространства в опкоде и площади кристалла лучше было бы использовать на развитие функциональности старшей половины - хотя бы пусть не все регистровые пары могли бы образовывать указатели, хотя бы еще один или два - уже было бы намного легче. А так порой на сгенеренный код смотреть без слез нельзя.

 

Полностью согласен. Избыточное кол-во регистров не просто бесполезно, а довольно вредно, как всякая лишняя сущность. Уважаемый оратор выше упоминал про переключение контекста, там чем больше регистров - тем хуже. Впрочем, архитектура AVR студентами сделана, что уж с них взять...

 

Кто-нибудь видел любительский дивайс industrial и automotive исполнения?

Сколько угодно. Скажем, многие китайские поделия до недавнего времени разрабатывались и изготавливались любителями, бо профессиналами их назвать язык не поворачивается. Может, сейчас что-то стало меняться в лучшую сторону, а несколько лет назад если внутрь заглянуть - просто страх божий :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я все же остаюсь при своем мнении, что 16 младших регистров в AVR бестолковы и почти бесполезны, и заложенный на них ресурс в виде пространства в опкоде и площади кристалла лучше было бы использовать на развитие функциональности старшей половины - хотя бы пусть не все регистровые пары могли бы образовывать указатели, хотя бы еще один или два - уже было бы намного легче. А так порой на сгенеренный код смотреть без слез нельзя.

 

Полностью согласен. Избыточное кол-во регистров не просто бесполезно, а довольно вредно, как всякая лишняя сущность. Уважаемый оратор выше упоминал про переключение контекста, там чем больше регистров - тем хуже. Впрочем, архитектура AVR студентами сделана, что уж с них взять...

 

Все равно не пойму, почему вы считаете R0-R15 бесполезными? Потому что с непосредственными операндами не работают? Покажите какой нибудь алгоритм обработки, который только с иммедитейтом работает - думаю, не бывает таких. Всегда есть и промежуточные результаты, накопители и т.д. - все вполне ложится в нижние регистры. Другое дело, что грамотный компилятор должен оптимизировать код под их использование - это да.

 

Нехватка индексных регистров - действительно серьезная неприятность, но уж очень сильно она сказывается при C++. Вывод - не пишите на цпп для AVR.

 

На месте Atmel я бы вставил в новое ядро комманды для работы со стеком например в таком виде:

 

DECSP VAL - sp-=val

INCSP VAL - sp+=val

LDSP Rx,DISP - rx=sp[disp]

STSP Rx,DISP - sp[disp]=rx

 

где val и disp - небольшие иммедитейты. Очень бы помогло сишному компилятору.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А на AVR канкретна я спицально залочивал 12 регисторов (r4-r15) и совершенно никакой потери производительности не заметил. Перед этим провел небольшое исследование - типо, насколько эти регистры востребованы/юзабельны - перелопатил кучу файлов листингов компилятора из своих и чужых праэктов - там что-то окло процента или полутора было................

уважаемый , разве это недостаток AVR?? имхо компилятора

Не понял вопроса. Про какой недостаток идет речь? ..............

я говорю о том , что мягко говоря глупо вминять в недостаток авру то , что компилятор не умеет (а программист не хочет) на 100% использовать регистровый файл процессора. а младшую половину с ее "недостатками"удобно использовать как для хранения переменных так и для сохранения регистров в обработчике прерываний не пользуя для этого раму что я и делаю в своих проектах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот интересно, как же реализовать 8-байтную арифметику без 16 нижних регистров? Например 64Х64(8х8)... 64/64(8/8)? В ОЗУ нырять за операндами? Толково. И чо, ИАР пользует тока 4 нижних для этого? Мой им респект. А то я всё удивлялся, как это они умудрились whetstone оттарабанить аж за 73е6 цыклов? ;О) А они, оказываецца, регистры экономили. Малацца. А если не экономить, то 28е6 цыклов. Почуствуй разниццу. Это экономика должна быть экономной, ваще-то, пацаны перепутали, ну да ланно. ;О)

Контекст переключать долго? А тут выбирать надо - либо контекст, либо арифметика. Уже упоминал Моторолий MC9S08. Тормоз неописуемый. Зато какое удовольствие контекст переключать. ;О) Только этим бы и занимался. Наверное, для того и придуман.

Ну а что "студенты" проектировали, дык не важен метод, важен результат. В умелых руках АВРа оттянет почти любого 8-битника, особенно в арифметике. Да и 16-битник не всякий отбицца смогёт. Такое вот моё ИМХО на сегодня. ;О)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я говорю о том , что мягко говоря глупо вминять в недостаток авру то , что компилятор не умеет (а программист не хочет) на 100% использовать регистровый файл процессора.

Смею Вас заверить, что в IAR'е тоже не дураки сидят. Случаев, когда не хватает 16 регистров можно по пальцам пересчитать.

 

а младшую половину с ее "недостатками"удобно использовать как для хранения переменных так и для сохранения регистров в обработчике прерываний не пользуя для этого раму что я и делаю в своих проектах.

Это второй недостаток, про котоый я упоминал - медленная работа с памятью. Будь она нормальной, однотактовой, все бы прекрасно сохранялось в стеке. И не надо говорить, что это сделать было нельзя. PIC18 - живой пример того, что можно. А ФАПЧ там или на линиях задержки внутренние фазы формируются - это дело пятнадцатое, меня, как пользователя, это колышет в полседнюю очередь. А вот когда обыкновенный инкремент переменной в памяти занимает 2+1+2=5 тактов, из которых 4 - 80% (!) - накладные расходы на пересылку, это, пардон, красотой не назовешь ну никак!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот интересно, как же реализовать 8-байтную арифметику без 16 нижних регистров? Например 64Х64(8х8)... 64/64(8/8)? В ОЗУ нырять за операндами? Толково.

А чё, AVR для 8-байтной арифметики, оказывается, предназначен? И задач таких кругом немеряно, чтоб именно 8-битником это щелкать? Тады звиняйте, не знал... Я-то грешным делом думал, что "всякому овощу свой фрукт" (с), и сапоги должон тачать сапожник...

 

А если серьёзно, то такой перевес в сторону числомолотилки должен засчитывться не как достоинство, а как недостаток. Бо ежели некоем создании какой-то орган переразвит - это не красота, а уродство, имхо. Гармония должна быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это второй недостаток, про котоый я упоминал - медленная работа с памятью. Будь она нормальной, однотактовой, все бы прекрасно сохранялось в стеке. И не надо говорить, что это сделать было нельзя. PIC18 - живой пример того, что можно. А ФАПЧ там или на линиях задержки внутренние фазы формируются - это дело пятнадцатое, меня, как пользователя, это колышет в полседнюю очередь. А вот когда обыкновенный инкремент переменной в памяти занимает 2+1+2=5 тактов, из которых 4 - 80% (!) - накладные расходы на пересылку, это, пардон, красотой не назовешь ну никак!

 

О да, пик - суперпроцессор. Не помню, помоему в 18 уже сделана арифметика с переносом, а давайте про любимую 16 серию. Надо выполнить простую вещь, например сложить два массива 16-битных чисел (напомню - указатели на int)

 

for(..)

{

(*d)+=*s;

s++;d++

}

 

И смотрим в код. Во-первых - в пичке один индексный регистр, копирований значений - как грязи.

Во-вторых - а нет же нормального сложения с переносом, надо так извращаться, просто дофига комманд на такую простую операцию, как +=.

 

А теперь - серия 18 - массив переходит через границу странички и п...ц.

 

Но вобщем я не о том, что пик - лайно, авр - вещь. Я про то, что есть некоторый набор требований, которые надо выполнять при программировании на AVR.

 

Первое и самое главное - как можно меньше статических переменных. Если без них никак, тогда в начале процедуры нагрузить все в регистры, перед выходом - слить. То-есть так

 

static char a;

static char b;

static char c;

 

void foo(void)

{

char wa=a;

char wb=b;

char wc=c;

 

//Теперь делаем чего надо wa...wc

 

 

a=wa;

b=wb;

c=wc;

}

 

Нормально живет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смею Вас заверить, что в IAR'е тоже не дураки сидят. Случаев, когда не хватает 16 регистров можно по пальцам пересчитать................

 

.................А вот когда обыкновенный инкремент переменной в памяти занимает 2+1+2=5 тактов, из которых 4 - 80% (!) - накладные расходы на пересылку, это, пардон, красотой не назовешь ну никак!

16-ть регистров хватает с головой а вот переменную засунуть в свободный и огулять ее инкрементом за один такт гордость за IAR не позволяет. дык эту "красоту" Вам иар и устраивает ведь его не дураки писали

 

 

=AK=

А чё, AVR для 8-байтной арифметики, оказывается, предназначен? И задач таких кругом немеряно, чтоб именно 8-битником это щелкать? Тады звиняйте, не знал... Я-то грешным делом думал, что "всякому овощу свой фрукт" (с), и сапоги должон тачать сапожник...

вот нужно мне было в 2313 64-битную замутить. ресурсов хватало тк вычислений не много было . или мне нуно было сразу арм за хобот брать дабы 2к во флеш залить???

вообщем коллеги дискуссия приобретает не профессиональный характер. лично я умываю руки и в ""этом "" процессе боле не учавствую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О да, пик - суперпроцессор.

Это чё-то из серии "ежли вы обижаете лордов нам - мы вам тоже написаем в щи" (с). Детский сад какой-то, право-слово... ;)

 

Про ПИКи особо и речи-то не было. В треде только я их упоминал, и то всего лишь как еще более говеную чем АВР архитектуру. Вы хоть в курсе истории мелкопроцессоров, и знаете ли как ПИК расшифровывается? Периферийный Интерфейсный Контроллер, только-то и всего.

 

А ежели в AVR какашками кидать, то, помимо упомянутых выше недостатков, отмечу еще один. Это RISC процессор. Сама идея РИСК-ов изначально довольно гнилая. Поскольку всем РИСК-ам присущи такие недостатки:

1) Программная память расходуется неэффективно.

2) Как следствие, доступ к программной памяти является узким местом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О да, пик - суперпроцессор.

Это чё-то из серии "ежли вы обижаете лордов нам - мы вам тоже написаем в щи" (с). Детский сад какой-то, право-слово... ;)

 

Про ПИКи особо и речи-то не было. В треде только я их упоминал, и то всего лишь как еще более говеную чем АВР архитектуру. Вы хоть в курсе истории мелкопроцессоров, и знаете ли как ПИК расшифровывается? Периферийный Интерфейсный Контроллер, только-то и всего.

 

Мне кажется слово еще более говеную прозвучало только сейчас. А я уж было подумал, что Вы сторонник... :) Я не хотел тут разводить по поводу того "какой проц лучше" и т.д. Просто так прозвучал Ваш пост "А вот на ПИК18 ....". Еще раз не хотел.

 

Флейм мы тут действительно развели. Хотя сама постановка вопроса (первый пост) к этому и вела.

Можно резюмировать.

 

1. На С++ не писать, писать на С

2. Глобальных переменных поменьше

3. Все грузить в регистры, потом сливать обратно

4. А вот если Atmel еще и комманды добавит - все будет нормально.

 

Я думаю, можно закрывать тему или перемещаться в тему класса "Что лучше", если охота побазарить дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чё, AVR для 8-байтной арифметики, оказывается, предназначен? И задач таких кругом немеряно, чтоб именно 8-битником это щелкать? Тады звиняйте, не знал...

А почему бы и нет? ;О) У меня, например, встречается, ну не сказать, чтобы немеряно, но, как назло, в самых быстрых местах. А уж 32бит, так почитай везде. Имею право! Мона, конешно САМ или ЛПЦ поставить, даже по деньгам ничё, дык, ведь, он пол-платы съёст и пол-питания. ИМХО, если регистры "лишние", то их можно просто не пользовать, а если нехватает, то ниоткуда не возьмёшь.

В конце концов, критические переменные, из серии

инкремент переменной в памяти занимает 2+1+2=5 тактов

можно легко хранить в регистре. И инкрементировать за 1 такт. Критические по доступу флаги - аналогично.

Единственно необъяснимая кривизна АВРа, которая не может быть оправдана, это бит- и порт-мап. Это пестня!!! ;О) Мужики оттянулись за всё. Генераторы и вообще узел синхронизаццыи, тоже атас. МСП здесь руль, бесспорно. Хотя терпимо.

А всё остальное - это фичи. Кому-то по душе, кому-то нет. Но появились они неспроста, бо, опять повторюсь, соблюсти все приличия по производственно-коммерческим причинам - невозможно. Мы ведь тоже не делаем всё на 6-слойках, в конце концов. И девайсы наши не всегда от пальчиковой бабарейки 10 лет двигателем управляют. И ведь неспроста-же. Каждый моет сказать немало в своё оправдание. ;О) Прально замечено

"всякому овощу свой фрукт" (с)
;О) Не нравицца - не ешь!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...