DC-SWAT Forum

Полная версия: GD-Rom
Вы просматриваете yпpощеннyю веpсию форума. Пеpейти к полной веpсии.
Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
О, masyanya! Теперь точно все получится)
(25.03.2013 19:49)masyanya писал(а): [ -> ]Спросить хотел, Maple BUS имеет 4-ре скорости, 1, 2, 4 и 8, кто нить на 8ми MHz пробовал эту шинку юзать?

Привет! Ты все же решил вернуться к тому проекту? Smile
"Data transmission is bi-directional half-duplex, with a maximum transfer rate of 2 Mbps." - эти 2 Mbps и используются везде.
Но, действительно в доке упоминаются еще 4 и 8 Mbps с пометкой Not Used. Интересно, это просто в регистре зарезервированы режимы (например для девкита), но фактически они не поддерживаются на дриме, или их просто не использовали, потому что просто в то время незачем это было.
Как бы то ни было, я почти на 100% уверен что никто не пробовал эти режимы, хотя бы просто потому, что существующие девайсы скорее всего их просто не поддерживают.
Надо будет в KOS попробовать выставить 4 и 8, интересно будет работать хотя бы джой Smile
пока грузится будет от EPCS, но будут прорабатываться варианты загрузки с контроллера.
хотелось бы вообще свести всё к одному контроллеру))). либо с применением смой простой/дешёвой серии MAX II / MAX V.

про STM я не заметил что он лучший (может и ошибаюсь). я смотрю по DigiKey. атмел предлагает немного лучшие чипы по соотношению цена/характеристики.

http://www.digikey.com/product-detail/en...ND/2640799

http://www.digikey.com/product-detail/en...ND/3128668

по Maple, я только успел сделать приёмник в альтере и по усб посмотрел что в него приходит. продолжу может бы ть потом,
но цели у меня такие:
- подключить джой от пс2 или если получиться от хбокса.
- емуляция карты памяти - сохранять сэйвы на SD
(26.03.2013 07:38)SWAT писал(а): [ -> ]
(25.03.2013 19:49)masyanya писал(а): [ -> ]Спросить хотел, Maple BUS имеет 4-ре скорости, 1, 2, 4 и 8, кто нить на 8ми MHz пробовал эту шинку юзать?

Привет! Ты все же решил вернуться к тому проекту? Smile
"Data transmission is bi-directional half-duplex, with a maximum transfer rate of 2 Mbps." - эти 2 Mbps и используются везде.
Но, действительно в доке упоминаются еще 4 и 8 Mbps с пометкой Not Used. Интересно, это просто в регистре зарезервированы режимы (например для девкита), но фактически они не поддерживаются на дриме, или их просто не использовали, потому что просто в то время незачем это было.
Как бы то ни было, я почти на 100% уверен что никто не пробовал эти режимы, хотя бы просто потому, что существующие девайсы скорее всего их просто не поддерживают.
Надо будет в KOS попробовать выставить 4 и 8, интересно будет работать хотя бы джой Smile

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

(26.03.2013 10:28)cybdyn писал(а): [ -> ]пока грузится будет от EPCS, но будут прорабатываться варианты загрузки с контроллера.
хотелось бы вообще свести всё к одному контроллеру))). либо с применением смой простой/дешёвой серии MAX II / MAX V.

про STM я не заметил что он лучший (может и ошибаюсь). я смотрю по DigiKey. атмел предлагает немного лучшие чипы по соотношению цена/характеристики.

http://www.digikey.com/product-detail/en...ND/2640799

http://www.digikey.com/product-detail/en...ND/3128668

по Maple, я только успел сделать приёмник в альтере и по усб посмотрел что в него приходит. продолжу может бы ть потом,
но цели у меня такие:
- подключить джой от пс2 или если получиться от хбокса.
- емуляция карты памяти - сохранять сэйвы на SD

Ну как бэ в атмеле мне ненравяться дорогие отладчики... всё остальное ok.

