Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

RTL00 MP3 player

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем pvvx, 13 окт 2016.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Дело привычки и к проекту не относится.
    Предлагаете стереть совсем make файлы на git?
    Обычно их не дают вообще...
    У кого-то стоит UDK для ESP8266, у кого msys для ESP-32S... У вас cygwin, у других Ubuntu и т.д.
    И если предлагаете cygwin - то и готовый майк прикладывайте. Мелкие коменты, что какая-то команда не пашет у вас с текущим make не интересуют. На это тут принято говорить - у вас Arduino не той версии :)
     
    Последнее редактирование: 27 июн 2017
  2. nikolz

    nikolz Гуру

    Сообщения:
    4.002
    Симпатии:
    427
    Нашел ответ, почему cygvin хуже:
    Несмотря на то, что можно использовать Windows API, с помощью Cygwin, вы все еще привязаны к Cygwin DLL с его лицензией GPL, что ограничивает распространение программного обеспечения, скомпилированные с ним. MinGW не накладывает таких ограничений на распространение программного обеспечения. MSVC так же создает зависимость от среды выполнения Microsoft, которая является большим, тяжелым и не распространяемым.

    Сам Cygwin использует MinGW для компиляции Cygwin DLL, которые, очевидно, не может зависеть от Cygwin. Поэтому без MinGW, Cygwin должна быть составлена с несвободным компилятором.

    Кроме того, приложения работают быстрее без POSIX-эмуляции накладных расходов, а в некоторых случаях, внедряющих Cygwin DLL в существующее приложение может вызвать конфликты с родными функциями одного и того же имени, что может вызвать приложение, чтобы стать нестабильной. Поэтому составление расширений приложений, компоненты и библиотеки DLL с MinGW могут быть безопаснее, чем использование Cygwin.

    Из всех составителей / C ++, которые могут построить Open Source на Windows, C, MinGW является единственным реальным выбором для платформы в это время. В сочетании с MSYS, это единственная система, которая может обрабатывать GNU стиль строительных инструментов для того, чтобы получить более общие приложения Open Source для компиляции и сборки.
     
    Seeker нравится это.
  3. aloika

    aloika Активный участник сообщества

    Сообщения:
    367
    Симпатии:
    25
    Попытался соединить два проекта от pvvx в единого франкенштейна - сделать MP3 радио с web-мордой. Наивно пробовал на RTL00, т.е. на RTL8710. В конечном итоге всё собралось и прошилось нормально. "Заработало" только в варианте "моно", wi-fi только в режиме станции, но всё равно странички не открываются - веб-сервер пишет, что не хватает heap. Если вай-фай переключить в ap+sta, то тред плеера отключается по этой же причине.

    Интересно, заработает ли это дело на RTL8711AM?
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Для полноценной работы web-сервера с LwIP необходимо от 200 КБ свободной RAM (не учитывая статические буфера для WiFi и прочие занятые объемы самой SDK). Иначе надо вводить ограничения по кол-ву одновременно открытых соединений и файлов, что приведет к ошибкам в браузерах, если их корректно не описать - отдавать спец ответы...
    Если правильно распределите буфера DMA для i2s и кода частей декодера MP3 в область SRAM, а сетевые буфера в SDRAM. Иначе не хватает пропускной способности SDRAM, внутренних шин Cortex M3 для вывода в два канала по i2s на максимуме полосы для эмуляции PWM 192 кГц по DMA с одновременной работой декодека и прочих буферов.
    Зачем данной реализации проигрывателя вообще web? Одного открытого сокета достаточно для управления списком проигрывания станций с телефона, а с внешнего MCU достаточно и UART. Прикрутите к этому проигрывателю малый TFT в rtlDuino и пару кнопок... Это влезет и в модуль RTL-00 и копаться в SDK даже не надо, для поиграться - хватит стандартных примеров в rtlDuino...
     
    Последнее редактирование: 24 дек 2017
  5. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    RTL00.
    Скомпилированный тестовый вариант в консоль говорит так:

    Код (Text):
    1.  
    2. MP3: Connect url: icecast.omroep.nl/3fm-sb-mp3:80
    3. FIFO: Alloc 16384 bytes at 0x100568b8
    4. MP3: Connecting to server 145.58.53.158...
    5. HTTP/1.0 200 OK
    6. Content-Type: audio/mpeg
    7. Date: Sun, 18 Feb 2018 17:02:50 GMT
    8. icy-br:96
    9. ice-audio-info: samplerate=48000;channels=2;bitrate=96
    10. icy-br:96
    11. icy-genre:pop
    12. icy-metadata:1
    13. icy-name:NPO 3FM
    14. icy-pub:0
    15. icy-url:MUSIC STARTS HERE
    16. Server: Icecast 2.4.0-kh8
    17. Cache-Control: no-cache, no-store
    18. Access-Control-Allow-Origin: *
    19. Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
    20. Access-Control-Allow-Methods: GET, OPTIONS, HEAD
    21. Connection: Close
    22. Expires: Mon, 26 Jul 1997 05:00:00 GMT
    23. FIFO: Start Buffer fill 8232
    24. [I2S  Wrn]I2S0 Pin may conflict with JTAG
    25. I2S0: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
    26. I2S1: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
    27. MAD: Alloc 15546 bytes at 0x10060e10
    28. MAD: Decoder start.
    29. MAD: Dec err 0x0235 (bad main_data_begin pointer)
    30. MAD: Dec err 0x0235 (bad main_data_begin pointer)
    31. MAD: Rate 48000, channels 2
    32. I2S: Set Sample Rate 96000 (x1)
    33.  
    Dec err 0x0235, воспроизведение, естественно, не начинается.
    Смущает такой порядок:
    Код (Text):
    1. Connection: Close
    2. [I2S  Wrn]I2S0 Pin may conflict with JTAG
    3. MAD: Decoder start.
    4. MAD: Dec err 0x0235 (bad main_data_begin pointer)
    Т.е. соединение закрывается раньше, чем декодер его подхватывает?
    Что не так? (компилирую гит-овский пример, без изменений)
     
    Последнее редактирование: 18 фев 2018
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Никто не закрывается. Это просто информация о том что в текущий момент:
    MP3: Connection closed.
    FIFO: Closed.

    Затем идет: MP3: Connect url: icecast.omroep.nl/3fm-sb-mp3:80
    Лечить декодек не собираюсь. На стандартных MP3 он как-то пашет. Далее покупайте лицензию на MP3 и вперед...

    Вот проверил, написав батник:
    Код (Text):
    1. git clone git@github.com:pvvx/RTL00MP3.git
    2. cd RTL00MP3
    3. set FLASHER_TYPE=cmsis-dap
    4. mingw32-make.exe -s -j 32
    5. mingw32-make.exe -s flashburn
    Залилось в плату Creator Pro от RAK и играет...
    Установки соединения WiFi в модуле уже были...
    ---------------
    Написал вывод звука по DMA на RTL8710BN в PWM выходы... Позволяют выдавать DSD в 40 МГц :)
    А дальше вот стыковать это всё лень... Не нужен мне проигрыватель MP3 инет-радио.
     
    Последнее редактирование: 18 фев 2018
  7. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    Так я даже не сомневаюсь :)
    Скиньте полученный ram_all.bin , пожалуйста. Начну с простого - проверю, играет ли у меня готовый вариант.

    Ваш подход понятен :)
    Squeeze player на RTL, кроме Вас вряд ли кто-то сможет поднять, а для осознанного копания в слабоописанном железе нужен либо огромный опыт, либо терпеливый наставник. Но в текущих реалиях - это два ненавидящих друг друга индивидума :)
    Куда обращаться для ввинчивания РАССОРТИРОВАННОЙ информации? Если не будет тех, кому интересно передавать опыт здесь - все головы разбегутся в китай, а оттуда будут нам продавать свои творения. Так к одноразовым штамповкам окончательно и перейдем.
     
    Последнее редактирование: 18 фев 2018
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Ещё есть пример в rtlDuino :) Но я туда давно не лазал и не обновлял.
    Для RTL00 частота в 166 MHz не всегда годится (разные пересчеты внутренних CLK там), а прошивка с опцией 166 МГц для модулей с более толстыми CPU. И вообще там всё криво и косо, т.к. это пример на "скорую руку" - целью была проверка потянет или нет, ответ получен и никакого дальнейшего сопровождения проект MP3 не предусматривает. Жду героев желающих заняться ублажением потребителей - отдам всё :)
     

    Вложения:

    • ram_all.zip
      Размер файла:
      213,3 КБ
      Просмотров:
      3
    Последнее редактирование: 18 фев 2018
  9. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    Последнюю часть процитированного я понимаю :)
    Сейчас залил Ваш .bin, из-под винды, вашим-же флешером и результат не изменился :)
    Код (Text):
    1. MAD: Decoder start.
    2. MAD: Dec err 0x0235 (bad main_data_begin pointer)
    Т.е. это говорит о том, что бяка есть в другой части памяти, которая как-то затрагивается дополнительно.
    У меня модуль RTL00 на платке с ch340 и разноцветным светодиодиком, т.е. самая распространенная. Бэкап фуллфлеша и калибровок есть. Очищал весь мегабайт и перезаливал заново туда-сюда. Результат всегда одинаковый - не играет. Т.е. вкрадывается впечатление, что версия ROM другая, и чего-то там по-другому устроено...
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Перепишите 9-й и 10-й сектор установок.
    ----
    Достал макетку с RTL00 и FT2232 (2xCOM), воткнул в разъем оригинальный J-link.
    Запустил JLink-RunRAM.bat.
    Код (Text):
    1.  
    2. ===== Enter SRAM-Boot 1 ====
    3. CPU CLK: 83333333 Hz, SOC FUNC EN: 0x20011113
    4. Img Sign: RTKWin, Go @ 0x10006085
    5. ===== Enter Image: MP3 Stereo ====
    6. WdgPeriod = 10000 ms
    7. CLK CPU         83333333 Hz
    8. RAM heap        117672 bytes
    9. TCM heap        64768 bytes
    10. RTL8195A[Driver]: port switch - port0(wlan2), port1(wlan1)
    11. SoftAP ip: 192.168.4.1
    12. MP3: Connect url: icecast.omroep.nl/3fm-sb-mp3:80
    13. FIFO: Alloc 16384 bytes at 0x10057920
    14. RTL8195A[Driver]: set ssid [---del----------
    15. RTL8195A[Driver]: start auth to ---del-----------
    16. RTL8195A[Driver]: auth success, start assoc
    17. RTL8195A[Driver]: association success(res=3)
    18. RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
    19. RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
    20. Station ip: 192.168.1.122
    21. MP3: Connection closed.
    22. FIFO: Closed.
    23. MP3: Connect url: icecast.omroep.nl/3fm-sb-mp3:80
    24. FIFO: Alloc 16384 bytes at 0x10057920
    25. [HEAP Wrn]tcm_alloc(4104) - freeSpace(816)!
    26. MP3: Connecting to server 145.58.53.156...
    27. HTTP/1.0 200 OK
    28. Content-Type: audio/mpeg
    29. Date: Sun, 18 Feb 2018 20:58:53 GMT
    30. icy-br:96
    31. ice-audio-info: samplerate=48000;channels=2;bitrate=96
    32. icy-br:96
    33. icy-genre:Pop
    34. icy-metadata:1
    35. icy-name:NPO 3FM
    36. icy-pub:0
    37. icy-url:http://www.3fm.nl
    38. Server: Icecast 2.4.0-kh8
    39. Cache-Control: no-cache, no-store
    40. Access-Control-Allow-Origin: *
    41. Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
    42. Access-Control-Allow-Methods: GET, OPTIONS, HEAD
    43. Connection: Close
    44. Expires: Mon, 26 Jul 1997 05:00:00 GMT
    45. FIFO: Start Buffer fill 8232
    46. [HEAP Wrn]tcm_alloc(8408) - freeSpace(6208)!
    47. [I2S  Wrn]I2S0 Pin may conflict with JTAG
    48. I2S0: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
    49. I2S1: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
    50. MAD: Alloc 15546 bytes at 0x10065160
    51. MAD: Decoder start.
    52. MAD: Dec err 0x0235 (bad main_data_begin pointer)
    53. MAD: Rate 48000, channels 2
    54. I2S: Set Sample Rate 96000 (x1)
    Поет и пляшет.

    Может у вас там БП не тянет средние 75 мА 3.3В при MP3 в WiFi=STA ? :)
     
    Последнее редактирование: 19 фев 2018
  11. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    Точно?
    Тогда по подключению - на гите GC2 и GE2 через килоомники на спикер. Все верно?

    p.s. не верно :) Нужен еще какой-никакой усилитель.
    Только ножками с килоомниками, оказывается, еле заметно что-то там играет. Тогда вопрос снимаю. Играет, только очень тихо, т.е. мелкодинамик не осилит, если использовать по указанной схеме.
     
    Последнее редактирование: 19 фев 2018
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Для теста я втыкаю прямо к GPIO проводом на вход в разъем на мамке указав что это "линейный вход" :)
    Но без резисторов там перебор уровня сигнала на обычных "sound", но "играет" :)
    Конденсатор не нужен - у Sound всё встроено - свой входной фильтр обязан быть...
    Ну а как на динамики то играть с GPIO? :eek:
    На наушники от телефона работает прямо с GPIO, хотя они и 32 Ом :)
     
    Последнее редактирование: 19 фев 2018
  13. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    АЦП и wifi успеют выпихнуть входящий аналоговый сигнал в DSD (40MHz) через WiFi?
    На сколько ориентировочно загрузится (перегрузится :) ) 8710B при таком варианте? И что при этом будет с потреблением?
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Не потянет WiFi такой поток. Это 40 Мбит.
     
  15. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    В 8710BN вроде бы 150Мбит (при 40 полосе), и 75 при 20. С учетом накладных по идее даже в узкую пролезает. Или как?
     
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    150 - это скорость PHY WiFi части. Совсем не к теме битовой скорости отправляемых и получаемых данных.
    TCP в пределе на RTL в ~1.6 Мегабайт в сек. UDP чуть более. Но постоянно то как, если в сети есть другие устройства?
    На многоантенках народ жалуется что телек только в пару метров при WiFi 5ГГц кажет что-то более менее из сжатого видео, а его битрейт то меньше...
    Официальная заява такая:
    Снимок106.gif
     
    Последнее редактирование: 20 фев 2018
  17. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    В UDP там накладных минимум, т.е. практически к теме битовой скорости.
    Понятно где горлышко :)
    Яблоко на узкой полосе в 2.4 прокачивает 100-ню мбит/с полезного битрейта.
    Но про BN понял. Тогда задача с прикладной точки зрения интересная была у Вас :)
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Ну любой современный low-end роутер WiFi ныне 350 mbit. Что-то фигово у вас с яблоками - откусано на понты много? :)
    Там не накладных, а потерь много. TCP - это дуплекс трафик, UDP - в одну сторону. Пока переключится прием/передача с одной антенной то... Вот в TCP переключений больше и ещё TCP стек...
     
    Последнее редактирование: 20 фев 2018
  19. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    Ну там же 20Mhz - откуда 350Mbit - ? :) За понты там откушено относительно немного + хорошая оптимизация производственных процессов :) С сетевым стеком стабильней unix-а никто не работает :) Дык что - когда начинали, начинали с подобного Вам подхода - выдавить из железки максимум и заставить ее работать круглосуточно без внешнего вмешательства. До 15-го года по накатанной это еще как-то дотянулось. Сейчас "ардуинщики" многое портят, а былые профи решают прикладные задачи, интересные для их собственного эго. :)

    Зачем каналу АЦП->DSD->WiFI Дуплекс? :) TCP/UDP по потребности, но дуплекс в однонаправленном канале...
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Вы ответ сами написали в начальной части своего сообщения.
    UDP уж очень сильно выпадает на WiFi. И тем более WiFi без разницы UDP или TCP. Там свой транспортный протокол - 802.11...
    Разница есть в кол-ве антенн. Есть WiFi-SoC с 1.5 антенны :) Одна на передачу, вторая на прием. Они и то быстрее.
    Немного конкретнее в теме Куда уходят udp пакеты?
    А уходят они в Ардуино и её подход, разбивший все связи между дровами WiFi и LwIP к примеру... :)
    И Unix - это теоретическая ОС, которая далека от практики и никогда не сможет быть реализована. Ну как виртуальный Бизон Хигса. :) Всю жизнь писать и никогда не потрогать.
    "Вынь-да" на этом и выигрывает - что могем слепить то и будет.
     
    Последнее редактирование: 20 фев 2018

Поделиться этой страницей