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

XMEGA: будущее, которого мы так долго ждали, наступило.

Atmel пишет что в AVR архитектуре 70% инструкций выполняються между регистрами...

Так можно и 100% сделать, только тогда зачем вообще DMA которое пересылает что-то в память к которой потом не обращаются. А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом :).... Почему Atmel точнее не посчитал :) DMA, естественно, лучше иметь, чем не иметь, только не панацея это, совсем не панацея, особенно в надеющихся на то, что оно "само работает", но не слишком умелых руках :(.

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


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

Так можно и 100% сделать, только тогда зачем вообще DMA которое пересылает что-то в память к которой потом не обращаются. А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом :).... Почему Atmel точнее не посчитал :) DMA, естественно, лучше иметь, чем не иметь, только не панацея это, совсем не панацея, особенно в надеющихся на то, что оно "само работает", но не слишком умелых руках :(.

 

Зачем тк зло? AVR - это риск процессор которай загружает данные в регистры, а все вычисления выполняет между регистрами. Вот в эти моменты DMA и может работать с шинной данных не мешая процессору. Давайте возмем какой нибудь реальный проект и посчитаем соотношение инструкций которые работают только с регистрами к тем которые работают с памятью (in/out/ld*/st*/pop/push/call...) Тогда и можно будет понять 70 это процентов, 72 или 68. ну уж точно не 100 и не 0.

 

Вам нахаляву добавили DMA, эффективность работы которого в реальных приложениях которого примерно 70 процентов, и при этом никакого замедления в работе ядра, что в этом плохого? Что его эффективность не 100 прочентов?

 

А говорить что можно написать программу состоящию только из одних out ... можно, только зачем этой програме DMA???

 

Анатолий.

Изменено пользователем aesok

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


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

У кого-то паранойя :) Не будем показывать пальцем у кого.

 

ЗЫ. В IBM PC ещё на ISAшных слотах чудесно работал DMA на звуковухе например. Все поголовно были счастливы.

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


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

Вам нахаляву добавили DMA...

