powerc 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Никак не могу найти драйвер для XPS Multi-CHannel External Memory Controller (XPS MCH EMC). Открываю папкe microblaze_0\libsrc\emc_v3_01_a\src , а там пустота... В EDK-шном каталоге все заголовники пустые. :( То есть драйвер для этого контроллера не сгенерился. Что мне делать? Мне нужно организовать чтение и запись во внешнюю Micron SDRAM в режиме burst mode. Колупаюсь уже 2 недели, никак не пойму что делать. Помогите, люди добрые! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Мне всегда казалось, что EMC - это не для SDRAM... А для SDRAM - MPMC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Мне всегда казалось, что EMC - это не для SDRAM... А для SDRAM - MPMC. Ну EMC подходит и для флешки для для сдрама. Из даташита на контроллер. provides the control interface for external synchronous, asynchronous SRAM and Flash memory devices through the MCH. Просто EDK Base System Builder мне через него подключил SDRAM-ку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Ну EMC подходит и для флешки для для сдрама. Из даташита на контроллер. provides the control interface for external synchronous, asynchronous SRAM and Flash memory devices through the MCH. Просто EDK Base System Builder мне через него подключил SDRAM-ку. Ключевое слово здесь SRAM - почувствуйте разницу между SRAM и SDRAM. :) Это совершенно разные интерфейсы и технологии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Ключевое слово здесь SRAM - почувствуйте разницу между SRAM и SDRAM. :) Это совершенно разные интерфейсы и технологии. Точно! Память там не SDRAM, а SRAM с вот такой выкладкой в general description Micron® CellularRAM™ is a high-speed, CMOS pseudo-static random access memory developed for low-power, portable applications. The MT45W8MW16BGX device has a 128Mb DRAM core, organized as 8 Meg x 16 bits. These devices include an industrystandard burst mode Flash interface that dramatically increases read/write bandwidth compared with other low-power SRAM or pseudo-SRAM offerings. Контроллер для нее EMC. Так вот как же объяснить на языке Си микроблэйзу то, что я хочу почитать/пописать из этой памяти в burst-режиме? Повторюсь, драйвера для этого контроллера я так и не нашел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба Контроллер для нее EMC. Так вот как же объяснить на языке Си микроблэйзу то, что я хочу почитать/пописать из этой памяти в burst-режиме? Повторюсь, драйвера для этого контроллера я так и не нашел. У меня была ситуация , когда даже не генерировались драйвера для GPIO. Связано это было с заданием своих значений параметров при создании GPIO. Видимо, не понравилась комбинация значений. Попробуйте взять за основу параметры по умолчанию, генерируйте BSP и берите за основу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 20 января, 2011 Опубликовано 20 января, 2011 · Жалоба У меня была ситуация , когда даже не генерировались драйвера для GPIO. Связано это было с заданием своих значений параметров при создании GPIO. Видимо, не понравилась комбинация значений. Попробуйте взять за основу параметры по умолчанию, генерируйте BSP и берите за основу. Огромное спасибо за ответ! Завтра на работе с утра попробую и отпишусь сразу же :) Правда когда я генерил проект для Nexys'а, я ничего не выставлял необычного, кроме кэша процессора(ведь без него низзя бурст организовать, насколько я понимаю?), и установки кэшлинков для этой самой микроновской памяти. С кэшлинками этими так и не разобрался правда, совсем еще новичок в этом деле. Это просто кеширование памяти получается, вот эти IXCL и DXCL? Для чего это кеширование по линии инструкций и данных, не пойму. Еще раз большое спасибо за ответ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба Нет. Все-таки ничего так и не вышло. Сгенерил в Base System Buildere систему с полностью дефолтными параметрами (жал только кнопку next). Та драйверов для EMC я и не увидел... Может быть подцепить вышеуказанную память к какому-нибудь другому контроллеру? Как быть? Как получить дрова для EMC-контроллера? Или может быть есть альтернативные методы решения данной проблемы? Пока не знаю что делать, попробую использовать flash память, которая также установлена на моем ките (nexys2). Может быть для нее сгенерятся дровки. Об изменениях буду писать в топик. Вобщем-то мне по-прежнему нужно записать и почитать из внешней памяти в режиме burst mode. Если у кого появятся какие-то мысли и желание ими поделиться, буду очень благодарен. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба С флэшкой тоже ничего не получилось. Видимо ксайлинксовцы просто и не писали драйверы на этот контроллер :( Соответственно и в API на драйвер написано следующее: This driver exists only to allow the EDK tools to create a memory test application and to populate xparameters.h with memory range constants. There is no source code. Только вот в xparameters.h по поводу этого контроллера написано /* Definitions for peripheral MICRON_RAM */ #define XPAR_MICRON_RAM_NUM_BANKS_MEM 1 /******************************************************************/ /* Definitions for peripheral MICRON_RAM */ #define XPAR_MICRON_RAM_MEM0_BASEADDR 0x80000000 #define XPAR_MICRON_RAM_MEM0_HIGHADDR 0x80FFFFFF /******************************************************************/ /* Canonical definitions for peripheral MICRON_RAM */ #define XPAR_EMC_0_NUM_BANKS_MEM 1 #define XPAR_EMC_0_MEM0_BASEADDR 0x80000000 #define XPAR_EMC_0_MEM0_HIGHADDR 0x80FFFFFF #define XPAR_XPS_MCH_EMC Как мне на основе этих данных сконфигурить контроллер для блочной передачи и написать простенький цикл блочной записи/чтения? Помогите пожалуйста ламеру, я в программировании чайник чугунный, а задачку надо разрубить :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба Как мне на основе этих данных сконфигурить контроллер для блочной передачи и написать простенький цикл блочной записи/чтения? Помогите пожалуйста ламеру, я в программировании чайник чугунный, а задачку надо разрубить :( Вам надо разобраться что есть такое "блочная запись/чтение". От этого у Вас и все проблемы. В данном случае блочные пересылки осуществляются полностью АППАРАТНО и ПРОГРАММНОГО управления этим процессом не существует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба Alex77, то есть программку для того, чтобы мне в burst режиме записать по заданному диапазону адресов допустим 0XFFFFFFFF мне написать никак не получится? :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DM1206 0 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба У Вас не получится работать с памятью через этот контроллер как-то иначе, чем предусмотрено его разработчиками. Alex77 совершенно прав. И никакого драйвера для этого устройства не существует. Если Вам нужно задействовать какие-то механизмы, которые поддерживает Ваша память, но не поддерживает контроллер EMC, у Вас только 1 выход - написать свой контроллер... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба Дмитрий Мазунин, большое спасибо за ответ! К сожалению на написание своего контроллера у меня совсем нет времени :( Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA. Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью. Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA? Чтобы была ясна моя задача, она такова: мне нужно максимально быстро выкачать из памяти данные. В идеале, понятное дело, с чатотой шины(то есть как в режиме burst). Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA? Простите мне мое ламерство пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 22 января, 2011 Опубликовано 22 января, 2011 · Жалоба Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA. Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью. С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память. Но, как Вам правильно сказали, поднять скорость общение процессора с памятью выше, чем это заложено разработчиками контроллера, невозможно. Вы можете лишь, снять с процессора задачи по перекидки данных, чем повысите быстродействие и поднимите в целом производительность. Сделать это можно с помощью DMA контроллера. Сажать его как отдельный абонент на шине, не рекомендую (opb_central_dma) капризная вещь. Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA? DMA вещь аппаратная по определению!!! Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA? Да правильно, только рекомендую изначально создавать периферийный модуль со своим собственным DMA. Plb_ipif это позволяет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
powerc 0 22 января, 2011 Опубликовано 22 января, 2011 · Жалоба Спасибо! >>DMA вещь аппаратная по определению!!! Да, я это понимаю, только вот в ядре процессора ее нет. Посему я и предположил использование central_dma. А в каких контроллерах это можно использовать? В EMC его можно подключить? Просто я, к сожалению, пока что не нашел как это сделать. Просто мой девкит предполагает использование EMC, и как я понимаю альтернативного контроллера для данного чипа памяти нету среди готовых IPядер. >>С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память. Спасибо за эту информацию! Теперь для меня стал больше понятен тот проект, который сгенерился в Base System Buildere. PS Я использую шину PLB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться