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

RTL00 MP3 player

pvvx

Активный участник сообщества
Так по существу, прошу лог)
Не выводится полный лог. Для этого надо переписывать все make.
Но, главное, зачем он вам? Там стандартный make и сложного ничего нет. Было-бы назначение в среде, к примеру в Эклипсе, условий к каждому файлу, то тогда понятно зачем лог.
А тут-то что? Список файлов для линковки дан. Опции для всех едины. Список либ - всего две :)
Каких-то специальных опций нет, кроме переназначения имен секций в одном файле rtl_boot.c.
Т.е. совсем примитивная сборка. Можно руками по одному файлу собрать.
В чем сложности - опишите конкретно, а не общим - "не собирается":)

Я бы попросил полный лог с перечнем команд исполнения, я бы даже сказал, что мне только хронология выполнения команд и нужна
Хронология - без разницы. Хоть с хвоста, хоть в шахматном порядке, что для include, что для obj.
Для obj позиции указаны в *.ld. Им по другому не собраться.
Если не совпадает __ram_image_end__ == 0x100020c0, то это просто пропущено что-то в при трансляции и линковки из исходников.

Скорее всего у вас известная беда с длиной командной строки в win.
Это ограничение удаляет mingw32-make.exe. UDK с Eclipse для модулей RTLxxx под Windows
Используйте "пипу" в Питоне :) Перенаправление стандартного ввода-вывода...
Так-же адаптировать исходники к старому транслятору, используемому у вас я не собираюсь.
Используется GNU_Tools_ARM_Embedded 5.4_2016q2

Кароче Питон нужен будет только на этапе сборки бинарников, а не в качестве создания собственной версии make. Когда руки доберутся и допилю свой SDK, что-нить накалякаю в Питоне. А пока удобнее использовать готовые разрозненные утилиты.
По тому на вашу затею написать собственный make и ответил в теме - нет готовности ни одного варианта SDK для закатывания его "в каменный" вид. Любой проект имеет массу специфических изменений, которые потребуют практически полного переписывания вашего кода для Питона, что никому не интересно.
 
Последнее редактирование:

Neov

Member
Таки собрал :) дело как всегда оказалось в мелочах. Отличия с оф. SDK оказались лишь в wscript файлах, что быть и должно, а не переписывания всего python кода, ну и конечно файлы со списками исходников. Выложил в шапку темы.

P.S. моя сборка не использует shell :)
 

Pilnikov