А дигикей барыги. Smile STM'ка не стоит 9 баксов, 3-4, где-то, 'ээээмммм, ну 6 максимум.
по отладчикам и софту я пока не вкурсе. может действительно в этом слабое место.
я знаю что у народа в наших краях тоже больше на слуху эти STM.

а что за платки ты заказал?
maple насколько я помню через свой канал dma работает.
(28.03.2013 09:45)cybdyn писал(а): [ -> ]по отладчикам и софту я пока не вкурсе. может действительно в этом слабое место.
я знаю что у народа в наших краях тоже больше на слуху эти STM.

а что за платки ты заказал?
maple насколько я помню через свой канал dma работает.

Платки размером 39,24ммx28,57мм, на борту CPLD Pattern Detectors и Shift логика + CORTEX-M3 в общем корка Maple BUS, 8-ми битный интерфейс наружу, мапл и USB наружу, по задумке это конвертер шины Maple в USB, но на нем же можно сделать любой девайс для дрима, например мышь, переходник для джойстиков например денди в дрим или мост для карт памяти SD->Ex Device->Maple BUS. То о чем мы со сватом терли года так 3 назад. В общем эвалюшн борда мелкая для Maple BUS, с примерами реализации устройств и переходников.

В свое время я мышь делал для дрима на атмеле, дык вот там одна существенная деталь была, - кривая реализация интерфейса мапл, то есть если взять с одной стороны и сделать эту реализацию хостом, а с другой девайсом, то такая контрукция понимать друг друга не будет.

P.S.
И кстати, про скорость шины, джой когда отправляет дриму ну хотя бы Device Status, он отправляет его блоками по 16 байт, то есть идут данные, потом хоп, и шина микросекунд так 10 в режиме простоя, потом ещё 16 и так далее... я вначале думал что это у меня лог анализатор Signal Tap глючит, ан нет... С таким подходом действительно скорость передачи маловата будет... вот я про что:

[Изображение: MAPLE_Pause.PNG]
а плата самодельная - в смысле сам придумал/тросировал или покупной дэв-кит? какой там фирмы CPLD?

по мапл: не всё так безнадёжно, я думаю это реализация контроллера в джое и софт драйвер так работают, им просто не зачем часто обмениваться. джои ведь опрашиваются на сколько я знаю по VSYNC прерыванию или чуть быстрее одновременно с формированию фрэйма (FPS).

поскольку maple читает/пишет данные по дма - то можно быстрее/чаще обмениваться блоками данных, но возможно драйвер надо свой писать если не хватит того что есть в системе.
(27.03.2013 21:16)masyanya писал(а): [ -> ]Вот интересно, обращение к шинке мапл переферии подтормаживает проц или нет, если нет, то производительности должно хватить кушать STORAGE через слот джоя. В любом случае я заказал на заводике платки под мучение шины бум пробовать.

Нет, тормозить там особо нечему, DMA разгружает серьезно этот процесс. Там даже по сути регистры то никакие не пишутся, только при инициализации шины (один раз) и запуска DMA передачи (каждый фрейм). При этом DMA там используется один, который сидит на этой шине специально только для этого и напрямую может получать/передавать данные из оперативки. Т.е. не используется связка как допустим в G2 или PVR, где с каждой стороны выступает свой DMA и они отдают данные друг другу, а не напрямую в память.
К слову DMA на G1 тоже может напрямую в оперативку ходить.

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

По поводу таймаута. Вообще фрейм шины, имеет размер в 512 байт и отсылается/принимается он именно этой пачкой на сколько я понял. Но у настроек скорости шины, есть еще один параметр, это как раз таки таймаут, но тот ли это таймаут сказать сложно без проверки. Допустим в KOS заданы такие параметры:

PHP код:
maple_write(MAPLE_SPEEDMAPLE_SPEED_2MBPS MAPLE_SPEED_TIMEOUT(50000)); 