Про халяву :( поговорим, если цена будет на конкурентном уровне. На данный момент дешевле обходится без "халявы" от Atmel.

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


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

Да нет в общем то я надеялся на лучшее. zltigo всётаки прав. Получается, что они даже при работе с IO областью не разрулили. Чтож - ладно.

 

Несколько непонятно. Регистры это же тоже RAM. Хотя возможно доступ к ней отдельно как-то осуществляется.

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


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

ЗЫ. В IBM PC ещё на ISAшных слотах чудесно работал DMA на звуковухе например

А еще первые HDD контроллеры работали на DMA, а потом перестали, ибо мееедленно, а потом опять стали, когда 386 c кэшами появились и на PCI c busmaster-ами переползли.

 

 

 

Регистры это же тоже RAM...

Обычно они не за шиной находятся, посему это не проблема. Опять-таки шины данных и команд у AVR разные, посему польза есть. Я только супротив чрезмерной эйфории, типа "DMA это наше все" выступаю. По энергопотреблению от DMA, при грармотной архитектуре и правильном применении есть несомненная польза.

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


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

Да нет в общем то я надеялся на лучшее. zltigo всётаки прав. Получается, что они даже при работе с IO областью не разрулили. Чтож - ладно.

 

Я взял реальный проект, MP3 плеер, размер секци кода 11968 байт или 5984 инструкций. При этом количесто инструкций OUT - 59 и IN - 84, тоесть разруливание ситуации с адресным пространством 0-3F, даст повышение эффективности работы DMA только на 2,5%. Со всем адресным пространством IO примерно процентов на 5.

 

 

Анатолий.

 

Регистры это же тоже RAM.

 

Вы не читали описание Xmega. В ней регисры не отражаются в RAM.

 

Про халяву :( поговорим, если цена будет на конкурентном уровне. На данный момент дешевле обходится без "халявы" от Atmel.

 

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

 

Анатолий.

Изменено пользователем aesok

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


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

Не понравилась мне xmega (

DMA могло бы иметь больший приоритет, чтобы обеспечивать _равномерность_ ввода-вывода, а честной кроссировки периферии на произвольный пин так и не появилось. Напротив, шесть UART`ов и иже с ними вроде бы совершенно ни к чему. В одном камне. Короче, я уже начал ждать xmega-2 ))) (

Изменено пользователем Огурцов

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


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

+ мои 5 копеек

 

Господа, не следует забывать о том, что АТМЕЛ уже сформировал поколение AVR-разрабочиков.

 

Каким бы старым ни было 51-е ядро, его все еще продолжают выпускаить (и улучшать) только лишь потому, что целый слой разработчиков (и море разработок) невозможно вот так взять и перенести на другие ядра. А раз нельзя, и есть спрос, то почему бы не продолжать продавать 51-е ядра?

 

Я про себя скажу. Я периодически пытаюсь переползти на АРМ. Примерно уже год, как пытаюсь. (Смейтесь на здоровье!) Что мне мешает? -- А мешает мне как раз та текучка, которая не дает "поиграться" с новым МК. Мешает риск (связанный с не знанием новой архитектуры) не уложится в сроки или вообще (о, ужас!) провалить проект. Поэтому, приходится опираться на проверенные решения. Поэтому, при повышенных требованиях к вычислительной мощности ядра я буду все-таки ориентироваться на Х-Мега, а не на АРМы. Ну или разбивать процессы на несколько МК -- Мастер-камень и несколько слейв-камней.

 

Вывод прост -- мы все во власти времени, мы рабы времени. Недостаток времени делает нас заложниками того или иного ядра. Понимая это, АТМЕЛ создает ядро максимально похожее на AVR, но с навовротами, которые можно постепенно в процессе работы "доучить". В целом же, какртина для АВР-щиков не сильно изменилась. По крайней мере переползти с Мага/Тайни на Х-Мега быстрее и легче, чем на тот же АРМ7/9, ПИКи и другие ядра.

 

И еще, Х-Мега -- это не заменитель какого-то продукта, это -- еще одна консерва на полке в супермаркете. А покупать или не покупать -- это дело вкуса. Спорить о вкусах -- только время тратить.

А тем более навязывать свой вкус.

 

 

Наверно много банально сказал, да?

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


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

По крайней мере в AVR проблем при работе с переферией просто не наблюдаю.

Наводит на мысль "не ошибается тот. кто ничего не делает". В общем - они есть.

Приведу пример возможного использования. Ввожу странично данные из внешнего EEPROM в ОЗУ (буфферизую) и с помощью DMA вывожу значение в ЦАП. Пока нет реального устройства говорить возможно ли первую часть реализовать на DMA не приходится, но вторая часть явно реализуется просто. Эффективность такой работы, опять же, зависит от реализации ПДП в данном МК, но удобство - совершенно для меня очевидно.

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

ЗЫ. В IBM PC ещё на ISAшных слотах чудесно работал DMA на звуковухе например. Все поголовно были счастливы.

Тока что этой МЕГЕ делать, если у нее нет звуковой карты, а шина 8-битная и наружу не выходит.

А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом :)....

Эт немного не по теме, но программистам будет интересно, зачем пишут такие надписи. Это - как бы я назвал - "кумулятивная мотивация" - говоря техническим сленгом. элементарный троян. Эта фраза оборачивается спереди фразой - утверждением, типа - "Специалисты утверждают - ", обычно выделяемой каким нить способом. Как это работает? При прочтении моск, пытаясь выделить смысл фразы, определяет. что она смысла не имеет ( вдумайтесь сами о 72% - особенно мне нравятся фразы типа "делают ваши волосы сильнее на 80%"), на крайняк будет немного смешно. Как следствие - пропускает ее. Но настроение, заключенное во фразах - утверждениях, остается и попадает напрямую в подсознание и, когда перед вами будет выбор купить ту или эту зубную пасту подсознательно вы выберете именно эту.

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


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

Да нет в общем то я надеялся на лучшее. zltigo всётаки прав. Получается, что они даже при работе с IO областью не разрулили. Чтож - ладно.

 

Оказываеться разрулили.

ATxmega A MANUAL, страница 37, и рис 4-3.

4.10 Data Memory and Bus Arbitration

 

As the Data Memory organized as four separate sets of memories, the different bus masters

(CPU, DMA Controller read and DMA Controller write) can access different memories at the

same time. As Figure 4-3 on page 38 shows, the CPU can access the External Memory while

the DMA Controller (DMAC) is transferring data from Internal SRAM to I/O Memory.

 

Анатолий.

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


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

Не понравилась мне xmega (

DMA могло бы иметь больший приоритет, чтобы обеспечивать _равномерность_ ввода-вывода, а честной кроссировки периферии на произвольный пин так и не появилось. Напротив, шесть UART`ов и иже с ними вроде бы совершенно ни к чему. В одном камне. Короче, я уже начал ждать xmega-2 ))) (

 

Перефразирую "сколько людей - столько мнений", в "сколько разработчиков - столько задач"... мне вот их DMA и перекроссировка периферии и нафиг не нужны, а 8 UARTов - самое ценное, что там есть :)

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


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

Наводит на мысль "не ошибается тот. кто ничего не делает". В общем - они есть.

Огласите пожалуйста хоть одну багу в переферии AVR которая не описана в еррате...

И желательно с исходным кодом который ее(ошибку) продемонстрирует...

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


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

:bb-offtopic:

Да что вы не видите, человек работает с PICами и наслушился страшных сказок от таких же как сам.

 