Active member
pvvx, а такого вида
(http://den.101.ru:4000/ar_66_03) или
(http://ic4.101.ru:8000/p822837)
урлы можно как то заюзать?

И еще у меня почему то нет реакции на АТ команды

FIFO: Start Buffer fill 8216
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 0x10064380
MAD: Decoder start.
MAD: Dec err 0x0101 (lost synchronization)
MAD: Dec err 0x0235 (bad main_data_begin pointer)
MAD: Dec err 0x0235 (bad main_data_begin pointer)
MAD: Rate 48000, channels 2
I2S: Set Sample Rate 96000 (x1)
ATWS=?
ATST:

ЗЫ: я использовал пример WiFiMP3 из-под Arduino IDE,
платка RTL00(8710af), урл из примера работает
 
Последнее редактирование:

Pilnikov

Active member
В Arduino нет AT команд и нет новой консоли (только в моем SDK). На то она и дурина. Пишите там сами запросы к либе из очка...
Прошился версией SDK, (pvvx поправьте пожалуйста инструкцию по заливке .bin через J-Link и RTL00Flasher - текущая не работает), AT команды заработали.
А вот вопрос по URL вида (http://den.101.ru:4000/ar_66_03) или
(http://ic4.101.ru:8000/p822837) где присутствует доп тег после порта, так и остался.
Код:
//Open a connection to a webserver and request an URL. Yes, this possibly is one of the worst ways to do this,
//but RAM is at a premium here, and this works for most of the cases.
int openConn(const char *streamHost, const char *streamPath, int streamPort)
Что есть "сonst char *streamPath"?
Можно как-то "малой кровью" поправить функционал, чтобы открывать выше приведенные URL? Т.к. очень многие URL Web станций имеют именно такой формат. Спасибо.
 

rst

Member
После первого прохода "чистки" SDK и расстановки приоритетов задач, MP3 пошел уверенно на 83 МГц CLK CPU.
Случайно наткнулся на Вашу тему зайдя сюда проверить наличие новых док на ESP8266 :)
В прошлом-позапрошлом годах делал подобный проект: интернет-радио (ну не только интернет).
Моя реализация была на LPC1788 (Cortex-M3) + ESP8266 + Helix-MP3-decoder. В проекте ещё куча другой периферии - не суть важно.
Полученные мной характеристики: проигрывание радиостанции 320kbps с тактовой CPU ==78МГц - загрузка CPU примерно 50-70%. Обслуживание остальной периферии (пиксельный LCD, IR-приёмник, FM-тюнер и т.п.) - вносят малый вклад в использование CPU.
У меня вывод звука - на встроенный ЦАП МК.
В ESP8266 у меня AT-командная прошивка (версии 0.25 вроде).
Через ESP8266 в этом проекте ещё работает SNTP-клиент и ещё один TCP-сокет иногда используется.
В Ваших сообщениях в этом топике много раз видел что "ESP8266 не потянет". Почему? Работает вроде стабильно - для теста даже как-то оставлял работать в течение суток - всё ок. Хотя с некоторыми р/станциями иногда наблюдаются проблемы, но это скорее всего проблемы в этих р/ст.
Ещё хотел спросить - Я много искал р/станции на разные битрейты, но нашёл максимум на 320kbps, хотя судя по докам для MP3 существуют битрейты до 480kbps, но таких р/ст мне найти не удалось. Может кто знает такие URL-ы? Очень хотелось бы протестить работу ПО на максимуме.

В данное время я возобновил проект - сейчас переношу его на другую аппаратную платформу - на STM32F429. Пока есть свободное время. Так что буду рад пообщаться.
Очень здорово, что нашёл людей, занимающихся похожей темой ;)

ЗЫ: Это моё первое сообщение на данном форуме, так что надеюсь, что не нарушил никаких местных правил :)
 

pvvx

Активный участник сообщества
В Ваших сообщениях в этом топике много раз видел что "ESP8266 не потянет". Почему?
По тому, что не может выводить 2 канала MP3 или даже один, хоть в 44 кГц ШИМ более пары бит.
Прошейте и сравните данный пример и GitHub - pvvx/mp3_decode: Test ESP8266 MP3 webradio (512k Flash)
В ваших проектах используется периферия, а в описываемых - только модуль и никаких внешних деталей, кроме резисторов (это для ESP8266, необходимых чтобы он запустился :)). Так-же и итоговая цена поделки, потребление по питанию и простоте сборки...
Давайте сравним вашу поделку и, к примеру мой комп, с докупленной внешней специализированной звуковой картой. :)
Дык вот в одинаковых условиях ESP8266 не подходит никак для проигрывания MP3. На выходе у него выходит один шум. А у RTL - стерео и на простые динамики качества хватает.
 
Последнее редактирование:

rst

Member
Дык вот в одинаковых условиях ESP8266 не подходит никак для проигрывания MP3.
Мне это и не нужно. ESP8266 меня интересует только как канал доступа к интернету. Соответственно и требования к нему ставлю только такие. Все прикладные задачи (в том числе и декодирование MP3 два канала) будут выполняться основным МК.
В свете вышеизложенного, интересует стабильность работы ESP8266 в режиме "Station" при нескольких одновременно открытых TCP-сокетах и непрерывных потоках данных по ним (а народ, как я заметил, ESP8266 использует в задачах главным образом с малой загрузкой потоком данных).
У меня сейчас работает один TCP-сокет с непрерывным входящим потоком и одновременно периодически происходят ещё UDP-транзакции.
В дальнейшем будет ещё один параллельный TCP-сокет с в основном с исходящим потоком (в пределах примерно несколько десятков кБ/сек).
Вот хотелось бы уверенности, что ESP8266 в таком режиме сможет нормально долговременно функционировать.
Насчёт декодирования MP3: какая максимальная скорость потока MP3 у меня нормально декодируется и с какой частотой и загрузкой CPU я писал выше. Думал, что у ESP8266 со сравнимой тактовой на том же декодере должны быть примерно такие же характеристики декодирования.
 

