sysel 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба чтоб это понять - нужно иметь другой склад ума, где имеются базовые понятия о растактовках процессора и что можно сделать с периферийниками приставок за определенное число такто эмулируемых процессоров :) Вы ж с блекфинами знакомы всего несколько месяцев, а уже такая распальцовка... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denebopetukius 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Вы ж с блекфинами знакомы всего несколько месяцев, а уже такая распальцовка... я не про себя говорю, а про подход и понимание принципов работы эмуляторов игровых приставок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Я, извиняюсь, не супер-пупер профессор, но всё изложенное Вами прекрасно понял, хоть приставки никогда и не эмулировал :) Ваш трэшэр мне очень понравился! Но зачем вы людям вот так сразу...... мож какую идею бы и подкинули нормальную...а так обидятся и не станут постить в тему... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 2 июля, 2009 Опубликовано 2 июля, 2009 · Жалоба 1) на руках дисплей со встроенным контроллером Давайте конкретизируем - какой дисплей? И ссылку на datasheet, пожалуйста. 2) требуется получить много вариантов экзотических разрешений: от 160x144 до 320x240 Без проблем. От 1х1 до 65535х65635 с шагом в один пиксель по любой оси. 3) не хочу тратить ресурсы на развертку кадра.... Не понял. Какая развертка? dma запустили и занимайтесь другими делами. 4) частота обновления дисплея должна быть 60 Hz Не вижу проблемы. делал сразу 4 прорисовки без палитры в буфер - намного медленее. Нет, вы меня не поняли. Делайте прорисовку в буфер как и сейчас, после этого маленьким быстрым циклом преобразуйте это буфер в rgb, и, с помощью dma, отправляете его на дисплей (а в это время начинаете прорисовку следующего кадра). Т.е., условно, цикл прорисовки выглядит следующим образом: while (true) { draw_frame(); // draw_sprite0(); draw_plane0(); и т.д. convert_frame_to_rgb(); if (!first_frame) wait_for_output_done(); start_frame_output_via_dma(); } Я, извиняюсь, не супер-пупер профессор ....... Но зачем вы людям вот так сразу...... мож какую идею бы и подкинули нормальную...а так обидятся и не станут постить в тему... +100 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denebopetukius 0 4 июля, 2009 Опубликовано 4 июля, 2009 (изменено) · Жалоба vik0: > Нет, вы меня не поняли. Делайте прорисовку в буфер как и сейчас, после этого маленьким быстрым циклом > преобразуйте это буфер в rgb, и, с помощью dma, отправляете его на дисплей > (а в это время начинаете прорисовку следующего кадра). Т.е., условно, цикл прорисовки выглядит следующим образом... Сделал так как вы сказали на DT (BF532) - к сожалению скорость эмулятора не изменилась(измерял). Вот код отрисовки одной строки на дисплей (ширина(width) может принимать значения : 256 или 320): extern unsigned short int DMA_BUFFER[320]; #define LCD_Line \ { \ register unsigned long int i; \ for(i=0;i<Width;i++) DMA_BUFFER=PALETTE[bUFFER[i+0x20]]; \ flush_data_buffer((void*)DMA_BUFFER,(void*)(DMA_BUFFER+(Width<<1)),0); \ *pMDMA_S1_CONFIG=WDSIZE_16|DMAEN; \ *pMDMA_D1_CONFIG=WDSIZE_16|WNR|DMAEN; \ } Остальные регистры проинициализированы 1 раз: *pMDMA_S1_PERIPHERAL_MAP=0x0040; *pMDMA_S1_START_ADDR=(void*)DMA_BUFFER; *pMDMA_S1_X_COUNT=Width; *pMDMA_S1_X_MODIFY=2; *pMDMA_D1_PERIPHERAL_MAP=0x0040; *pMDMA_D1_START_ADDR=(void*)0x20010000; //Адрес LCD *pMDMA_D1_X_COUNT=Width; *pMDMA_D1_X_MODIFY=0; DMA_Buffer - выровнен на 64 байта, находится в SDRAM. Кеши включены, write-back всё это наводит к мысли, что Memory DMA - всего лишь рекламный слоган, как тут сказал один из участников (Stanislav по -моему) при общей шине быстродействие не увеличивается P.S. а кэши не по-децки рулят :) P.P.S. может регистром траффика DMA порулить? может ли он исправить ситуацию (он у меня по дефолту)? Изменено 4 июля, 2009 пользователем denebopetukius Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denebopetukius 0 5 июля, 2009 Опубликовано 5 июля, 2009 · Жалоба дополнительно перевёл SPI на ДМА. сделал точные замеры. прирост в скорости на 4% Видать нагрузка действительно большая, так как дисплей и память делят шину, несмотря на кэши. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться