Полная версия этой страницы:
ПДП в ARM
Вот как мне известно прямой доступ к памяти в SAM7X SAM7S реализован с приоритетом не процессора, а контроллера ПДП. Так вот, в каких случаях возможны такие случаи, когда нужно, чтобы процессор в данный момент времени не отвлекался ни на микросекунду, но в тоже самое время и данные по DBGU (RS232) не потерять (данные по DBGU передаются в SRAM с интервалом в 5 секунд, после чего обработка, затем всё повторяется...)?
Спасибо.
Недавно
обсуждали атмеловский PDC.
Если Вы не хотите тормозить процессор ни на такт, то остается только отказаться от PDC. Хотя это странное требование.
Цитата(aaarrr @ Oct 9 2008, 17:59)

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

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

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

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

Другое дело, что мне лично, так и не ясно, что автор данной ветки хочет узнать, т.к. толком про свою задачу не написал. DBGU данные через PDC пишет?
Вот и мне теперь не понятно

Я привел данные для чтения DBGU при помощи PDC. Т.е. процессор встанет максимум на 2 такта в то время, пока PDC будет окучивать DBGU.
Цитата(sergeeff @ Oct 9 2008, 18:40)

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

Тогда все правильно - процессор будет вставать максимум на 2 такта каждые 86.8мкс.
Спасибо, просто в точку попали!
bloodden
Oct 9 2008, 16:31
Цитата(sergeeff @ Oct 9 2008, 19:16)

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

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

Касательно cache. Так как у Atmel'а аппаратно не решен вопрос когерентности кеша при совместной работе процессора и DMA, то и толку от его наличия немного, в смысле минимизации простоя процессора.
А у кого он решен, можете сказать? Когерентность кэша - забота программиста.
И к минимизации простоя процессора при работе DMA данная проблема отношения не имеет.
VslavX
Oct 10 2008, 07:46
Цитата(aaarrr @ Oct 10 2008, 09:59)

А у кого он решен, можете сказать? Когерентность кэша - забота программиста.
У Freescale решен. Кеши некоторых PowerPC ядер могут поддерживать когерентность - как относительно доступа других ядер, так и DMA. Лично не пробовал "как оно", но собираюсь

. А то скорости по 2xGbE нужны большие - кеши инвалидировать целиком жалко, а выборочно - относительно долго
aaarrr
Oct 10 2008, 08:16
Дык мы все же об ARM'ах говорим (и UART'е на скорости 115200, а не 2xGbE

).
VslavX
Oct 10 2008, 08:40
Цитата(aaarrr @ Oct 10 2008, 11:16)

Дык мы все же об ARM'ах говорим (и UART'е на скорости 115200, а не 2xGbE

).
Да понятно

. Это я вылез с "исторической справкой", для общего развития

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

А выяснилось, что просто код немного сдвигался и выборка из флеша немного по-другому сработала.
Программа в thumb'е была?
VslavX
Oct 10 2008, 09:33
Цитата(aaarrr @ Oct 10 2008, 12:02)

Программа в thumb'е была?
Угу, в thumb'e.
sergeeff
Oct 10 2008, 11:11
Тем не менее просто даже интересно узнать, что у автора такого немыслимого непрерывно делает процессор, что он (автор) сильно озабочен выпадением 2 тактов процессорного времени?
singlskv
Oct 10 2008, 18:24
Цитата(sergeeff @ Oct 10 2008, 15:11)

Тем не менее просто даже интересно узнать, что у автора такого немыслимого непрерывно делает процессор, что он (автор) сильно озабочен выпадением 2 тактов процессорного времени?
Думаю что автор топика считал что затраты будут куда как больше...(в данном
конкретном случае конечно...)
поэтому и недоверие ПДП...
sergeeff
Oct 10 2008, 18:38
Книжки надо умные читать (еще Intel на эту тему писал), что DMA - лучшее решение для разгрузки процессора от решения интерфейсных задач.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.