pvvx

Активный участник сообщества
Мне это и не нужно. ESP8266 меня интересует только как канал доступа к интернету. Соответственно и требования к нему ставлю только такие. Все прикладные задачи (в том числе и декодирование MP3 два канала) будут выполняться основным МК.
В свете вышеизложенного, интересует стабильность работы ESP8266 в режиме "Station" при нескольких одновременно открытых TCP-сокетах и непрерывных потоках данных по ним (а народ, как я заметил, ESP8266 использует в задачах главным образом с малой загрузкой потоком данных).
Стабильность у ESP8266 - нулевая. Народ не "использует", а играется в "программирование" на ESP8266. В основном потыкать в Arduino и положить на полку (или в помойку).
У меня сейчас работает один TCP-сокет с непрерывным входящим потоком и одновременно периодически происходят ещё UDP-транзакции.
По "AT"? :)
В дальнейшем будет ещё один параллельный TCP-сокет с в основном с исходящим потоком (в пределах примерно несколько десятков кБ/сек).
Вот хотелось бы уверенности, что ESP8266 в таком режиме сможет нормально долговременно функционировать.
Насчёт декодирования MP3: какая максимальная скорость потока MP3 у меня нормально декодируется и с какой частотой и загрузкой CPU я писал выше. Думал, что у ESP8266 со сравнимой тактовой на том же декодере должны быть примерно такие же характеристики декодирования.
Должны быть, но никто не оптимизировал код кодеков под проц ESP8266 и не будет - у него закрытая (проприетарная) операционная система (не рекомендуется для разработки чего-то нового и проблемы в сопровождении - годовые ожидания мелких исправлений в SDK от Espressif и очень много не исправленных за 3 года глюков...). Так-же ESP8266 не поддерживает современный WiFi стандарт (является устаревшим устройством на HT20 и не сертифицирован у альянса WiFi и не поддерживает многое, до глюков), а скоро уже новый стандарт WiFi.
При построении связки WiFi блок c другим MCU обычно используется USB или SDIO контроллер. У ESP8266 с SDIO нет нормальных примеров и система (SDK) его не поддерживает. (К SDIO на RTL + STM есть множество примеров/исходников на обе стороны - для RTL и для STM32. Я эту тему не прорабатывал - не интересно, т.к. RTL8711AM мне хватает без внешних компонентов для решения массы задач)
 
Последнее редактирование:

Pilnikov

Active member
Прошился версией SDK, (pvvx поправьте пожалуйста инструкцию по заливке .bin через J-Link и RTL00Flasher - текущая не работает), AT команды заработали.
А вот вопрос по URL вида (http://den.101.ru:4000/ar_66_03) или
(http://ic4.101.ru:8000/p822837) где присутствует доп тег после порта, так и остался.
Код:
//Open a connection to a webserver and request an URL. Yes, this possibly is one of the worst ways to do this,
//but RAM is at a premium here, and this works for most of the cases.
int openConn(const char *streamHost, const char *streamPath, int streamPort)
Что есть "сonst char *streamPath"?
Можно как-то "малой кровью" поправить функционал, чтобы открывать выше приведенные URL? Т.к. очень многие URL Web станций имеют именно такой формат. Спасибо.
 

pvvx

Активный участник сообщества
К SDIO на RTL + STM есть множество примеров..
Пример:
wuqiang / gateway | GitLab
...
Для "AT" Document download - RAK | The Middleware from RAK Enable IoT
Есть ещё в теме Разнообразные модули с RTL871x и RTL8195.
А вот вопрос по URL вида (http://den.101.ru:4000/ar_66_03) или
(http://ic4.101.ru:8000/p822837) где присутствует доп тег после порта, так и остался.
....
Можно как-то "малой кровью" поправить функционал, чтобы открывать выше приведенные URL? Т.к. очень многие URL Web станций имеют именно такой формат. Спасибо.
Правите сами. RTL00MP3 - это всего пример, а не полнофункциональный проигрыватель. :)
Или туда: Предложения о выполнении проектов на заказ - там желающие вам помочь наверняка найдутся. :)
 
Последнее редактирование:

Pilnikov

Active member
Пример:
wuqiang / gateway | GitLab
...
Для "AT" Document download - RAK | The Middleware from RAK Enable IoT
Есть ещё в теме Разнообразные модули с RTL871x и RTL8195.
Правите сами. RTL00MP3 - это всего пример, а не полнофункциональный проигрыватель. :)
Или туда: Предложения о выполнении проектов на заказ - там желающие вам помочь наверняка найдутся. :)
Спасибо
 

