• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

RTL00 MP3 player

Pilnikov

Active member
Это путь.
У меня так: [inline]atws den.101.ru/ar_66_03 4000[/inline] или [inline]atws=den.101.ru/ar_66_03,4000[/inline]
Код:
>atws den.101.ru/ar_66_03 4000
ATWS: den.101.ru/ar_66_03,4000
MP3: Connect url: den.101.ru/ar_66_03:4000
FIFO: Alloc 16384 bytes at 0x10058168
MP3: Connecting to server 193.232.148.44...
>HTTP/1.0 200 OK
Content-Type: audio/mpeg
Date: Sun, 16 Apr 2017 23:54:15 GMT
icy-br:128
icy-description:Avtoradio Ekaterinburg 105.0 FM
icy-name:Avtoradio Ekaterinburg
icy-pub:-1
Server: Icecast 2.4.0-kh3
Cache-Control: no-cache, no-store
Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
Access-Control-Allow-Methods: GET, OPTIONS, HEAD
Connection: Close
Expires: Mon, 26 Jul 1997 05:00:00 GMT
FIFO: Start Buffer fill 8273
[I2S  Wrn]I2S0 Pin may conflict with JTAG
I2S0: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
I2S1: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
MAD: Alloc 15546 bytes at 0x10065220
MAD: Decoder start.
MAD: Dec err 0x0235 (bad main_data_begin pointer)
MAD: Rate 44100, channels 2
I2S: Set Sample Rate 88200 (x1)
Avtoradio Ekaterinburg 105.0 FM, Rate 44100, 2 channels
А там [inline]atws=ic4.101.ru/p822837,8000[/inline] - какой-то другой кодек или ещё чаго...
Код:
>atws=ic4.101.ru/p822837,8000
ATWS: ic4.101.ru/p822837,8000
MP3: Connection closed.
MAD: Closed.
I2S0: Closed.
I2S1: Closed.
FIFO: Closed.
MP3: Connect url: ic4.101.ru/p822837:8000
FIFO: Alloc 16384 bytes at 0x100586c0
>MP3: Connecting to server 91.207.59.29...
HTTP/1.0 200 OK
Content-Type: audio/aacp
Date: Mon, 17 Apr 2017 00:00:41 GMT
icy-br:64
ice-audio-info: bitrate=64;channels=1;samplerate=22050
icy-description:personal station #
icy-genre:varios
icy-name:personal station #822837
icy-pub:0
icy-url:http://101.ru
Server: Icecast 2.4.0-kh3
Cache-Control: no-cache, no-store
Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
Access-Control-Allow-Methods: GET, OPTIONS, HEAD
Connection: Close
Expires: Mon, 26 Jul 1997 05:00:00 GMT
FIFO: Start Buffer fill 8445
[I2S  Wrn]I2S0 Pin may conflict with JTAG
I2S0: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
I2S1: Alloc DMA buf 12288 bytes (4 x 384 samples 96 bits)
MAD: Alloc 15546 bytes at 0x10065208
MAD: Decoder start.
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0104 (reserved sample frequency value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0104 (reserved sample frequency value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0104 (reserved sample frequency value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0103 (forbidden bitrate value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0104 (reserved sample frequency value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
MAD: Dec err 0x0102 (reserved header layer value)
Премного благодарен + благодарность от супруги.
Во втором случае тип потока - flv
 

rst

Member
Помимо всего вышеперечисленного у модулей доступен режим отладки/программирования по Jtag (через J-Link2) и слегка большее чем у 8266 чиcло GPIO.
Наличие JTAG и GPIO в модулях мне безразлично - как я уже писал - меня интересует только законченный модуль с готовой прошивкой позволяющей доступ к её функционалу через некий протокол. Желательно не AT-командным и с бОльшим функционалом чем у ESP8266.
Но получается, что доступные подобные прошивки для RTL почти не отличаются по функционалу от ESP8266. :(((
Так что, вместо того, чтобы собачиться, лутче окажите сообществу хомячков конструктивную поддержку в плане веб библиотек (морды всякие).
Абдуринами не занимаюсь и никогда не занимался. И никому не советую ;)
 

rst

Member
А какой функционал вам нужен?
...
А понятие "готовая прошивка" это не для здесь - РТЛ это МК а не блютуз модуль и не Wifi -> Uart bridge.
Любой блютуз модуль - это тоже МК с готовой прошивкой.
Вот мне и нужен такой WiFi-модуль управляемый через внешний интерфейсом. Но с протоколом лучше чем у ESP8266 (не АТ-командным) и с бОльшим функционалом.

PS: Вобщем - вопрос закрыт. Как я понял - такого не существует. Придётся пользоваться тем, что есть (ESP8266; ну или RTL8710, что то же самое) :(
 

rst

Member
МП3 спеть из интернета сразу безо всяких езернет и прочих DAC шилдов - пожалуйста
Ну да, без, как же o_O
Чтобы с ШИМ получить что-то более-менее приемлемого качества звучания, а не хрипения, нужно ещё фильтр навесить да пару операционников. А сигнал с 12-битного DAC можно напрямую на УМЗЧ подавать.
 

pvvx

Активный участник сообщества
зачем внешний мк
Тяжелый случай. Чел не умет писать на СИ, а умеет только через "AT". Скорее всего ему дали внешнюю плату с каким-то Basic типа, он её и подключает ко всему, но там управляется только UART и SPI, до 1 мбит/сек по его сведениям... Скорость тоже ограничена этим Basic или Fort...
 

Pilnikov

Active member
Блин, опять 25!.... :eek:
Перечитайте мои посты выше.
Свет клином не сошёлся на этом вашем RTL или ESP.
Фишка ртл именно в том, что внешний мк практически никогда не нужен. Если нужно мощнее и функциональнее, то это pi zero (но жрет много) или стм + вифи шилд - а это уже огород
 

pvvx

Активный участник сообщества
Блин, опять 25!.... :eek:
Перечитайте мои посты выше.
Свет клином не сошёлся на этом вашем RTL или ESP.
Но здеся тема про встроенный декодек MP3 в RTL. Если вам так сложно, то есть уже порт с Java (тоже встроенный :) ).
Фишка ртл именно в том, что внешний мк практически никогда не нужен. Если нужно мощнее и функциональнее, то это pi zero (но жрет много) или стм + вифи шилд - а это уже огород
У Оранж Pi - не работает WiFi. Есть замена, значительно дешевле, и жрет как ESP8266 - MIFI 3G/4G Router, но чел не умеет даже читать, попал не в ту тему...
 

Neov

Member
После console_init(), ещё до запуска scheduler, не срабатывают прерывания gtimer.
 

Neov

Member
Почему в i2s драйвере функции ОС дергаются вперемешку из freertos.h и osdep_api.h ? Что приоритетнее? Стоит ли всерьез относиться к внедрению mbed?
---
Предусмотрены ли в SDK семафоры на периферию, или нужно городить самому?
 

pvvx

Активный участник сообщества
Почему в i2s драйвере функции ОС дергаются вперемешку из freertos.h и osdep_api.h ? Что приоритетнее?
Они повязаны.
Любой современный код имеет наслоения в виде переходников и переназначения названий функций. Делается это для совместимости. Уровень такого наслоения в SDK имеет более 5 шкурок, к примерe для драйвера WiFi. :)
Стоит ли всерьез относиться к внедрению mbed?
Это смотря с какой стороны.
Как примеры - да :)
Предусмотрены ли в SDK семафоры на периферию, или нужно городить самому?
Предусмотрены (сделаны) только три семафора и то просто так. RTL00MP3/device_lock.h at master · pvvx/RTL00MP3 · GitHub
Я применяю их.
 

pvvx

Активный участник сообщества
@pvvx стесняюсь спросить, сложно сделать вывод не декодированного потока в i2c/spi?:rolleyes:
Всё можно, но кому нужен пример с сотнями опций? В нем потом будет не разобраться.
Тут пример рассчитан на использование только модуля, без какой либо обвязки из внешних микросхем...
 

Neov

Member
кстати, у меня при запуске вызывается read_wifi_cfg, что нормально, но и write_wifi_cfg вызывается аж 3 раза, это нормально?

Код:
===== Enter SRAM-Boot 1 ====
CPU CLK: 83333333 Hz, SOC FUNC EN: 0x20111113
Img Sign: RTKWin, Go @ 0x1000605d
===== Enter Image: Software ====
read_wifi_cfg: checkpoint

RTL8195A[Driver]: port switch - port0(wlan2), port1(wlan1)
SoftAP ip: 192.168.4.1
write_wifi_cfg: checkpoint

RTL8195A[Driver]: set ssid [apname]

RTL8195A[Driver]: start auth to 00:78:9e:e1:61:ee

RTL8195A[Driver]: auth success, start assoc

RTL8195A[Driver]: association success(res=5)

RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)

RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
write_wifi_cfg: checkpoint

RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
Station ip: 192.168.1.5
write_wifi_cfg: checkpoint
 

pvvx

Активный участник сообщества
кстати, у меня при запуске вызывается read_wifi_cfg, что нормально, но и write_wifi_cfg вызывается аж 3 раза, это нормально?
write_wifi_cfg работает с проверкой - если запись не поменялась, то ничего лишний раз не пишет.
Что пытаться сохранить при изменении указывается в конфиге wifi_user_set.h:
Код:
/* Опции разрешения записи конфигов по уcпешному соединению или выполнению операции установок режимов WiFi без ошибок  */
#define DEF_SAVE_CFG (BID_ALL_WIFI_CFG | BID_WIFI_CFG)    // сохранение по успешному соединению/выполненю для всех конфигов:
                                                        // (для ST или AP пишутся раздельно) с проверкой на изменения
Три раза и произошло:
  1. Включилась SoftAP
  2. Произошло соединение Station с внешней AP
  3. Получен IP адрес и сработал DHCP (проверились изменения опции DHCP или fixed IP)
При старте тоже считываются прошлые установки и алгоритм, что читать или нет и какие, в какой режиме стартовать WiFi. Всё указывается в wifi_user_set.h. Запись установок производиться в два последних сектора 1МБ Flash у RTL8710AF с хитрой оптимизацией чтобы не протереть дырку... см. RTL00_SDKV35a\component\common\mbed\targets\hal\rtl8195a\flash_eep.c.

И что это за сообщения "write_wifi_cfg: checkpoint" ?
Для вывода всех отладочных сообщений измените в platform_autoconf.h:
Код:
/* CONFIG_DEBUG_LOG:
=0 Off all diag/debug msg,
=1 Only errors,
=2 errors + warning, (default)
=3 errors + warning + info,
=4 errors + warning + info + debug,
=5 full */
#define CONFIG_DEBUG_LOG 4
И всё выведется само, что там писало или нет в Flash и т.д. Будет целая простыня всяких сообщений... Выбрать какие глушить или выводить можно через флаги (биты в):
extern u32 ConfigDebugErr;
extern u32 ConfigDebugInfo;
extern u32 ConfigDebugWarn;
extern u32 CfgSysDebugErr;
extern u32 CfgSysDebugInfo;
extern u32 CfgSysDebugWarn;
описанные в diag.h.
Чтобы не забивать память, по умолчанию стоит уровень трансляции вывода только сообщений ошибок и warning-ов.
Так-же в SDK добавлен флаг отключения вывода rtl_printf() (замены обычного printf()) на ходу, а то тормозит при работе некоторых приложений выводя на 38400 baud сообщения в LogUART. DiagPrintf() она не отключает, для разного подхода...
ram_libc.c: char print_off;
print_off = 1; - отключить вывод.
 
Последнее редактирование:

Neov

Member
Тут заметил, что lwip перестает принимать пакеты, если очередь mbox была переполнена.
 
Сверху Снизу