|
|
  |
DMA унд ARM, Принцип работы несколько непонятен |
|
|
|
Oct 5 2007, 08:56
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Итак, ARM9, конкретно Самсунг S3c2440. Есть две микрухи памяти, по 16 магабайт каждая. Каждая содержит в себе 4 банка (х.з., что такое), имеет 16 разрядную шину данных. Планируется подключение их каждую на свою половину шины данных, стало быть, вдвоём они будут на шине 32 бита. Гимор с сигналами выбора банка (полагаю, что их можно прицепить на пару сраших адресных линий), и самый большой гимор с сигналами *DQM (UDQM, LDQM - их там пара). Вот что делать с ними - неизвестно. На схеме отладочной платы для at91rm9200, которую глянул ради интереса, они подключены к чему-то непонятному: одна к младшей адресной линии, другая к сигналу разрешения записи, что-ли, не вдавался.
Подскажите, плз, как понимать эти ножки ? По скудным описаниям SDRAM в инете - увязать всё по нормальному не могу.
Спасибо.
|
|
|
|
|
Oct 8 2007, 02:12
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Цитата(PrSt @ Oct 5 2007, 16:53)  а что сказано в даташите на этот Самсунг S3c2440, про эти сигналы? там ведь должен быть раздел по работе с памятью... М-м.. Особо ничего не сказано. Особенно про эти сигналы. Про банки сказано, в смысле, к каким линиям подключать. Цитата(PSP @ Oct 6 2007, 01:11)  Банк в SDRAM это совсем не то, что в SRAM. Если кратко, то контроллер памяти должен перед чтением/записью "открыть" (active) банк памяти и после этого возможна более быстрая работа с данной группой адресов в этом банке. Что-бы начать работу с другими адресами в этом банке, нужно его "закрыть" (precharge) и открыть снова, с новым адресом. Четыре банка делят память на 4 равные части и позволяют держать одновременно "открытыми" четыре разных адреса. Хм.. Точно. Хорошая идея, запомню :) Цитата(PSP @ Oct 6 2007, 01:11)  банки их нельзя подключать к произвольным адресным выводам. В datasheet обычно указано куда подключаться для разного объема и конфигурации SDRAM. Так и есть, написано. Цитата(PSP @ Oct 6 2007, 01:11)  С сигналами UDQM, LDQM все гораздо проще. Это выбор старшего/младшего байта и подключаются они к DQM[3:0] - SDRAM Data Mask, как раз для 32 бит. Это в принципе, и впрямь проще, но вся вата в том, что нет таких ножек у контроллера ! Я обыскался в даташите. В паре примеров подключения памяти они есть, но ножек таких нет. Плз, давай я пришлю даташит, глянь там ? А то я прям не знаю, что делать уже.
|
|
|
|
|
Oct 8 2007, 03:01
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Цитата(aaarrr @ Oct 8 2007, 08:44)  Зато есть выходы nBE0-nBE3, которые и соответствуют DQM0-DQM3. В общем, я тоже склоняюсь к этому-же выводу. Нашёл какой-то application notes, там тоже так-же подключено... Спасибо всем ответившим.
|
|
|
|
|
Sep 19 2008, 09:10
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Привет всем. Опять у меня дошли руки до АРМ-процов. Читаю доку на Samsung S3C2440. Интересует пересылка данных посредством DMA с подключенного внешнего устройства. Судя по прочтённому получается, что общение блоками состоит из: 1. Инициализация (подробности опущу). 2. 4 операции чтения + 4 операции записи (можно меньше, наверное). 3. Проверка готовности DMA 4. Если готов - продолжаем на шаг #2 5. Завершение (опускаю подробности). Требуется понять: нафига обязательные 4 чтения перед записью, если я хочу только писать ? Или наоборот ? Может, я как-то не так понял ? Как на других контроллерах сделано ? Цитата(impatt @ Sep 19 2008, 14:48)  Требуется понять: нафига обязательные 4 чтения перед записью, если я хочу только писать ? Или наоборот ? Может, я как-то не так понял ? Как на других контроллерах сделано ? Э-э.. Кажется, я начинаю догонять. Сначала читается из того места, откуда берутся данные, потом пишется в целевое место, кусками по 4 слова. Так, что-ли ?..
|
|
|
|
|
Sep 19 2008, 10:23
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(impatt @ Sep 19 2008, 12:10)  Э-э.. Кажется, я начинаю догонять. Сначала читается из того места, откуда берутся данные, потом пишется в целевое место, кусками по 4 слова. Так, что-ли ?.. Хм, мне казалось, что принципы DMA не изменились - чтение и запись происходят одновременно. Direct memory access, yes? Может, с википедии начать? http://en.wikipedia.org/wiki/Direct_memory_access
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 20 2008, 03:42
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Цитата(Dog Pawlowa @ Sep 19 2008, 16:23)  чтение и запись происходят одновременно. Ну, я ж не спрашиваю, что такое DMA ?  Так что, сэр, предлагаю поразмыслить над тем, как имея одну шину адреса и одну шину данных, к которым подключен источник и получатаель, можно читать и писать _одновременно_. Типа, шина адреса будет сразу два адреса удерживать (источника и получателя), так что-ли ?  Собсна, ввиду того, что такое невозможно, становится ясно, почему в ARM-ах а-ля PXA270 и S3C2440 сделано сходно и именно таким образом. Вопрос снят. ЗЫ: а за ссылочку спасибо - что-то я позабыл про cache coherency problem, вовремя вспомнил благодаря ссылочке
|
|
|
|
|
Sep 22 2008, 06:25
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(impatt @ Sep 20 2008, 06:42)  Так что, сэр, предлагаю поразмыслить над тем, как имея одну шину адреса и одну шину данных, к которым подключен источник и получатаель, можно читать и писать _одновременно_. Типа, шина адреса будет сразу два адреса удерживать (источника и получателя), так что-ли ?  И я ссылочку посмотрел  В википедии вруть: " is a feature of modern computers " 30 лет назад DMA успешно работал в системе с 8080 (контроллер 8057 или 8257 - забыл  ). Это режим memory-to-memory появился сравнительно недавно, вот некоторые могли бы уточнить режим, а не взывать к телепатии. Тем более, что (опять по ссылке) "A slave interface is similar to programmed I/O through which the software (running on embedded CPU, e.g. ARM) can write/read I/O registers or (less commonly) local memory blocks inside the device"
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 21 2009, 15:18
|