Да пусть приведёт пример ошибки переферии озвученной в errate. Для совершенно новой atmega2560 - две строчки незначительных. Я сейчас просмотрел несколько камней ходовых - это же слёзы просто. Давече вон с at90can128 работал. У кристаллов с CAN интерфейсом традиционно большие ерраты. А здесь - пару строчек.

 

При разработке мне дали в виде основы аналогичный текст для 18fxx8x кристалла. Когда реализовал его на can128 - я плакалъ. Исходный текст несколько страниц - результирующий - десяток строк инициализации да два обработчика прерываний по пять строк. Что и говорить - зато кристалл простой. :)

 

PS: Даю выдержку из даташита на at90can128 (разработанную во времена былинные и до сих пор выпускающуюся) и прилагаю оффициальную еррату (последнюю) с сайта микрочипов на серию can контроллеров. Не будем обращать внимание на такую мелочь как ошибки ядра - просто бегло просмотрите.

 

Errata The revision letter in this section refers to the revision of the AT90CAN128 device.
Rev A & B - Rev A (Part marked M128CAN11-EL)
- Rev B (Part marked 90CAN128-EL)
• Sporadic CAN error frames
• Spike on TWI pins when TWI is enabled
• ADC differential gain error with x1 & x10 amplification
• Asynchronous Timer-2 wakes up without interrupt
• SPI programming timing
• IDCODE masks data from TDI input
6. Sporadic CAN error frames
When BRP = 0 the CAN controller may desynchronize and send one error frame to ask
for the retransmission of the incoming frame, even though it had no error.
This is likely to occur with BRP = 0 after long inter frame periods without synchronization
(low bus load). The CAN macro can still properly synchronize on frames following the
error.
Problem Fix/Workaround
Set BRP greater than 0 in CANBT1
5. Spike on TWI pins when TWI is enabled
100 ns negative spike occurs on SDA and SCL pins when TWI is enabled.
Problem Fix/Workaround
No known workaround, enable AT90CAN128 TWI first versus the others nodes of
the TWI network.
4. ADC differential gain error with x1 & x10 amplification
Gain error of - 4 lsb has been characterized on the part.
Problem Fix/Workaround
Software adjustment.
3. Asynchronous Timer-2 wakes up without interrupt
The asynchronous timer can wake from sleep without giving interrupt. The error only
occurs if the interrupt flag(s) is cleared by software less than 4 cycles before going
to sleep and this clear is done exactly when it is supposed to be set (compare match
or overflow). Only the interrupts flags are affected by the clear, not the signal witch
is used to wake up the part.
Problem Fix/Workaround
No known workaround, try to lock the code to avoid such a timing.
2. SPI programming timing
When the fuse high byte or the extended fuse byte has been written, it is necessary
to wait the end of the programming using “Poll RDY/BSY” instruction. If this instruc384
AT90CAN128
4250D–CAN–07/04
tion is entered too speedily after the “Write Fuse” instruction, the fuse low byte is
written instead of high fuse /extended fuse byte.
Problem Fix/Workaround
Wait sometime before applying the “Poll RDY/BSY” instruction. For 8MHz system
clock, waiting 1 μs is sufficient.
1. IDCODE masks data from TDI input
The JTAG instruction IDCODE is not working correctly. Data to succeeding devices
are replaced by all-ones during Update-DR.
Problem Fix / Workaround
– If AT90CAN128 is the only device in the scan chain, the problem is not
visible.
– Select the Device ID Register of the AT90CAN128 by issuing the IDCODE
instruction or by entering the Test-Logic-Reset state of the TAP controller to
read out the contents of its Device ID Register and possibly data from
succeeding devices of the scan chain. Issue the BYPASS instruction to the
AT90CAN128 while reading the Device ID Registers of preceding devices of
the boundary scan chain.
– If the Device IDs of all devices in the boundary scan chain must be captured
simultaneously, the AT90CAN128 must be the first device in the chain.

80161j.pdf

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


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

Огласите пожалуйста хоть одну багу в переферии AVR которая не описана в еррате...

И желательно с исходным кодом который ее(ошибку) продемонстрирует...

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

Вторая - это, возможно уже из серии "кто старое помянет, тому глаз вон". УАРТ. На первых МЕГАХ УАРТ начинал прием байта не по заднему фронту, а по низкому уровню. Это позволяло выгодно пользоваться этой ошибкой при приеме DMX. Атмел так и не признал свою ошибку, а тихонечко исправил. Во всяком случае, на МЕГЕ162.

Третье - эта ошибка описана в еррате, но предложение по ее решению мне очень нравится. МЕГА48/88/168. Прерывание, вызываемое генератором собаки. Оказывается, оно может не срабатывать. Решение, предлагаемое Атмелами - это разрешать это прерываение перед его срабатыванием. Просто писк.

:smile3009:

:bb-offtopic:

Да что вы не видите, человек работает с PICами и наслушился страшных сказок от таких же как сам.

С Атмелами по причине их дешевизны и доступности просто приходится работать.

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


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

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...