Внимание! Перед тем как создавать тему на форуме, воспользуйтесь поиском! Пользователь создавший тему, которая уже была, будет немедленно забанен! Читайте правила названия тем. Пользователи создавшие тему с непонятными заголовками, к примеру: "Помогите, Схема, Резистор, Хелп и т.п." также будут заблокированны навсегда. Пользователь создавший тему не по разделу форума будет немедленно забанен! Уважайте форум, и вас также будут уважать!
Тоесть всё упирается только в денежную реетабельность?
Увы нет. Суть в том - чтобы если сделал сам - дай другому повторить. Ну а сам понимаешь, с процом с шарами на пузе народ посмотрит - скажет... дааа, крут чел, и закроет страничку. Так же мысль в том, к примеру, ну куплю я за полтора рубля stm32h7 разведу под него плату за еще полтора рубля, куплю классный дисп + еще рубль..... Да. возможно это будет играть хорошо музыку мало жрать акума позволит погонять в танчики ну и к примеру стримить мжпег. Но увы - это будет единственный прибор в мире, так как тот, кто захочет повторить - прикинет бюджет сходит в магазин и купит ГОТОВЫЙ приборчик.
Я бы собрал портативный девайс, который умеет и игрушки и видео с музыкой крутить. Ну не бга конечно. Но для меня тема актуальна. Покупать китайские поделки не хочется, есть у них интересные модели, но цена сравнима с консолями от Nintendo
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Провёл ревизию среди своих радиодеталей и собрал из них комплект для сборки релиза. Нарисовал недостающие футпринты на детальки, сделал нетлист.
Учитывая нелюбовь большинства к 4-слойным печатным платам, выкладываю протеловский файл с паутинкой: компонуйте как вам угодно, хоть на 1-слойке! Все посадочные места нарисованы и пронумерованы в соответствие с выше выложенной схемой (это вам не Сплан с Лайаутом, тут сквозное проектирование от УГО до ПП
Свой вариант разводки (ПП будет на 4-слойке), выложу когда сделаю. Элементы на схеме, чьи номиналы со звёздочкой - с вероятностью 90% стоять не будут (подтяжки, оставлены на всякий случай).
Я тут тоже схемку мастырю. В принципе готово почти. Будет время вечером - постараюсь выложить свою версию. Осталось пририсовать ответный разъем жк и продумать как сделать зарядку аккума при выключенном плеере. Контроллер как и говорил ранее взял с встроенной 640кб срам.
Вопрос к тс, как критично ведет себя Ваш новый кодек к тактовой частоте процессора. Насколько хватит честных 120 мГц, поможет ли каким то макаром графический сопроцессор в стм ке и дисплей, висящий на фмц? (в новом stm32l4r9 заделали какой то новый graphic MMU) что за зверь - не могу сказать, пока не юзал. Если можно, то напишите реальные цыфры разрешения видоса в соотношении потребление памяти - тактовая частота. (Думаю какой дисп примастырить к плееру, есть 3 кандидата разрешением 80х160 точек , классика 320х240 и 320х480 точек).
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (ведущий специалист @ Mar 2 2018, 06:41 PM)
Вопрос к тс, как критично ведет себя Ваш новый кодек к тактовой частоте процессора. Насколько хватит честных 120 мГц, поможет ли каким то макаром графический сопроцессор в стм ке и дисплей, висящий на фмц? (в новом stm32l4r9 заделали какой то новый graphic MMU) что за зверь - не могу сказать, пока не юзал. Если можно, то напишите реальные цыфры разрешения видоса в соотношении потребление памяти - тактовая частота. (Думаю какой дисп примастырить к плееру, есть 3 кандидата разрешением 80х160 точек , классика 320х240 и 320х480 точек).
Новый это какой? Packman? Если он, то ещё не перенесен на STM32, я ушёл в железные работы, кодинг пока приостановил. В любом случае, так как являюсь его создателем, проблем перенести на контроллер быть не должно.
Откуда взялись "честные 120 МГц", когда в F407 официально разрешена 168 МГц ? На счет граф-ускорителя, я пока ещё не курил l4r9, главное чтоб он открытым был, а не как в Олвиннерах MALI-400, котороенадо бульдозером давить, ибо клозет.
На F407 при 168 МГц MJPEG максимально идет до 24 FPS, H264 до 32 FPS. Это если без звука чисто видео. Разрешение 160x128 2 байта на точку. Для других разрешений высчитывается элементарно.
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (vladlen @ Mar 4 2018, 05:13 PM)
На такой плате возможно будет запустить этот плеер? (просто интересно)
Ещё как можно!
QUOTE
The STM32F767/777 lines offer the performance of the Cortex-M7 core (with double-precision floating point unit) running up to 216 MHz while reaching similar lower static power consumption (Stop mode) versus the STM32F427/429/437/439 lines.
Performance: At 216 MHz fCPU, the STM32F767/777 lines deliver 1082 CoreMark /462 DMIPS performance executing from Flash memory, with 0-wait states thanks to ST’s ART Accelerator. The DSP instructions and the floating point unit enlarge the range of addressable applications. External memory can be used with no performance penalty thanks to the L1 cache (I/D 16 Kbytes + 16 Kbytes).
Graphics: The new LCD-TFT controller interface with dual-layer support takes advantage of the Chrom?ART Accelerator™. This graphics accelerator creates content twice as fast as the core alone. As well as efficient 2-D raw data copy, additional functions are supported by the Chrom-ART Accelerator such as image format conversion or image blending (image mixing with some transparency). As a result, the Chrom-ART Accelerator boosts graphics content creation and saves the processing bandwidth of the MCU core for the rest of the application. In addition the STM32F767/777 lines embed a JPEG hardware accelerator for fast JPEG encoding and decoding off-loading the CPU which remains available for other tasks.
Из плюсов: частота выше, FPU двойной точности, аппаратный JPEG кодек, графический ускоритель, рисующий быстрее, чем ядро.
Из минусов: опять же крайне низкая частота по сравнению с теми же Олвиннерами и Блекфинами. Ну что млять, им мешает сделать частоту хотя бы 1 ГГц? Как сделано в v3s - в QFP корпусе DDR память и ядро.
Ну и про графический ускоритель не совсем понятно - за счет чего достигается удвоенная скорость отрисовки? Ведь тайминги дисплея ограничены, также как и разрядность шины - быстрее чем пропускная способность дисплея - не выплюнуть. Это же и касается l4r9, правда там ещё есть возможность организовать видеопамять для круглого (ахтунг!) дисплея в виде одномерного массива. Ну и DMA2D, который так расхваливает STM в своих контроллерах, уже давным-давно был в Блекфинах несколько десятков лет назад, не пойму, к чему такие бурные аплодисменты???
Ну и разгребать нужно будет, ковыряясь в конюшнях кало-КУБа, потому что под CMSIS или SPLкода я пока не увидел.
Тогда уж лучше вот это насиловать (у меня есть такая плата):
Присоединённое изображение (Нажмите для увеличения)
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
ТС делает упор на работу с видео. Судя по выходу дак проца - звук будет просто для озвучки. Какая нах запись, мне кажется она там и не вперлась.
По поводу процов - давно понятно что ST не старается донести до эмбедда технологии, а заработать как можно бабоса с данного сегмента. Конечно же они могут пихнуть 8 мег оперативки и заделать 2хядерную систему по полтора гигагерца на каждого, но это же будет мягко говоря неинтересно )))). Тенденция ST 20 мегагерц прироста тактовой в год. Ничего нового с такой политикой они не принесут, и как минимум года 2-3 нужно будет для ожидания маленького шедевра. Во мне сейчас их продукция подкупает потреблением и обилием софт поддержки... и всё. В остальном это голимый шлак как по ценам так и по технологиям.
Ну и про графический ускоритель не совсем понятно - за счет чего достигается удвоенная скорость отрисовки?
Не знаю как в 767, но в л4 есть мипи. Видимо на это ориентируется реклама по производительности видео. Опять же изучив вопрос глубже - понял что мипи у стм ок данной серии полноценно выведены по выводам только в бга корпусах, поэтому плюнул на мипи - развел дисп по штатной фмц.
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (ведущий специалист @ Mar 6 2018, 10:07 AM)
По поводу процов - давно понятно что ST не старается донести до эмбедда технологии, а заработать как можно бабоса с данного сегмента. Конечно же они могут пихнуть 8 мег оперативки и заделать 2хядерную систему по полтора гигагерца на каждого, но это же будет мягко говоря неинтересно )))). Тенденция ST 20 мегагерц прироста тактовой в год. Ничего нового с такой политикой они не принесут, и как минимум года 2-3 нужно будет для ожидания маленького шедевра. Во мне сейчас их продукция подкупает потреблением и обилием софт поддержки... и всё. В остальном это голимый шлак как по ценам так и по технологиям.
На китайском форуме из NES-эмулятора выковорял SDK для STM, напиан в стиле "выставлять/сбрасывать биты в регистрах". Предел моих мечтаний
Это SDK стандартизировано от STM или всё-же заслуга китайцев?
Прикладываю сорцы SDK. Очень приятно видеть "чистый поток сознания", а не муть, рожденную кало-КУБами...
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (ведущий специалист @ Mar 6 2018, 10:07 AM)
ТС делает упор на работу с видео. Судя по выходу дак проца - звук будет просто для озвучки. Какая нах запись, мне кажется она там и не вперлась.
Кстати, по поводу звука, появилась идея потягаться с Flac-ом, наподобие как я тягался с MSU и Lagarith. Ну тоесть сделать lossless audio вдовесок к своему Packman-у по lossless video
Тоже попытаться вейвлеты применить к звуку, арифметический кодер и дифференциальное кодирование (просмотреть в различных комбинациях и в разном порядке). Ну и конечно же заточить под разрядность STMовского DAC 12 бит, наподобие какзаточено видео для RGB 6:6:6
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (Gospodin_Riba @ Mar 6 2018, 12:33 PM)
Кстати, по поводу звука, появилась идея потягаться с Flac-ом, наподобие как я тягался с MSU и Lagarith. Ну тоесть сделать lossless audio вдовесок к своему Packman-у по lossless video
Тоже попытаться вейвлеты применить к звуку, арифметический кодер и дифференциальное кодирование (просмотреть в различных комбинациях и в разном порядке). Ну и конечно же заточить под разрядность STMовского DAC 12 бит, наподобие какзаточено видео для RGB 6:6:6
Не, лучше чем FLAC сжатия звука без потерь не бывает Поэтому было решено применить FLAC, но только не к 16-битным семплам, а к 12 битным (для STM DAC).
Flac из PCM 16 бит весил 1 МБ. А если все семплы исходного PCM-потока переделать из 16 в 12 бит, затем пожать Flac, то уже будет 683 кБ. Выигрыш в 1,5 раза. Хотя биты урезали в 1,333 раз.
Собрал FLAC-декодер, сорцы ниже. При декодировании Flac делается ещё увеличение амплитуды в 16 раз - преобразование 12 бит к 16 обратно.
Попробую перенести на STM и посмотреть чё и сколько будет кушать....
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Пока печатная плата в производстве, решил уделить время на свой кодек PakMan. Перенес код на STM32F407.
Жутко тормозил. Пришлось отказаться от арифметического кодера и применить Хаффмана. Пошло быстрее. Произвёл замеры: кодирование Хаффмана в 2 раза быстрее арифметического.
Тем не менее, воспроизведение звука(FLAC) всё ещё лажало, пришлось взяться за оптимизацию.
Оптимизацию провёл 3 способами: 1) Оптимизация алгоритма 2) Применил SIMD-инструкции и DSP-инструкции 3) Задействовал DMA для построчной отрисовки, в то время как считается следующая строка (памяти на кадр не хватило, потому что требуется 3 байта на точку и ещё предыдущий фрейм хранить для восстановления по межкадровой разности)
Итого : вышел отличный симбиоз FLAC + PakMan (Huffman)
НО, по эффективности сжатия кодек проиграл MSU, и сравнялся с Lagarith.
Для примера: сжатие Хаффманом 240 МБ, с арифметическим кодером: 205 МБ.
Ещё были траблы с железом (на макете) - отрисовка через DMA выдавала кадр со смещенными вниз пикселами в столбце. А также очень редко вылазил сбой порядка байт, красный и синий цвета менялись местами. А программно отрисовавыло нормально.
2 дня трахался, прежде чем понял причину глюков. Оказалось, что была наводка на строб чтения (nRD) дисплея. Так как он не используется, я его подтянул на схеме резистром 10 кОм к питанию. Для обезглючивания номинал подтяжки поставил 1 кОм. После замены глюки со строкой и сбоем цвета ушли.
Причем это принципиально лишь когда дисплей переведен в режим 262 тыс цветов(3 байта на точку). В режимах 65 тыс(2 байта на точку) таких глюков нет. Возможно контроллеру дисплея сносило башню, от передач по 3 байта вместо 2-х.
Ну и тактовую SD карты пришлось уменьшить в 1,5 раза. Так как были сбои при чтении больших порций данных (2 файла: FLAC и видео).
Всё что написал в этом посте, касается лишь кодека PakMan. Остальные программы по-прежнему работают.
Это сообщение отредактировал Gospodin_Riba - Mar 13 2018, 11:39 AM
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Пришли платы, так что скоро буду собирать.
В софте изменения: 1) Возвращена максимальная скорость чтения SD карты 2) Найден глюк, связанный с оптимизацицией 4) Нашёл новый FLAC плеер на ARM-ассемблере (Cortex-A7) - адаптировал его под Cortex-M4 (STM32) 5) Оптимизирован декодер PackMan. 6) Улучшено сжатие
Исходники и новая статья будут позже.
Это сообщение отредактировал Gospodin_Riba - Mar 21 2018, 02:36 PM
Присоединённое изображение (Нажмите для увеличения)
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE
С SD непонятно. Тоже сталкивался, когда начинаешь ее часто "аттаковать" она вообще висает в непонятном положении. Как удалось победить?
Я задействовал DMA режим карты. Пришлось разбираться с выравниванием данных, потому что библиотека FatFs иногда подставляет невыровненные указатели (адреса не кратны 4). И карта сама запустилась на 24 МГц CLK с чтением обильного количества данных.
Пробовал High Speed Mode задействовать, но эррата на 407-й подосрала - BYPASS MODE не работает, пришлось делитель PLL_Q уменьшать - эррата разрешает до 75 МГц подымать, у меня получалось кочегарить карту до 52 МГц тактовой CLK, при этом FatFs работала! И совсем необязательно давать карте команду CMD6 на хай-спид, работало и без неё.
Использую micro SD HC 4 GB класс скорости 4, маркировка на карте: C04G TAIWAN.
Для форматирования и записи - программа SDFormatter, есть слухи что стандартными виндовскими средствами запись и форматирование неоптимально по скорости.
QUOTE
В каком формате всетаки идет вывод на экран (888 или 565?) так и не понял.
В PackMan : 666 - это 888 с двумя don't care младшими битами в каждой цветовой компоненте. В остальных прошивках - 565.
QUOTE
Не проще тогда было бы перетащить на платформу кортекс м7 с а7 вроде как поприятнее будет не? У st есть великолепные f76х серия .
Я уже просто пол-года назад приобрёл несколько F407-х для цифрового пейджера на LoRa, и теперь их надо как-то с пользой применить
У них нет MMU, поэтому у всех маньяков запускать ОСи на них нестоИт, поэтому следует ждать "чисто железного подхода" наподобие как в DSP Ti, AD
QUOTE
Конечно да, снимаю шляпу.... озадачить ф407 флак+ неведомый пакман с выдачей на 100% загрузки - чудеса просто творишь....
Там на асме написан код LPC-фильтра, который самый ресурсоёмкий. Надо было сообразить несколько вещей:
1) Что переходы для STM должны быть в Thumb-режиме, а значит программный счетчик кратен 2, а не 4, как в ARM режиме - иными словами правильно сформировать вычисление адреса для перехода на нужный элемент JumpTable:
CODE
; cmp r2, #9 ;check if order is too high for unrolled loops ; addls pc, pc, r2, lsl #2;jump to our unrolled decode loop if it exists
lsl r5,r2,#1 ;Thumb! cmp r2,#9 addls pc,pc,r5
;jumptable
b default ;order too high, go to default routine b exit ;zero order filter isn't possible, exit function b order1 b order2 b order3 b order4 b order5 b order6 b order7 b order8
На первый взгляд, ничего сложного, НО это надо было всё найти и пропустить через себя. Малейшая ошибка - программа виснет или звук идёт с шипением или другими артефактами. С раза наверное 20-го заработало!
static inline unsigned long swap32(unsigned long value) /* result[31..24] = value[ 7.. 0]; result[23..16] = value[15.. 8]; result[15.. 8] = value[23..16]; result[ 7.. 0] = value[31..24]; */ { /* unsigned long hi = swap16(value >> 16); unsigned long lo = swap16(value & 0xffff); return (lo << 16) | hi; */
__asm("REV value,value"); return value; } #endif
потому что битстрим - это серьёзно!
QUOTE
Видал ряд эмбеддеров (японец особо) гонят 407й вплоть до 250 мгц тактовой. Не пробывал? Поможет ли?
Основная задержка на сегодня - это чтение с карты памяти. Я подымал частоту до 240 МГц для версии с Арифметическим кодером, не хватило! Конечно, заиканий звука было меньше, но были! Арифметический кодер затратен по вычислениям и он вместе с чтением SD карты тянет вниз всю систему.
С Хаффманом+ RLE (об этом ниже) - всё превосходно работает на 168 МГц с картой памяти класса скорости 4. А вот с картой у которой класс не обозначен (2ГБ) - работает с редким заиканием.
Может конечно карта с классом 4 - уже древность и я отстал от жизни, но других пока на руках нет. Попутно вопрос - карту какой фирмы лучше взять чтобы задержки причтении были минимальны?
Основная проблема карт - их большое время обработки команды, скорость чтения тут уже играет не решающую роль. Нужна карты с меньшими задержками перед чтением.
Ситуация ещё печальна тем, что в последних SDMicro выпилены команды чтения нескольких блоков сразу (MultiBlock read/write) .
Это сообщение отредактировал Gospodin_Riba - Mar 22 2018, 10:33 AM
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)