rst

Member
Да, по AT. Уродский конечно интерфейс, руки надо отрывать всем производителям, кто ваяет АТ-интерфейс к своим девайсам начиная от GSM-модулей до этого самого ESP. Как будто они думают, что пользователи будут вручную в терминалке давать команды их изделиям...
Но задача разработки прошивки для ESP8266 (или чего-либо взамен) передо мной не стоит - в любом случае буду использовать готовый модуль с готовой прошивкой.
При построении связки WiFi блок c другим MCU обычно используется USB или SDIO контроллер.
USB - слишком избыточен для межмодульной связи внутри устройства (имею в виду stand alone устройство без линуха). SDIO - тоже (по кол-ву ног), у меня уже ног на МК не хватает.
Оптимальным вариантом подключения был бы SPI с бинарным пакетно-ориентированным протоколом с кодонезависимостью. Ну или хотя-бы - пакетный бинарный протокол через UART. Можно было бы значительно упросить парсер протокола обмена.
Но ещё раз подчеркну: мне нужен именно готовый WiFi-модуль с готовой прошивкой и документированным протоколом обмена с ней. Прошивка должна позволять поддерживать обмен по нескольким одновременно открытым TCP/UDP-сокетам. Да у меня используется именно готовый модуль на ESP8266 (вроде ESP-01 насколько я понимаю), перепаивать его нежелательно, перешить можно.
У Вас есть готовая прошивка с бинарным протоколом обмена по UART? А может можно даже через те же доступные на модуле ноги, использовать SPI?
И чтобы функционал её по поддерживаемым функциям связи в station-режиме был не хуже? В идеале бы конечно чтобы был лучше: чтобы можно было открывать сокеты не только в режиме клиента, но и сервера; и чтобы был доступ к нижележащим протоколам ниже TCP/UDP.
Замену на другие WiFi-модули я буду рассматривать только если не удастся получить требуемый функционал от ESP8266. Пока он большей частью устраивает. Только очень неудобный протокол. :(
 

pvvx

Активный участник сообщества
Но ещё раз подчеркну: мне нужен именно готовый WiFi-модуль с готовой прошивкой и документированным протоколом обмена с ней.
Таких модулей много. Скорость UART не позволяет обслуживать WiFi. Должно быть что-то близкое к скорости PHY (приемника/передатчика), а у обсуждаемых RTL-ов тут - это 150 Мбит/cек.
В случае MP3 проигрывателя файлов и инет-радио на RTL, никаких внешних MCU не требуется. Только I2S DAC или сборка с усилителем и регулятором громкости. SD карту он поддерживает на 100% - встроен полнофункциональный SDIO контроллер SD карт (реальный трансфер за 8МБ/сек). Буфера в 2 МБ достаточно для любой дыры в приеме (сбоях в инет канале).
Цели вашего винегрета не поняты. Пример уже много раз приводился xiaomi проигрыватель инет-радио. На RTL он выходит лучше и дешевле, по основным параметрам - потребление и поддержка SD (можно как файловый сервер для других устройств по WiFi).
Xiaomi выпустила обновлённый проигрыватель онлайн-радио Mi Internet Radio :)
Цена таких устройств в корпусе, динамике и АКБ. Последняя роль - контроллер. C RTL они бы уложились в текущую цену + NFC + индикаторная панель (граф.экран типа сонтня на сотня точек) и разъем для SD карты...
 
