Jump to content

    

CLPRU -TI PRUSS C Compiler v.2

7 hours ago, DASM said:

а этот 6745 он для минимальной системы чего требует?

C6745 + кварц 24 МГц (такая частота делает возможной загрузку с UART) + контроллер сброса (использую MAX6390) + два питания (3.3V и 1.3V) = минимум.

Я добавил ещё SPI EEPROM для автономной загрузки и SDRAM на 32 МБ - для своих целей.

 

Quote

У 21489 нутряной озу 600 кБайт, и он при загрузке и еепром заливает в нее прогу.

У C6745 тоже есть внутренние ОЗУ: 32+32+256 кБ, которые можно пустить на кеш 1-го и 2-го уровней - всю или не всю.

Заливать там UART Boot Host'ом (прога от TI) - его возможности очень большие: часть секций может лить во внутреннюю, часть - во внешнюю память.

У БлекФинов такого вроде не было (либо я опять что-то пропустил )))

 

Quote

У меня и внешняя сдрам висит, но пока что до нее даже не доходил.

Для моих применений без SDRAM нельзя - много данных будет: видео-буфера MPEG, ROM-ы эмуляторов и многое другое.

Поэтому в моем случае оптимальный вариант, когда внутренняя память полностью расходуется на L1, L2 кеши.

 

Quote

Заливаете джитагом? Я на покупной чего то жадничаю Ice

Заливаю через UART на 115200, да, медленно, но что поделать...  Скоро загрузчик с SD-карты напишу, будет веселее.

От компа с RS-232 стоит преобразователь лог-уровней MAX3232  и на UART C6745-го.

Индусы делают на своих платах через  FT232 (USB-UART).

 

Quote

светодиода и самописного spi-uart для отладки хватает. 

Тоже начинал отлаживаться со светодиода, тест SDRAM был со светодиодом)

Позже прикрутил LCD, теперь его использую в качестве индикатора при отладке - можно сразу  кучу данных показать.

Правда традиция диктует использовать UART и терминалку для этого, но исторически сложилось так, что дисплей подключил первее и UART-отладка потеряла смысл ))

 

 

По исследованиям C6745 создал целую тему здесь:   http://vrtp.ru/index.php?showtopic=30775&st=0

 

Но там больше на монолог похоже - сам с собой разговариваю!)

 

Драфт-схема отладочной платы на C6745 (резисторы на BOOT-пинах изменены: 1 кОм на +3.3V,  220 Ом на GND.  Номиналы резисторов для LDO на 1.3V - вместо 5,6 кОм надо 240 Ом, а вместо 220 Ом надо 10 Ом. ):

G2KVQKmE92.png

Edited by __inline__

Share this post


Link to post
Share on other sites

Кстати, вот надумалось применение для PRUSS - обработка кнопок джойстика от SEGA MegaDrive (Genesis).  Для 6-кнопочного варианта важно выдержать интервалы между посылками, иначе джойстику сорвёт крышу и часть кнопок будет считываться неправильно.

 

В свое время на ARM9 и BlackFin делал обработчик прерывания по таймеру и опрашивал кнопки. Но... от задержек я не ушёл!

А с PRUSS эта задача становится лёгкой и не мешает основному CPU работать и отвлекаться на задержки.

 

Код для BF532,533 ниже:

Spoiler


volatile u16 Joystick=0xFFF; //11 10 9 8 7 6 5 4 3 2 1 0 => M Z Y X S C B A R L D U

EX_INTERRUPT_HANDLER(Timer0_ISR) //Обработчик прерывания Джойстика
{
 register u32 CBRLDU;
 register u32 SA____;
 register u32 __MXYZ;
 *pTIMER_STATUS=0x0001; //Подтверждение прерывания
 CBRLDU=*pFIO_FLAG_D>>8;
 *pFIO_FLAG_C=0x4000;
 ssync();
 SimpleDelay(180);
 SA____=*pFIO_FLAG_D>>8;
 *pFIO_FLAG_S=0x4000;
 ssync();
 SimpleDelay(180);
 *pFIO_FLAG_C=0x4000;
 ssync();
 SimpleDelay(180);
 *pFIO_FLAG_S=0x4000;
 ssync();
 SimpleDelay(180);
 *pFIO_FLAG_C=0x4000;
 ssync();
 SimpleDelay(180);
 *pFIO_FLAG_S=0x4000;
 ssync();
 SimpleDelay(180);
 __MXYZ=*pFIO_FLAG_D>>8;
 *pFIO_FLAG_C=0x4000;
 ssync();
 Joystick=(CBRLDU&0x0F)|((CBRLDU&0x30)<<1)|(SA____&0x10)|((SA____&0x20)<<2)|((__MXYZ&0x0A)<<8)|((__MXYZ&0x04)<<6)|((__MXYZ&0x01)<<10);
 SimpleDelay(180);
 *pFIO_FLAG_S=0x4000;
 ssync();
}