А вообще хэндлер шины весит на VBL, т.е. чекается 50/60 раз в сек. Может при проверке на присутствие данных гоняется 16 байт?
Кстати интересный факт, получается что на 60 Гц видео режимах, все maple девайсы на долю секунды раньше реагируют Smile
ну "Device Status" он как раз и посылается на опрос присутсвия джоя с определённой периодичностью. если устройство чёто ответило , точнее ответило правильно на конткретный пакет по протоколу то дальше уже начинают данные бегать шустрее/чаще, хотя джой не очень хороший пример. от него много данных не возьмёшь и чаще они тоже не нужны))) надо как пример смотреть как данные считываются с карты памяти...

у шины особенность в том что она одна и на приём и на передачу? я не совсем понял : сначала идёт запрос ну пусть эти 16байт. далее что? устройство должно ответить сформировав свой пакет типа "старт патерн - данные - стоп патерн" ? или хост стартует пакет, указывает в нём что данные нужны на чтение и в определённые моменты переводит шину в 3-сост и работатет на приём данных? и уже устройство со своей скоростью выдаёт данные...?

устройство должно ответить в какойто промежуток времени после посланного пакета, может на это и задаётся тайм-айут.
не знаю, наверно большие куски с устройства не кинешь сразу. размер ограничен размером буфера дма, а далее надо какуюто паузу держать или принять пакет который говорит устройству чтобы оно дальше передавало следующие данные.?
(29.03.2013 12:50)cybdyn писал(а): [ -> ]ну "Device Status" он как раз и посылается на опрос присутсвия джоя с определённой периодичностью. если устройство чёто ответило , точнее ответило правильно на конткретный пакет по протоколу то дальше уже начинают данные бегать шустрее/чаще, хотя джой не очень хороший пример. от него много данных не возьмёшь и чаще они тоже не нужны))) надо как пример смотреть как данные считываются с карты памяти...

у шины особенность в том что она одна и на приём и на передачу? я не совсем понял : сначала идёт запрос ну пусть эти 16байт. далее что? устройство должно ответить сформировав свой пакет типа "старт патерн - данные - стоп патерн" ? или хост стартует пакет, указывает в нём что данные нужны на чтение и в определённые моменты переводит шину в 3-сост и работатет на приём данных? и уже устройство со своей скоростью выдаёт данные...?

устройство должно ответить в какойто промежуток времени после посланного пакета, может на это и задаётся тайм-айут.
не знаю, наверно большие куски с устройства не кинешь сразу. размер ограничен размером буфера дма, а далее надо какуюто паузу держать или принять пакет который говорит устройству чтобы оно дальше передавало следующие данные.?
Уууууууууууууууууууууу, в дебри полез...

Я просто показал особенность передачи данных...

А интересно тут самое это то что шинку можно на какое-то время бросать и делать в пакетах дыры, это оч удобно при конвертации интерфейсов.
так косательно этих "дебрей" можешь ответить чтонить? по мне так это обычный вопрос, если знаешь как работает
а дебри если бы про заполнение пакетов пашла речь))) оооо там они понамутили.

так что там за платка будет? какая CPLD/MCU ? это покупная или сам нарисовал?

ооо,.... если на http://ramfactory.com/это ваши поделки то ясно, немного.

допустим, про само устройство понятно cpld + cortex по железу по идее работать будет. но всётаки для отладки надо какойто софт для дрима писать/отлаживать.
и потом чтобы запускать игры надо как и в случае sd мода сначала грузиться с диска или флэш-биоса. но как алтернатива медленому sd моду?
В общем посмотрел еще раз на то как работает это все дело.
Есть DMA буфер, который имеет размер в 16кб, по 1кб на каждое устройство (4 порта, в каждом по 1 основному девайсу + 2 субдевайса, всего 16), с разными буферами на запрос и ответ, т.е. 2*512. Все эти 16кб отсылаются и принимаются пачкой (ну только что данные присутствуют только для подключенных девайсов), т.е. не инициируется передача для каждого девайса, она осуществляется для всех сразу.
Причем я так понял там никто ни кого не ждет, если при очередной передаче данных в ответе что-то было, то тогда и юзаем данные, если девайс еще не ответил (или еще чего), ну и хрен с ним, обрабатываем ответ от следующего.
Так же есть еще интересный момент, передача инициируется только 1 раз, т.е. это одновременный read/write, как бы свап буферов, т.е. DMA обменялась данными с шиной за 1 запрос передачи данных и пока проц обрабатывает ответ, получается что maple уже колбасит следующий запрос. В общем с шиной постарались, она очень мало ресурсов требует от процессора, ну и получается что она асинхронная.
Но я это говорю с точки зрения связи CPU <-> Maple BUS, а как там уже шина распоряжается этими 16кб данных (и на сколько быстро) мне не известно.

