Jump to content

    

repstosw

Участник
  • Content Count

    109
  • Joined

Everything posted by repstosw


  1. Продам SDK для Allwinner V3s. Написано на C/C++ в стиле BareMetal (без ОС). Что может SDK написано здесь: https://gamedev.ru/flame/forum/?id=252846&page=10&m=5549630#m143 По всем вопросам пишите на repstosw2018 @ gmail.com
  2. актуально цена договорная
  3. Оказывается, что DSP TMS320C6745 (456 МГц) уделал MIPS R4000 (333 МГц), который ставили в игровые приставки Sony PSP. Несмотря на то, что в этой PSP есть "мыло" (аппаратный скейлер с линейным фильтром текстур), софтовое 2D она тянет хуже, чем C6745. Очень сильно не хватает сопроцессора, который бы параллельно логике игры отрисовывал на экран (у C6745 есть PRU для этого).
  4. Использую UART2 только на передачу, без прерываний и DMA. Он работает (по кр. мере на терминалку ПК данные приходят) когда загрузка: с SD-карты или через sunxi-fel. Камни: V3s, A13. У V3s все LDO внешние, а на плате вместо AXP203 стоят отдельные DC/DC. Питания все подаются.
  5. Аналогичная ситуация с USB-OTG на V3s: если грузиться с sunxi-fel, OTG работает, а если грузиться с SD-карты - нет. Сравнивал все регистры, подозрительных отличий не нашёл. Очевидно, дело в недокументированной дряни...
  6. На предыдущем проекте с C6745 как раз была SPI-флеш 8-выводная. Зашивал загрузчик с помощью программатора AVR-dude и какой-то программы. Посекторно пишем просто бинарник частями с нулевого сектора, как уже сказал aaarrr:
  7. Не пробовал. На плате Lichee Zero она не установлена, но подпаять можно. Пока не было необходимости. Отлаживаю через USB, релизы - на SD. Для home or office use идёт.
  8. Приложение грузится в DDR-память самописанным загрузчиком через USB-OTG. Текстуры куба - бинарно зашиты вместе с кодом приложения. Сам загрузчик записывается перед этим с помощью утилиты sunxi-fel. SD-карта не нужна.
  9. Накидал демку с кубиком для V3s. Сделал вначале с помощью TinyGL, но потом разочаровался - не поддерживается режим освещения граней вместе с текстурой: либо текстура без освещения, либо заливка в цвет с освещением. К тому же нет фильтрации текстур. В моём рендерере(не TinyGL!) есть всё: текстуры + фильтрация + освещение. TinyGL пролетает ))) - Полностью софтовый рендерер - Анимация засинхронизирована на кадровую развёртку (60 FPS) - Частота процессора: 1200 МГц - Частота памяти: 456 МГц - Разрешение экрана: 800x480 - Глубина цвета буфера: 16 BPP (RGB 5:6:5) - Размер текстур: 256x256 - Глубина цвета текстур: 24 BPP (RGB 8:8:8) - Освещение: диффузная и спекулятивная составляющие (вторая даёт глянец) - Отсечение невидимых граней
  10. Да, делал. Спустя несколько лет сделал ещё приставки на DSP TMS320C6745, и я понял, что он лучше чем BF532 (наличием Hard Floating Point, второй параллельный порт, поддержка unaligned access и многое другое). Ну а с Allwinner получилось всё ещё лучше! И по этой причине тоже. А медитировать и не требуется. Требуется выбрать файл из списка кнопками вверх/вниз и запустить. После этого дисплей будет не нужен.
  11. Стандартные скорости I2C: 100 и 400 кГц. Ногодрыгом я делаю больше - если все задержки снести, то дисплей также работает. Кадр 101x80 очень быстро рисуется. Основная проблема этого дисплея - плохая цветопередача и инертность матрицы. Вот я думаю, для списка имён файлов такой идёт или лучше прикрутить другой? Нужен мини-дисплей. Есть ещё цветной OLED 128x128, но ставить пока его не хочу, так как он жрёт много тока.
  12. Подключил простой дисплей от телефона Soni Ericsson T290i по I2C. (контроллер дисплея UC1682 ) К сожалению пока не удалось разобраться с аппаратным I2C, непонятно почему не идёт - за основу брал этот проект: https://github.com/VeiLiang/BoloRTT/blob/master/bsp/f1c/drivers/drv_i2c.c Подскажите сорцы на раздербан для Allwinner на I2C. Пока сделал "ногодрыг" (bitbanging), дисплей заработал. #define RESET1 PB_DATA_REG|=1<<8; #define RESET0 PB_DATA_REG&=~(1<<8); #define SDA_OUT PB_CFG0_REG|=0x10000000; #define SDA_IN PB_CFG0_REG&=0x0FFFFFFF; #define SDA1 PB_DATA_REG|=1<<7; #define SDA0 PB_DATA_REG&=~(1<<7); #define SCK1 PB_DATA_REG|=1<<6; #define SCK0 PB_DATA_REG&=~(1<<6); #define NOP DelayUS(1); #define pause() DelayUS(10); void i2c_start(void) { SDA_OUT SDA1 SCK1 NOP NOP SDA0 NOP NOP SCK0 } void i2c_stop(void) { SDA_OUT SDA0 SCK1 NOP NOP SDA1 NOP NOP SCK0 } void i2c_out(u8 o) { SDA0 SDA_OUT for(u8 t=0;t<8;t++) { if(o&0x80)SDA1 else SDA0 o<<=1; NOP SCK1 NOP SCK0 } SDA_IN SCK1 NOP SCK0 } void lcd_com(u8 c) { i2c_start(); i2c_out(0x78); i2c_out(c); i2c_stop(); pause(); } void lcd_com2(u8 c1,u8 c2) { i2c_start(); i2c_out(0x78); i2c_out(c1); i2c_out(c2); i2c_stop(); pause(); } void lcd_rect(u8 x,u8 y,u8 w,u8 h) { lcd_com2(0xF4,x); lcd_com2(0xF5,y); lcd_com2(0xF6,x+w-1); lcd_com2(0xF7,y+h-1); } void lcd_address(u8 x,u8 y) { lcd_com(0x00|(x&0xF)); lcd_com(0x10|((x>>4)&7)); lcd_com(0x60|(y&0xF)); lcd_com(0x70|((y>>4)&7)); } void lcd_clear(u8 c) { lcd_rect(0,0,101,80); lcd_address(0,0); i2c_start(); i2c_out(0x7A); u16 n=101*80; while(n--)i2c_out(c); i2c_stop(); pause(); } void lcd_init(void) { lcd_com(0x29); //lcd capacitance lcd_com(0xE9); //v bias rate типа контраста 0xE8..0xEB lcd_com2(0x81,0xB8); //vbias potentiometr lcd_com(0x27); //temp comp lcd_com(0x89); //RAM ADDRESS CONTROL: слева направо, сверху-вниз lcd_com(0xAF); //ldc enable lcd_com(0xD1); //COLOR PATTERN: R,G, then B lcd_com(0xD4); //256 colors lcd_com(0xA1); //line rate lcd_com(0xF9); //WINDOW PROGRAM ENABLE lcd_clear(0x00); } void lcd_sprite(u8 x,u8 y,u8 w,u8 h, u8 *s) { u16 n=w*h; lcd_rect(x,y,w,h); lcd_address(x,y); i2c_start(); i2c_out(0x7A); while(n--)i2c_out(*s++); i2c_stop(); pause(); } void main(void) { Peripherals_Init(); RESET0; DelayMS(100); RESET1; DelayMS(100); lcd_init(); DelayMS(1000); lcd_sprite(0,0,101,80,(u8*)BACKGROUND); DelayMS(1000); Seed=AVS_CNT0_REG; for(int i=0;i<3;i++) { lcd_sprite(Random32()%(104-20),Random32()%(80-20),20,20,(u8*)SMILE); DelayMS(1000); } Loop: goto Loop; }
  13. Всё никак не могу мотивировать себя за неё взяться. Подскажите идеи, где можно использовать эту камеру? Какие интересные девайсы можно на ней собрать?
  14. Раздобыл камеру OV2640, которая может выдавать кадр в том числе и в JPEG. Хотел её подключить к плате Lichee Pi Zero, но с ужасом заметил, что CSI перекрывает RGB. Проще говоря, одновременно камеру и дисплей по RGB Не подключишь. Придётся искать либо другой контроллер, либо дисплей использовать по SPI. А тем временем, видеорегистраторы на V3s есть. Вопрос - КАК? Ну не могут же камера и RGB-дисплей одновременно использоваться на одних и тех же портах? Неужели дисплей у видеорегистратора на SPI ?
  15. Не помогло. JPEG декодер не кладёт в выходные буфера ничего. При этом счётчик тактов VE_ядра работает: CEDARV_CYCLES_COUNTER А счётчик слов не увеличивается: CEDARV_RDDATA_COUNTER Регистр состояния никогда не взводит бит готовности: while(1)if( Readl(VE_BASE + VE_MPEG_STATUS) & 3) break; Регистр версии VE читается: version = Readl(VE_BASE + VE_VERSION) >> 16; printf("[VDPAU SUNXI] VE version 0x%04x opened.\n", version); Инит клоков и де-блок SRAM: BUS_SOFT_RST_REG1 &=~1; //VE Reset assert PLL_VE_CTRL_REG|=(1UL<<31)|(1<<24)|(14<<14)|1|(1<<20); //enable VE_PLL 180 MHz while (!(PLL_VE_CTRL_REG&(1<<28)) ); BUS_CLK_GATING_REG1|=1; //Gating Clock for VE VE_CLK_REG=(1UL<<31)|(0<<16); //clock on /N=1 DRAM_CLK_GATING_REG|=1; //VE DCLK GATING SRAM_CTL0_CFG0&=0x80000000; SRAM_CTL0_CFG0|=0x7FFFFFFF; //enable SRAM for VE SRAM_CTL0_CFG1&=0xefffffff; BUS_SOFT_RST_REG1 |=1; //VE Reset de-assert Очевидно, либо в алгоритме декодер что-то изменено, либо ещё какой-нибудь клок-гейт нужен.
  16. Кто может сказать, почему все полевые транзисторы отечественного изготовления, которые мне попадались - КП303 и КП350(со связанными ножками) оказывались нерабочими? В то время как BF245 например, всегда работают?
  17. Хотелось именно в формате олдскула. Китайский не знаю, музыку слушаю. Она у них разная: фольклорная и забугорная. Ещё японцы вещают (на слух китайский от японского отличаю). Ещё бывает, коры мочат в эфире. Хоть и китайский не знаю, но по интонации чувствуется настроение.
  18. Вам очень сильно повезло. В городе, где я провёл детство, не было кружков(радиотехнических). Всё моё детство было проведено в виде скитаний по гаражным кооперативам и лесам. В этом есть своя романтика... Даже сейчас, иногда, хочется вернуться туда и снова походить везде... На обочинах попадалось много телевизоров и приёмников. Но К140УД1А не попадались. Если взять обычный китайский КПЕ и подключить только одну секцию - будет начало КВ. Там очень много китайцев и японцев. Вначале СВ, почти половина диапазона - жуткий треск всё время.