реклама на сайте
подробности

 
 
9 страниц V  « < 6 7 8 9 >  
Reply to this topicStart new topic
> High Speed USB Cortex M0-M3
sonycman
сообщение Jun 16 2011, 18:25
Сообщение #106


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jun 16 2011, 21:34) *
Можно, они гнутые и не мои. Уже когда-то здесь проскакивали, я только по минимуму что-то причесывал на предмет производительности.

Спасибо.
А можно пример использования? Для сжатия картинки?

ЗЫ: "гнутые" - имеется ввиду GCC? А под ИАР долго затачивать, интересно?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 16 2011, 21:12
Сообщение #107


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Jun 16 2011, 22:25) *
А можно пример использования? Для сжатия картинки?

Да там просто все - вызвать encode(), указав откуда, куда, в каком формате и какого размера. С decode() аналогично.

Цитата(sonycman @ Jun 16 2011, 22:25) *
ЗЫ: "гнутые" - имеется ввиду GCC? А под ИАР долго затачивать, интересно?

Пардон, хотел сказать GPL'ные. Обычный plain C, без каких-либо специфических фишек, даже не 99.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 17 2011, 01:47
Сообщение #108


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jun 17 2011, 01:12) *
Да там просто все - вызвать encode(), указав откуда, куда, в каком формате и какого размера. С decode() аналогично.

Это вот такие поддерживаются форматы на входе?
Код
#define  FOUR_ZERO_ZERO 0    // Grey scale Y00 ...
#define  FOUR_TWO_ZERO 1    //Y00 Y01 Y10 Y11 Cb Cr
#define  FOUR_TWO_TWO 2        //Y00 Cb Y01 Cr
#define  FOUR_FOUR_FOUR 3    //Y00 Cb Cr Y01 Cb Cr

Ну вот в каком формате, например, должна быть исходная картинка для функции: rgb24trPyuv420?
Что значит Y00 Y01 Y10 Y11 Cb Cr?

Тут понятно только, что 24 бита на пиксель, а дальше все эти Yxx... sad.gif

Я бы понял, к примеру, такое описание: 24 бита на пиксель, сначала идёт красный (R, 8 бит), затем зелёный (G, 8 бит) и голубой (B, 8 бит).

зы: а, наверное, там задаётся как входной, так и аыходной формат?
Тогда всё понятно.
Можно попробовать взять маленькую фотку размером, скажем, 150х150 пикселей в RGB24 и...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 17 2011, 07:32
Сообщение #109


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Jun 17 2011, 05:47) *
Ну вот в каком формате, например, должна быть исходная картинка для функции: rgb24trPyuv420?

RGB24. Где что по компонентам - не помню, но вариантов всего два.

Цитата(sonycman @ Jun 17 2011, 05:47) *
Что значит Y00 Y01 Y10 Y11 Cb Cr?

Y - яркостная составляющая, Cx - цветоразностные.

Цитата(sonycman @ Jun 17 2011, 05:47) *
Можно попробовать взять маленькую фотку размером, скажем, 150х150 пикселей в RGB24 и...

Пример:
Код
int encode_img(int quality)
{
    initLut();
    if(quality <= 0) quality = 1;
    if(quality > 100) quality = 100;
    if(quality < 50) quality = 5000 / quality;
    else quality = 200 - quality * 2;
    quality = ((long)quality << 10) / 100L;

    return encode_image(image, jpeg, quality, rgb24trPyuv422, 150, 150);
}

Вернет длину получившегося jpg.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 17 2011, 07:48
Сообщение #110


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jun 17 2011, 11:32) *
Пример:
[code]int encode_img(int quality)
{
initLut();
if(quality <= 0) quality = 1;
if(quality > 100) quality = 100;
if(quality < 50) quality = 5000 / quality;
else quality = 200 - quality * 2;
quality = ((long)quality << 10) / 100L;

Спасибо, всё понял, кроме параметра quality из Вашего примера. Думал, что это целое число в диапазоне от 1 до 100, но в примере получаются огромные цифры вплоть до 51000...
Это нормально?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 17 2011, 08:15
Сообщение #111


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Jun 17 2011, 11:48) *
Это нормально?

Нормально. Это как раз приведение диапазона 1..100 к тому, который требует на входе энкодер. Почему именно так - не помню, хоть убейте.
Go to the top of the page
 
+Quote Post
brag
сообщение Jun 17 2011, 21:53
Сообщение #112


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Цитата(AHTOXA @ Jun 16 2011, 18:13) *
Может у вас с частотой чего не того? Что-то совсем грустно получаетсяsm.gif

с клоком все ок. почему так мало я уже писал.

Провел тест на mp3 декодере (от helix). В цикле 10 раз декодировал mp3-файл.
Библиотечные функции не использовались. inline assembler в декодере не использовался (только intrinsics).
Код на 3х компиллерах одинаков

gcc -Werror -Wall -Wextra -mcpu=cortex-m3 -mthumb -O3 -fomit-frame-pointer -ffreestanding -fno-common -fwide-exec-charset=UTF-16LE -fshort-wchar -g
39 сек
общий размер кода 196907

armcc --thumb -O3 -Otime --cpu=Cortex-M3 --bss_threshold=0 --c99 --strict --wchar16 --diag_error=Warning
39 сек
общий размер кода 181675

iccarm -thumb --cpu Cortex-M3 --aapcs std --aeabi -Ohs -r -e
44 сек
общий размер кода 166795

