Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ПДП в ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Morfko
Вот как мне известно прямой доступ к памяти в SAM7X SAM7S реализован с приоритетом не процессора, а контроллера ПДП. Так вот, в каких случаях возможны такие случаи, когда нужно, чтобы процессор в данный момент времени не отвлекался ни на микросекунду, но в тоже самое время и данные по DBGU (RS232) не потерять (данные по DBGU передаются в SRAM с интервалом в 5 секунд, после чего обработка, затем всё повторяется...)?

Спасибо.
aaarrr
Недавно обсуждали атмеловский PDC.
Если Вы не хотите тормозить процессор ни на такт, то остается только отказаться от PDC. Хотя это странное требование.
Morfko
Цитата(aaarrr @ Oct 9 2008, 17:59) *
Недавно обсуждали атмеловский PDC.
Если Вы не хотите тормозить процессор ни на такт, то остается только отказаться от PDC. Хотя это странное требование.


Хорошо, а если 5 или 10 тактов для моей проги - ничего страшного? Вообще, на какое время (тактов или мксек) отвлечется процессор для того, чтобы приянть данные по DBGU (USART)?
aaarrr
На 2 такта.
Morfko
Цитата(aaarrr @ Oct 9 2008, 18:21) *
На 2 такта.


А если без приколов, кто знает какое гарантированное время "отвлечения" проца?
aaarrr
Цитата(Morfko @ Oct 9 2008, 19:28) *
А если без приколов, кто знает какое гарантированное время "отвлечения" проца?

А где Вы увидели прикол, уважаемый? 2 такта на одну пересылку из периферии.
sergeeff
Цитата(aaarrr @ Oct 9 2008, 19:32) *
А где Вы увидели прикол, уважаемый? 2 такта на одну пересылку из периферии.


Ну на самом деле, конечно же больше. Процессор по любому должен распознать, что данные в DBGU появились. Другое дело, что мне лично, так и не ясно, что автор данной ветки хочет узнать, т.к. толком про свою задачу не написал. DBGU данные через PDC пишет?
aaarrr
Цитата(sergeeff @ Oct 9 2008, 19:40) *
Другое дело, что мне лично, так и не ясно, что автор данной ветки хочет узнать, т.к. толком про свою задачу не написал. DBGU данные через PDC пишет?

Вот и мне теперь не понятно 07.gif
Я привел данные для чтения DBGU при помощи PDC. Т.е. процессор встанет максимум на 2 такта в то время, пока PDC будет окучивать DBGU.
Morfko
Цитата(sergeeff @ Oct 9 2008, 18:40) *
Ну на самом деле, конечно же больше. Процессор по любому должен распознать, что данные в DBGU появились. Другое дело, что мне лично, так и не ясно, что автор данной ветки хочет узнать, т.к. толком про свою задачу не написал. DBGU данные через PDC пишет?


Да, именно DBGU данные через PDC пишет... скорость 115К...
aaarrr
Тогда все правильно - процессор будет вставать максимум на 2 такта каждые 86.8мкс.
sergeeff
Для того, чтобы "ничего не терялось" Atmel и реализовал пару связанных DMA буферов. Прерывание приходит по заполнению первого буфера и автоматически DMA переключается на второй буфер. Соответственно у процессора вагон времени, чтобы чего-то с этими данными сделать. Так и не понимаю, в чем проблема у автора?
Morfko
Цитата(aaarrr @ Oct 9 2008, 19:00) *
Тогда все правильно - процессор будет вставать максимум на 2 такта каждые 86.8мкс.

Спасибо, просто в точку попали!
bloodden
Цитата(sergeeff @ Oct 9 2008, 19:16) *
Для того, чтобы "ничего не терялось" Atmel и реализовал пару связанных DMA буферов. Прерывание приходит по заполнению первого буфера и автоматически DMA переключается на второй буфер. Соответственно у процессора вагон времени, чтобы чего-то с этими данными сделать. Так и не понимаю, в чем проблема у автора?