Такая архитектура шины хороша для большого количества одновременно подключенной периферии, но это не очень хорошо для устройств, которым нужно быстро и много передать. В таком случае было бы не плохо натравливать DMA на конкретное устройство.
(29.03.2013 15:51)cybdyn писал(а): [ -> ]так косательно этих "дебрей" можешь ответить чтонить? по мне так это обычный вопрос, если знаешь как работает
а дебри если бы про заполнение пакетов пашла речь))) оооо там они понамутили.

так что там за платка будет? какая CPLD/MCU ? это покупная или сам нарисовал?

ооо,.... если на http://ramfactory.com/это ваши поделки то ясно, немного.

допустим, про само устройство понятно cpld + cortex по железу по идее работать будет. но всётаки для отладки надо какойто софт для дрима писать/отлаживать.
и потом чтобы запускать игры надо как и в случае sd мода сначала грузиться с диска или флэш-биоса. но как алтернатива медленому sd моду?

На борту простейшая CPLD MAX3000 серии EPM3032, как то хотелось по дешевле. И STM-ка, отлаживать сам девайс изнутри можно через STM32Discovery. И примеры реализации устройств имеются.

P.S. SWAT, оч информативно, вопрос собстна ещё один, на програмном уровне, я имею ввиду прошивку девайса ну или SUB девайса, ответы формируются согласно типу устройства, для джоя тип 0x00000001, для карты пямяти 0x00000002, для мыши помоему 0x00000400 (точно не помню, не охота лезть в мануал), как нить сие фигурирует при формировании запроса на данные в програмной корке того что запускается на дриме или оно зашито где-то глубоко в железке, эт я к тому что можно сделать как бэ свой тип устройств например 0x01000000, и определять его в дримшеле, шоб без путаницы...
Ничего не зашито в железе. Сначала отправляется запрос deviceinfo на все порты, подключенные девайсы говорят что они из себя представляют (как раз по этому коду) и далее уже цепляются соответствующие драйвера для них. Можно смело делать свои устройства, более того, эти устройства могут быть смешанного типа, т.е. поддерживать сразу несколько типов устройств в одном, как пример можно взять VMU, в ней сразу 3 устройства:

PHP код:
#define MAPLE_FUNC_MEMCARD      0x02000000  /**< \brief Memory card */
#define MAPLE_FUNC_LCD          0x04000000  /**< \brief LCD screen */
#define MAPLE_FUNC_CLOCK        0x08000000  /**< \brief Clock */ 

Ответ устройства на запрос device info выглядит следующим образом:

PHP код:
typedef struct maple_devinfo {
    
uint32  functions;              /**< \brief Function codes supported */
    
uint32  function_data[3];       /**< \brief Additional data per function */
    
uint8   area_code;              /**< \brief Region code */
    
uint8   connector_direction;    /**< \brief ? */
    
char    product_name[30];       /**< \brief Name of device */
    
char    product_license[60];    /**< \brief License statement */
    
uint16  standby_power;          /**< \brief Power consumption (standby) */
    
uint16  max_power;              /**< \brief Power consumption (max) */
maple_devinfo_t
с CPLD и STM контроллером понятно, что отладить можно.ну т.е если вариант поделки переходника. но я как раз про отладку кода для дрима имел ввиду, это в том случае если надо свой драйвер запускать.
код на дрим закидивается штатно только с диска.
как вариант записать/сделать прогу для обмена с компом через USB<->RS232 для загрузки кода.
или вариант с биос модом - и SD картой.
как собираетесь налаживать в этом плане? спрашиваю из интереса так как самому скоро придётся столкнуться)) и ещё помнится myx (молодец!) собрал переходник g2-> ide , но изза отсутсвия связи с софтом так и не довели до ума.
(01.04.2013 10:24)cybdyn писал(а): [ -> ]с CPLD и STM контроллером понятно, что отладить можно.ну т.е если вариант поделки переходника. но я как раз про отладку кода для дрима имел ввиду, это в том случае если надо свой драйвер запускать.
код на дрим закидивается штатно только с диска.
как вариант записать/сделать прогу для обмена с компом через USB<->RS232 для загрузки кода.
или вариант с биос модом - и SD картой.
как собираетесь налаживать в этом плане? спрашиваю из интереса так как самому скоро придётся столкнуться)) и ещё помниться myxмолодец! сделал переходник g2-> ide , но изза отсутсвия связи с софтом так и не довели до ума.