Последнее редактирование:

rst

Member
Таких модулей много. Скорость UART не позволяет обслуживать WiFi. Должно быть что-то близкое к скорости PHY (приемника/передатчика), а у обсуждаемых RTL-ов тут - это 150 Мбит/cек.
Для моей задачи это и не нужно, достаточно уже 1-2 Мбит/с.
И где-ж Вы были со своими RTL 2 года назад, когда я начинал проект? ;)
Тогда насколько помню из дешёвого с таким функционалом альтернатив ESP8266 не было.
Цели вашего винегрета не поняты.
Цели мои такие же, как и у любого хобби-проекта - собственное удовлетворение :)
Это не коммерческий проект, вопрос разработки схемотехники, изготовления платы - не стоит. Если бы это был коммерческий проект, то тогда бы выбирал МК совсем из других критериев (и наличие встроенных 2МБ не всегда определяющие - критериев выбора элементной базы много).
А так - делаю на отладочной плате имеющейся у меня и бесплатной. На которой есть и SDRAM с объёмом "за глаза" и LCD320x240 и touchcontroller и акселерометр. Если делать на RTL - где взять EVB да ещё с таким ЖК? Подарите? ;)
Вся стоимость проекта для меня - цена одного-двух модулей с ESP8266 с Али да + цена ещё пары других копеечных модулей.
Отладок бесплатных у меня полно. Зачем покупать что-то ещё (или тем более заниматься разработкой какой-то платы), когда они вполне удовлетворяют задаче и вопрос серийного производства не стоит???

PS: SD-карта в моём проекте вообще - ни к селу ни к городу. Для хранения настроек и пр. есть I2C-FRAM и SPI-FLASH. А если вдруг почему-то захочется SD - подключу её без проблем на SPI.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Для моей задачи это и не нужно, достаточно уже 1-2 Мбит/с.
И где-ж Вы были со своими RTL 2 года назад, когда я начинал проект? ;)
Тогда насколько помню из дешёвого с таким функционалом альтернатив ESP8266 не было.

Цели мои такие же, как и у любого хобби-проекта - собственное удовлетворение :)
Это не коммерческий проект, вопрос разработки схемотехники, изготовления платы - не стоит. Если бы это был коммерческий проект, то тогда бы выбирал МК совсем из других критериев (и наличие встроенных 2МБ не всегда определяющие - критериев выбора элементной базы много).
А так - делаю на отладочной плате имеющейся у меня и бесплатной. На которой есть и SDRAM с объёмом "за глаза" и LCD320x240 и touchcontroller и акселерометр. Если делать на RTL - где взять EVB да ещё с таким ЖК? Подарите? ;)
Вся стоимость проекта для меня - цена одного-двух модулей с ESP8266 с Али да + цена ещё пары других копеечных модулей.
Отладок бесплатных у меня полно. Зачем покупать что-то ещё (или тем более заниматься разработкой какой-то платы), когда они вполне удовлетворяют задаче и вопрос серийного производства не стоит???
А здесь обсуждается пример, ещё дешевле вашего - вообще никаких внешних компонентов, кроме 2 сборки сдвоенных MOSFET, 2 кондеров и 2 динамиков. Куда выводить и как выводить списки радиостанций - это дело пользователя и не входит в проект. Макет дан, "разведка боем" произведена. Если туда всё вписать и исправить - это лишит творчества многих. Можно и доделать до серийного производства с описанным выше функционалом (NFC+SD+файловый сервер+TFT панель+ручка управления типа энкодер с кнопкой+управление голосом (через goole)). Заявки принимаются, но выложен не будет (коммерческий проект). Начинка из электронных компонентов - RTL + I2S кодек + микросхема зарядки и стабилизатора AKБ. Остальное: энкодер + динамики + миркофон + разъемы (внешнего питания и SD) + АКБ + дешевый TFT + рамка из провода (NFC). Если добавить ещё MCU - выйдет замена древней "колбасы" (кассетного магнитофона).
 