А в буфера когда писать? ....... Вот про эти 2 такта и разговор ведётся. Это те 2 такта, которые процессор простаивает, когда ПДП захватывает шину памяти. Был бы кеш такого бы небыло.
Если я не прав - поправьте.
aaarrr
Правы, только наличие кэша ничего не гарантирует, а лишь снижает вероятность простоя.
bloodden
Цитата(aaarrr @ Oct 9 2008, 19:44) *
Правы, только наличие кэша ничего не гарантирует, а лишь снижает вероятность простоя.

Да, спасибо. этот момент я забыл упомянуть - вероятность smile.gif
sergeeff
Все равно не могу понять логику разработчика, озабоченного простоем процессора 2 такта на 90 мкс. Либо задача плохо сформулирована, либо совсем слаб процессор. Касательно cache. Так как у Atmel'а аппаратно не решен вопрос когерентности кеша при совместной работе процессора и DMA, то и толку от его наличия немного, в смысле минимизации простоя процессора.
aaarrr
Цитата(sergeeff @ Oct 10 2008, 02:21) *
Касательно cache. Так как у Atmel'а аппаратно не решен вопрос когерентности кеша при совместной работе процессора и DMA, то и толку от его наличия немного, в смысле минимизации простоя процессора.

А у кого он решен, можете сказать? Когерентность кэша - забота программиста.
И к минимизации простоя процессора при работе DMA данная проблема отношения не имеет.
VslavX
Цитата(aaarrr @ Oct 10 2008, 09:59) *
А у кого он решен, можете сказать? Когерентность кэша - забота программиста.

У Freescale решен. Кеши некоторых PowerPC ядер могут поддерживать когерентность - как относительно доступа других ядер, так и DMA. Лично не пробовал "как оно", но собираюсь smile.gif. А то скорости по 2xGbE нужны большие - кеши инвалидировать целиком жалко, а выборочно - относительно долго sad.gif
aaarrr
Дык мы все же об ARM'ах говорим (и UART'е на скорости 115200, а не 2xGbE smile.gif ).
VslavX
Цитата(aaarrr @ Oct 10 2008, 11:16) *
Дык мы все же об ARM'ах говорим (и UART'е на скорости 115200, а не 2xGbE smile.gif ).

Да понятно smile.gif. Это я вылез с "исторической справкой", для общего развития smile.gif.
А для топикстартера - для того чтобы "выровнять" ядро на микросекунды - надо еще и код во флешке выравнивать. Наткнулся я на такое в SAM7 - написал код, просто генерирует импульс на ножке - допустим скоп видит 150нс. Потом чего-то поменял незначительно в процедуре - и оп-па - уже скоп показывает импульс 250нс. А выяснилось, что просто код немного сдвигался и выборка из флеша немного по-другому сработала. Думаю что в LPC-ях, с их MAM-ом, разброс может быть еще значительно больше.
aaarrr
Цитата(VslavX @ Oct 10 2008, 12:40) *
А выяснилось, что просто код немного сдвигался и выборка из флеша немного по-другому сработала.

Программа в thumb'е была?
VslavX
Цитата(aaarrr @ Oct 10 2008, 12:02) *
Программа в thumb'е была?

Угу, в thumb'e.
sergeeff
Тем не менее просто даже интересно узнать, что у автора такого немыслимого непрерывно делает процессор, что он (автор) сильно озабочен выпадением 2 тактов процессорного времени?
singlskv
Цитата(sergeeff @ Oct 10 2008, 15:11) *
Тем не менее просто даже интересно узнать, что у автора такого немыслимого непрерывно делает процессор, что он (автор) сильно озабочен выпадением 2 тактов процессорного времени?
Думаю что автор топика считал что затраты будут куда как больше...(в данном
конкретном случае конечно...)
поэтому и недоверие ПДП...
sergeeff
Книжки надо умные читать (еще Intel на эту тему писал), что DMA - лучшее решение для разгрузки процессора от решения интерфейсных задач.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.