самый красивый код судя по бегло просмотренным листингам инересных функций у RVCT.
на размер кода особо не смотрите, линкеры rvct и iar повырезали некоторые неиспользуемые функции (mp3 это не касается)
Стек GCC жрет больше, чем rvct. Скажем вся самая большая ветка от main к самой глубокой функции у gcc 650 байт, у rvct 624 байт. IAR прочесать не смог, какой-то не стандартный у него elf или я что-то протупил

исходник,бинарки и пример использования (main.c) прилагаю.
Если будете собирать - на всякие непонятные вам функции (типа svcCreateThread) забейте(убейте), интересно только то, что в цикле.
Код пахал под моей осью, но системный таймер остановлен, других тредов не запущено,прерывания никакие не дергаются, тобышь весь алгоритм выполнялся линейно
Будет возможность, проверьте плиз на NXP, или я позже проверю
Прикрепленные файлы
Прикрепленный файл  mp3benchmark.7z ( 674.86 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 18 2011, 14:34
Сообщение #113


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jun 16 2011, 18:39) *
JPEG в качестве теста пробовал. На МК без внешней памяти исходную картинку кладем во флеш, результат в RAM. Сотен килобайт не нужно, достаточно пары десятков.

Блин, с энкодером облом вышел, функции преобразования цвета подобные rgb24trPyuv422 перезаписывают исходную картинку, то есть если она лежит во флеш сразу получаем исключение sad.gif
И так с трудом влез в 20к оперативки STM32f103RBT6, а теперь ещё такое sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 18 2011, 14:39
Сообщение #114


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Преобразуйте картинку заранее на PC.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 18 2011, 18:59
Сообщение #115


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(brag @ Jun 18 2011, 01:53) *
Будет возможность, проверьте плиз на NXP, или я позже проверю

LPC1768, 100 MHz, IAR 6.20.3, High Optimization, Speed: 28,5 секунд, 311 фреймов * 10 циклов.
Размер кода ~ 158022 байта.
Go to the top of the page
 
+Quote Post
pofikus
сообщение Jul 15 2011, 18:10
Сообщение #116


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 8-12-10
Пользователь №: 61 494



свершилось...... LPC1830-LPC1850 уже в продаже sm.gif
http://search.digikey.com/scripts/DkSearch...ame=568-6683-ND
http://search.digikey.com/scripts/DkSearch...ame=568-6682-ND

Сообщение отредактировал pofikus - Jul 15 2011, 18:11
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 15 2011, 18:15
Сообщение #117


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (brag @ Jun 17 2011, 23:53) *
IAR прочесать не смог, какой-то не стандартный у него elf или я что-то протупил

Да, для не PRO версий они его уродуют sad.gif. Для PRO, все совместимо.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 15 2011, 21:57
Сообщение #118


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(brag @ Jun 17 2011, 23:53) *
с клоком все ок. почему так мало я уже писал.

Провел тест на mp3 декодере (от helix). В цикле 10 раз декодировал mp3-файл.
Библиотечные функции не использовались. inline assembler в декодере не использовался (только intrinsics).


А вот кстати, в посте где-то на две страницы ранее увидел, что, якобы декодирование MP3 320kbps занимает на NXP 30%, SAM3U 50%, а STM32F - 100%.
Хотелось бы стросить sonycman, проценты относительно к чему? То есть, как понимать, скажем, 100% загрузки?

Я сделал тут WAV/MP3 плейер на SAM3U (96MHz) и померял осциллографом, сколько надо на декодирование одного фрейма MP3 320kbps (то есть, один вызов MP3Decode). Получалось от 9 до 11.5мс (чем "басее" звук, тем дольше). Как известно, результат вылетает в DAC за 26мс. То есть, с этой точки зрения загрузка менее 50% (проц. мог бы декодировать два полных фрейма, пока один проигрывается). Неужели STM32F нужно полные 26мс, чтобы сделать то же самое?!

Сообщение отредактировал KnightIgor - Jul 15 2011, 21:58
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 16 2011, 01:51
Сообщение #119


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(KnightIgor @ Jul 16 2011, 01:57) *
А вот кстати, в посте где-то на две страницы ранее увидел, что, якобы декодирование MP3 320kbps занимает на NXP 30%, SAM3U 50%, а STM32F - 100%.
Хотелось бы стросить sonycman, проценты относительно к чему? То есть, как понимать, скажем, 100% загрузки?

Я приводил обобщённые данные загрузки для 320 kbps MP3, то, что видел на форумах.
100% для STM32 получилось со слов некоторых форумчан, сказали, что есть подтормаживания. Это говорит о 100% загрузке процессора.

Но сам на практике STM32 в роли декодера не испытывал.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 16 2011, 12:13
Сообщение #120


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(sonycman @ Jul 16 2011, 03:51) *
Я приводил обобщённые данные загрузки для 320 kbps MP3, то, что видел на форумах.
100% для STM32 получилось со слов некоторых форумчан, сказали, что есть подтормаживания. Это говорит о 100% загрузке процессора.
Но сам на практике STM32 в роли декодера не испытывал.


Предполагаю, что тот, кто писал о подтормаживании, что-то неправильно в программе сделал.
Перекину проект на STM32F103RC, расскажу. Пусть не в тему тут. Хотя упомянутый мной SAM3U4E на SAM3U-EDK я взял, чтобы разобраться как раз с HS USB.
Go to the top of the page
 
+Quote Post

9 страниц V  « < 6 7 8 9 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 08:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016