Последнее редактирование:

rst

Member
А здесь обсуждается пример, ещё дешевле вашего - вообще никаких внешних компонентов, кроме 2 сборки сдвоенных MOSFET, 2 кондеров и 2 динамиков.
Мои внешние компоненты, которые стоили денег: модуль ESP8266 за ~200р + модуль FM-тюнера и УМЗЧ меньше 100р каждый. Плюс - LCD который уже есть на EVB и бесплатен и без которого всё равно никак. Так что получается дешевле Вашего варианта :)
Лучше скажите: RTL который Вы всё рекламируете - готовые модули на нём с готовой прошивкой (с интерфейсом SPI или UART превращающей его в WiFi-канал связи с инетом) можно где-то купить? И за сколько?
 

pvvx

Активный участник сообщества
Мои внешние компоненты, которые стоили денег: модуль ESP8266 за ~200р + модуль FM-тюнера и УМЗЧ меньше 100р каждый. Плюс - LCD который уже есть на EVB и бесплатен и без которого всё равно никак. Так что получается дешевле Вашего варианта :)
Лучше скажите: RTL который Вы всё рекламируете - готовые модули на нём с готовой прошивкой (с интерфейсом SPI или UART превращающей его в WiFi-канал связи с инетом) можно где-то купить? И за сколько?
Вы хоть что-то читали, прежде чем сюда рекламировать ESP8266? :)
Откройте раздел Разнообразные модули с RTL871x и RTL8195.
На RTL00 выходит дешевле и паять меньше. Текущий вариант MP3 проигрывателя работает и из Arduino - прикрутить интерфейсы там просто и либа самого MP3 дана.
Ваш винегрет есть только у вас и не факт, что он вообще работает - данных по нему = нуль.
на отладочной плате имеющейся у меня и бесплатной.
Поделитесь с народом бесплатными отладочными платами и аппаратными декодеками MP3 c STM32F429.
Тогда и у нас будет ещё дешевле, чем ваше на ESP8266. :p
 
Последнее редактирование:

rst

Member
Вы хоть что-то читали, прежде чем сюда рекламировать ESP8266? :)
Конечно. Я же писал выше - примерно два года назад, когда начинал проект, изучал, что есть на Али. Насколько помню - альтернатив по цене ESP8266 тогда не было.
Ваш винегрет есть только у вас и не факт, что он вообще работает - данных по нему = нуль.
Я ничего не рекламирую и ничего не продаю и поэтому мне всё равно кто что думает по моему проекту. Имхо - тут есть куча куда более бессмысленных проектов. Но это личное дело авторов.
Поделитесь с народом бесплатными отладочными платами и аппаратными декодеками MP3 c STM32F429.
Какие аппаратные декодеки? Я же писал выше - в проекте использовал декодер Helix. Он есть в инете. Я его только портировал на Cortex-M. Я так понял, что и вы в своём инет-радио его использовали? Или я ошибся?
Нет никакого смысла использовать аппаратный декодер при наличии Cortex-M-ядра.
Насчёт плат - будет возможность - могу и подарить ;)
иначе всё равно выкину.

PS: По приведённым выше Вами ссылкам нашёл на Али модуль на RTL8710. Вроде по цене он не отличается от ESP8266. Вы можете что -то рассказать про него? Просто вкратце:
1. Что умеет встроенная прошивка (если она есть)?
2. Если модуль на RTL8710 позволяет управлять своей работой по какому-либо интерфейсу (какому?), то какой функционал предоставляет? В плане доступа к инету.
3. Есть какие-то замечания по качеству его работы? (про сравнение с ESP8266 не спрашиваю, ибо представляю ответ ;)
 
Сверху Снизу