Местный
  
Группа: Свой
Сообщений: 396
Регистрация: 22-10-04
Из: Воронеж
Пользователь №: 962

|
Цитата Итак, ARM9, конкретно Самсунг S3c2440. Есть две микрухи памяти, по 16 магабайт каждая. Каждая содержит в себе 4 банка (х.з., что такое), имеет 16 разрядную шину данных. Планируется подключение их каждую на свою половину шины данных, стало быть, вдвоём они будут на шине 32 бита. Гимор с сигналами выбора банка (полагаю, что их можно прицепить на пару сраших адресных линий), и самый большой гимор с сигналами *DQM (UDQM, LDQM - их там пара). Вот что делать с ними - неизвестно. На схеме отладочной платы для at91rm9200, которую глянул ради интереса, они подключены к чему-то непонятному: одна к младшей адресной линии, другая к сигналу разрешения записи, что-ли, не вдавался.
Подскажите, плз, как понимать эти ножки ? По скудным описаниям SDRAM в инете - увязать всё по нормальному не могу.
Спасибо. Тупо качаете схему девелопмент кита , к примеру отсюда и разбираетесь что для чего и зачем (или просто срисовываете и всё). Вот интересное
--------------------
всё можно наладить, если достаточно долго вертеть в руках /Законы Мерфи/
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|