void Joystick_Prepare(void)
{
 *pSIC_IMASK=0x00000000;
 *pTIMER0_CONFIG=0x0059;                //Count to end of PERIOD, Disable pad in PWM_OUT mode, Use SCLK
 *pTIMER0_PERIOD=2950000;               //SCLK/PERIOD=60Hz
 *pTIMER0_WIDTH=1475000;                //PERIOD/2
 *pTIMER_ENABLE=0x0001;                 //Enable only Timer0
 *pSIC_IAR0=0xFFFFFFFF;
 *pSIC_IAR1=0xFFFFFFFF;
 *pSIC_IAR2=0xFFFFFFF4;                 //Timer0 - ID4
 register_handler(ik_ivg11,Timer0_ISR); //Timer0 - IVG 11
 *pSIC_IMASK=0x00010000;                //Enable Timer0 interrupt
}

 

 

 

Использование джойстика:  https://eax.me/arduino-sega-controller/

 

Так как он КМОП, то и от напряжения 3.3V он тоже работает (проверено не раз)

 

sega-controller-pinout.png

Edited by __inline__

Share this post


Link to post
Share on other sites

а платки все распродали? Я тут у Техаса усилок заказал, у них вроде store работает, по крайней мере оплатить и ждать Fedex удалось, если не прикопаются федексы то можно и чип заказать бы. Правда не знаю зачем мне два. Сабж на вид мощнее 21489 конечно, но как бы и 21489 избыточен. Да и звук у ADSP более аудиофильский теплый ламповый :-D

"STM32 очередной раз курит в сторонке, нервно кусая ногти " правда копая 21489 и ожидая очередной SBC на 8 ядерном Самсунге у меня есть смутное подозрение что страдаю фигней, ибо даже одно ядро того А53 кортекса скорее всего уделает на плав. точке все наши ДСП. А уж 8 и говорить нечего. Причем документация у этого самса достаточно вменяма вроде как

Но с другой стороны гонять звук на проце, на котором будет крутится Линукс или ведроид не улыбает совершенно, железный сопроцессор таки нужен

Сколько у сабжа каналов Sport? у техаса по другому зовется, перефразирую "могу ли я подключить 4 ЦАП и 2 АЦП по i2S одновременно"?

Share this post


Link to post
Share on other sites
1 hour ago, DASM said:

а платки все распродали?

Ещё есть

Quote

Я тут у Техаса усилок заказал, у них вроде store работает, по крайней мере оплатить и ждать Fedex удалось, если не прикопаются федексы то можно и чип заказать бы. Правда не знаю зачем мне два. Сабж на вид мощнее 21489 конечно, но как бы и 21489 избыточен. Да и звук у ADSP более аудиофильский теплый ламповый :-D

Мне не для аудиофилии,  одного канала хватит за глаза, начиная с 12 бит (использую 16).

Quote

"STM32 очередной раз курит в сторонке, нервно кусая ногти " правда копая 21489 и ожидая очередной SBC на 8 ядерном Самсунге у меня есть смутное подозрение что страдаю фигней, ибо даже одно ядро того А53 кортекса скорее всего уделает на плав. точке все наши ДСП. А уж 8 и говорить нечего. Причем документация у этого самса достаточно вменяма вроде как

Если это Cortex-A* , то вменяемой она в принципе быть не может! ))) Уже проходили!  Кто-бы Cortex-M7 сделал бы на пару гигагерц с 64-разрядной шинами данных-адреса?

Quote

Но с другой стороны гонять звук на проце, на котором будет крутится Линукс или ведроид не улыбает совершенно, железный сопроцессор таки нужен

Я о том же! Есть ПК для этого. Молодежи этого не понять - одни пыхтоны с линуксами...

Quote

Сколько у сабжа каналов Sport? у техаса по другому зовется, перефразирую "могу ли я подключить 4 ЦАП и 2 АЦП по i2S одновременно"?

Sport это ж SPI, нет?   В C6745 SPI всего два.  А McASP - тоже два.   В McASP - туча каналов! Ниже подробно.

1.thumb.gif.e83f4752fdb2af58cb56bf87b8e4c31a.gif

 

 

Share this post


Link to post
Share on other sites
On 4/14/2019 at 12:41 PM, __inline__ said:

Кстати, вот надумалось применение для PRUSS - обработка кнопок джойстика от SEGA MegaDrive (Genesis).  Для 6-кнопочного варианта важно выдержать интервалы между посылками, иначе джойстику сорвёт крышу и часть кнопок будет считываться неправильно.

Довёл до ума - джойстик теперь на PRU0.

 

Перенес один из эмуляторов:  https://www.youtube.com/watch?v=kTSq8R1Dnzk

 

game.jpg.25d3ce5704a1440b99545fefe452d906.jpg

Edited by __inline__

Share this post


Link to post
Share on other sites

SEGA,  пришлось использовать PRUSS для отрисовки.

 

Видео - сравнение двух режимов : без PRUSS и с ним: https://www.youtube.com/watch?v=O1g8AbYWrzE

 

Здесь показана максимальная производительность всей системы (CPU+PRUSS), убрана кадровая синхронизация.

Чисто для наглядности https://www.youtube.com/watch?v=1JhDl9Cbn9I

 

Видео работы эмулятора SEGA Megadrive: https://www.youtube.com/watch?v=NY6x8q0-Xjo

 

2.jpg.f40b62a439942f969d5661a94a81bdbf.jpg

 

1.jpg.c9d535751ec8816b90c9902090aef49d.jpg

Edited by __inline__

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now