|
Проблема с блочным чтением и записью по шине PLB, MicroBlaze |
|
|
|
Jan 20 2011, 09:13
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Никак не могу найти драйвер для XPS Multi-CHannel External Memory Controller (XPS MCH EMC). Открываю папкe microblaze_0\libsrc\emc_v3_01_a\src , а там пустота... В EDK-шном каталоге все заголовники пустые.  То есть драйвер для этого контроллера не сгенерился. Что мне делать? Мне нужно организовать чтение и запись во внешнюю Micron SDRAM в режиме burst mode. Колупаюсь уже 2 недели, никак не пойму что делать. Помогите, люди добрые!
|
|
|
|
|
Jan 20 2011, 10:27
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Цитата(Koluchiy @ Jan 20 2011, 13:02)  Мне всегда казалось, что 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-ку.
|
|
|
|
|
Jan 20 2011, 13:20
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Цитата(Bad0512 @ Jan 20 2011, 14:40)  Ключевое слово здесь 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-режиме? Повторюсь, драйвера для этого контроллера я так и не нашел.
|
|
|
|
|
Jan 20 2011, 19:32
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Цитата(mdmitry @ Jan 20 2011, 19:54)  У меня была ситуация , когда даже не генерировались драйвера для GPIO. Связано это было с заданием своих значений параметров при создании GPIO. Видимо, не понравилась комбинация значений. Попробуйте взять за основу параметры по умолчанию, генерируйте BSP и берите за основу. Огромное спасибо за ответ! Завтра на работе с утра попробую и отпишусь сразу же  Правда когда я генерил проект для Nexys'а, я ничего не выставлял необычного, кроме кэша процессора(ведь без него низзя бурст организовать, насколько я понимаю?), и установки кэшлинков для этой самой микроновской памяти. С кэшлинками этими так и не разобрался правда, совсем еще новичок в этом деле. Это просто кеширование памяти получается, вот эти IXCL и DXCL? Для чего это кеширование по линии инструкций и данных, не пойму. Еще раз большое спасибо за ответ!
|
|
|
|
|
Jan 21 2011, 07:56
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Нет. Все-таки ничего так и не вышло. Сгенерил в Base System Buildere систему с полностью дефолтными параметрами (жал только кнопку next). Та драйверов для EMC я и не увидел... Может быть подцепить вышеуказанную память к какому-нибудь другому контроллеру?
Как быть? Как получить дрова для EMC-контроллера? Или может быть есть альтернативные методы решения данной проблемы?
Пока не знаю что делать, попробую использовать flash память, которая также установлена на моем ките (nexys2). Может быть для нее сгенерятся дровки.
Об изменениях буду писать в топик.
Вобщем-то мне по-прежнему нужно записать и почитать из внешней памяти в режиме burst mode.
Если у кого появятся какие-то мысли и желание ими поделиться, буду очень благодарен.
Спасибо.
|
|
|
|
|
Jan 21 2011, 09:12
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
С флэшкой тоже ничего не получилось. Видимо ксайлинксовцы просто и не писали драйверы на этот контроллер  Соответственно и в 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 Как мне на основе этих данных сконфигурить контроллер для блочной передачи и написать простенький цикл блочной записи/чтения? Помогите пожалуйста ламеру, я в программировании чайник чугунный, а задачку надо разрубить
|
|
|
|
|
Jan 21 2011, 10:49
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(powerc @ Jan 21 2011, 12:12)  Как мне на основе этих данных сконфигурить контроллер для блочной передачи и написать простенький цикл блочной записи/чтения? Помогите пожалуйста ламеру, я в программировании чайник чугунный, а задачку надо разрубить  Вам надо разобраться что есть такое "блочная запись/чтение". От этого у Вас и все проблемы. В данном случае блочные пересылки осуществляются полностью АППАРАТНО и ПРОГРАММНОГО управления этим процессом не существует.
|
|
|
|
|
Jan 21 2011, 15:34
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Дмитрий Мазунин, большое спасибо за ответ! К сожалению на написание своего контроллера у меня совсем нет времени  Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA. Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью. Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA? Чтобы была ясна моя задача, она такова: мне нужно максимально быстро выкачать из памяти данные. В идеале, понятное дело, с чатотой шины(то есть как в режиме burst). Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA? Простите мне мое ламерство пожалуйста.
|
|
|
|
|
Jan 22 2011, 13:22
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(powerc @ Jan 21 2011, 19:34)  Тогда выходит такое дело, что мне необходим прямой доступ к памяти DMA. Насколько я понял по даташитам на PowerPC440GP и Microblaze, в из ядрах нету контролеера прямого доступа к памяти, таким образом мне нужно будет, по видимому, посадить на шину PLB контроллер DMA, с помощью которого я смогу считывать из памяти с высокой скоростью. С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память. Но, как Вам правильно сказали, поднять скорость общение процессора с памятью выше, чем это заложено разработчиками контроллера, невозможно. Вы можете лишь, снять с процессора задачи по перекидки данных, чем повысите быстродействие и поднимите в целом производительность. Сделать это можно с помощью DMA контроллера. Сажать его как отдельный абонент на шине, не рекомендую (opb_central_dma) капризная вещь. Цитата Или все-таки microblaze может сам осуществить доступ DMA, без периферийного контроллера DMA? DMA вещь аппаратная по определению!!! Цитата Правильно ли я предполагаю, что если контроллер EMC не даст мне возможности для этого, то я могу воспользоваться DMA? Да правильно, только рекомендую изначально создавать периферийный модуль со своим собственным DMA. Plb_ipif это позволяет.
|
|
|
|
|
Jan 22 2011, 13:46
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Спасибо!
>>DMA вещь аппаратная по определению!!!
Да, я это понимаю, только вот в ядре процессора ее нет. Посему я и предположил использование central_dma.
А в каких контроллерах это можно использовать? В EMC его можно подключить? Просто я, к сожалению, пока что не нашел как это сделать.
Просто мой девкит предполагает использование EMC, и как я понимаю альтернативного контроллера для данного чипа памяти нету среди готовых IPядер.
>>С помощью EMC или MPMC Вы можете отобразить внешнюю память как адресуемое пространство для процессора, использовать как оперативную память.
Спасибо за эту информацию! Теперь для меня стал больше понятен тот проект, который сгенерился в Base System Buildere.
PS Я использую шину PLB.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|