Ну я незнаю о чем тут разговор с твоей стороны, но у нас со СВАТОМ была мысля пользовать ExpansionDevice как носитель. Есть же поддержка параллельного порта в SD карты памяти, вот тут похожее желание, только пользовать не ресурсы проца для подчитывания данных а ресурсы предназначенной для этого шины. Я со стороны железки постараюсь максимально облегчить интеграцию в дримшел, в софтварном же решении остается подправить чтение пакетами вместо софтварного последовательного высасывания данных с SD, правда есть возможность не получить достойную скорость.

P.S.
Цитата:
PHP код:
#define MAPLE_FUNC_MEMCARD      0x02000000  /**< \brief Memory card */
#define MAPLE_FUNC_LCD          0x04000000  /**< \brief LCD screen */
#define MAPLE_FUNC_CLOCK        0x08000000  /**< \brief Clock */ 

Хо хо а я то думал что эт у меня странное решение, все дабл ворды MSB, потому как в доке по мапл баз LSB нарисовано.

PHP код:
/*Device functions*/
#define CONTROLLER        0x01000000        //FT0 : Controller Function
#define STORRAGE        0x02000000        //FT1 : Storage Function
#define LCD            0x04000000        //FT2 : B/W LCD Function
#define TIMER            0x08000000        //FT3 : Timer Function
#define AUDIO_INPUT        0x10000000        //FT4 : Audio input device Function
#define AR_GUN            0x20000000        //FT5 : AR-Gun Function
#define KEYBOARD        0x40000000        //FT6 : Keyboard
#define GUN            0x80000000        //FT7 : Light-Gun Function
#define VIBRATION        0x00010000        //FT8 : Vibration Function
#define MOUSE            0x00020000        //FT9 : Pointing Function
#define EXMEDIA            0x00040000        //FT10 : Exchange Media Function
#define CAMERA            0x00080000        //FT11 : Camera Device Functio 
разговор о наладке/запуске кода для дрима.
про способ "параллельный порт в SD карты" в теории я понимаю как это может быть сделано.но слышу впервые. естькакието наработки или только теория?
в любом случае увидим кода будуте запускать)))
(01.04.2013 12:27)cybdyn писал(а): [ -> ]разговор о наладке/запуске кода для дрима.
про способ "параллельный порт в SD карты" в теории я понимаю как это может быть сделано.но слышу впервые. естькакието наработки или только теория?
в любом случае увидим кода будуте запускать)))

Дык я про вот это:

Китаец там какой-то уже во всю клепает.
то что на картинке это SD мод , который работает через SERIAL (обычно делается в паре с биос модом для того чтобы стартовать дримшел без диска).

в моём понимании ExpansionDevice это там где модем воткнут, а шина называется G2. ты про эту шину имел ввиду когда говорил "параллельный порт в SD карты"?
(01.04.2013 13:25)cybdyn писал(а): [ -> ]то что на картинке это SD мод , который работает через SERIAL (обычно делается в паре с биос модом для того чтобы стартовать дримшел без диска).

в моём понимании ExpansionDevice это там где модем воткнут, а шина называется G2. ты про эту шину имел ввиду когда говорил "параллельный порт в SD карты"?

Я имел ввиду шину MAPLE BUS, эт по которой периферия подключается.
Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
URL ссылки