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

Проблема с блочным чтением и записью по шине PLB

Никак не могу найти драйвер для XPS Multi-CHannel External Memory Controller (XPS MCH EMC).

 

Открываю папкe microblaze_0\libsrc\emc_v3_01_a\src , а там пустота...

 

В EDK-шном каталоге все заголовники пустые. :(

 

То есть драйвер для этого контроллера не сгенерился. Что мне делать? Мне нужно организовать чтение и запись во внешнюю Micron SDRAM в режиме burst mode.

 

Колупаюсь уже 2 недели, никак не пойму что делать.

 

Помогите, люди добрые!

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


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

Мне всегда казалось, что 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-ку.

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


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

Ну 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. :)

Это совершенно разные интерфейсы и технологии.

 

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


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

Ключевое слово здесь 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-режиме?

 

Повторюсь, драйвера для этого контроллера я так и не нашел.

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


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

Контроллер для нее EMC.

 

Так вот как же объяснить на языке Си микроблэйзу то, что я хочу почитать/пописать из этой памяти в burst-режиме?

 

Повторюсь, драйвера для этого контроллера я так и не нашел.

У меня была ситуация , когда даже не генерировались драйвера для GPIO. Связано это было с заданием своих значений параметров при создании GPIO. Видимо, не понравилась комбинация значений. Попробуйте взять за основу параметры по умолчанию, генерируйте BSP и берите за основу.

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


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

У меня была ситуация , когда даже не генерировались драйвера для GPIO. Связано это было с заданием своих значений параметров при создании GPIO. Видимо, не понравилась комбинация значений. Попробуйте взять за основу параметры по умолчанию, генерируйте BSP и берите за основу.

 

 

Огромное спасибо за ответ! Завтра на работе с утра попробую и отпишусь сразу же :)

Правда когда я генерил проект для Nexys'а, я ничего не выставлял необычного, кроме кэша процессора(ведь без него низзя бурст организовать, насколько я понимаю?), и установки кэшлинков для этой самой микроновской памяти.

 

С кэшлинками этими так и не разобрался правда, совсем еще новичок в этом деле. Это просто кеширование памяти получается, вот эти IXCL и DXCL? Для чего это кеширование по линии инструкций и данных, не пойму.

 

Еще раз большое спасибо за ответ!

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


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

Нет. Все-таки ничего так и не вышло. Сгенерил в Base System Buildere систему с полностью дефолтными параметрами (жал только кнопку next). Та драйверов для EMC я и не увидел... Может быть подцепить вышеуказанную память к какому-нибудь другому контроллеру?

 

Как быть? Как получить дрова для EMC-контроллера? Или может быть есть альтернативные методы решения данной проблемы?

 

Пока не знаю что делать, попробую использовать flash память, которая также установлена на моем ките (nexys2). Может быть для нее сгенерятся дровки.

 

Об изменениях буду писать в топик.

 

Вобщем-то мне по-прежнему нужно записать и почитать из внешней памяти в режиме burst mode.

 

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

 

Спасибо.

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


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

С флэшкой тоже ничего не получилось. Видимо ксайлинксовцы просто и не писали драйверы на этот контроллер :(

 

Соответственно и в 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, то есть программку для того, чтобы мне в burst режиме записать по заданному диапазону адресов допустим 0XFFFFFFFF мне написать никак не получится?

:(

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


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

У Вас не получится работать с памятью через этот контроллер как-то иначе, чем предусмотрено его разработчиками.

Alex77 совершенно прав.

И никакого драйвера для этого устройства не существует.

Если Вам нужно задействовать какие-то механизмы, которые поддерживает Ваша память, но не поддерживает контроллер EMC, у Вас только 1 выход - написать свой контроллер...

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


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

Дмитрий Мазунин, большое спасибо за ответ!

 

К сожалению на написание своего контроллера у меня совсем нет времени :(

 

Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA.

Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью.

 

Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA?

 

Чтобы была ясна моя задача, она такова: мне нужно максимально быстро выкачать из памяти данные. В идеале, понятное дело, с чатотой шины(то есть как в режиме burst).

 

Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA?

 

Простите мне мое ламерство пожалуйста.

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


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

Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA.

Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью.

 

С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память.

Но, как Вам правильно сказали, поднять скорость общение процессора с памятью выше, чем это заложено разработчиками контроллера, невозможно.

Вы можете лишь, снять с процессора задачи по перекидки данных, чем повысите быстродействие и поднимите в целом производительность.

Сделать это можно с помощью DMA контроллера. Сажать его как отдельный абонент на шине, не рекомендую (opb_central_dma) капризная вещь.

 

Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA?

DMA вещь аппаратная по определению!!!

Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA?

Да правильно, только рекомендую изначально создавать периферийный модуль со своим собственным DMA. Plb_ipif это позволяет.

 

 

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


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

Спасибо!

 

>>DMA вещь аппаратная по определению!!!

 

Да, я это понимаю, только вот в ядре процессора ее нет. Посему я и предположил использование central_dma.

 

 

А в каких контроллерах это можно использовать? В EMC его можно подключить? Просто я, к сожалению, пока что не нашел как это сделать.

 

Просто мой девкит предполагает использование EMC, и как я понимаю альтернативного контроллера для данного чипа памяти нету среди готовых IPядер.

 

 

>>С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память.

 

Спасибо за эту информацию! Теперь для меня стал больше понятен тот проект, который сгенерился в Base System Buildere.

 

 

PS Я использую шину PLB.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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