Arduino для RTL8710.

mikush

New member
HEAP: Alloc 15560 failed! я так понимаю что не хватает RAM для буферов если компилировать с моим проектом, до выделения
Код:
CLK CPU        166666666 Hz
RAM heap    43720 bytes
TCM heap    27928 bytes
 

pvvx

Активный участник сообщества
HEAP: Alloc 15560 failed! я так понимаю что не хватает RAM для буферов если компилировать с моим проектом, до выделения
Код:
CLK CPU        166666666 Hz
RAM heap    43720 bytes
TCM heap    27928 bytes
Да. Уменьшайте буфера. Они там слишком большие просто так :)
Если перекидывать на RTL8711AM, то надо следить, чтобы буфера работающие с DMA не попали в SDRAM, при условии, что вывод на два канала ШИМ. SDRAM не справляется с сразу со всеми потоками - исполнения кода от туда, 2 канала DMA на десятку мегабит и буфер FIFO для декодека... Рвет DMA поток - наверно у него выставил приоритет меньше - не помню. Если выход на DAC, то таких проблем нет - там требуется значительно меньшая скорость DMA... Возможно ещё надо скорректировать параметры калибровки SDRAM - у меня работают прошитые в Flash установки, пришедшие уже в модуле. Автонастройка параметров SDRAM в коде SDK работает и c тестом выбирает максимальные настройки на производительность если нет записи от прошлых настроек в flash, но я тестировал с установками из Flash от SDK 3.4 2015 года, прошитого в модули RTL8711AM тогда-же :) Все варианты не проверить и не сразу всё можно учесть...
Увеличение FIFO на 2 мегабайта вызывает проблемы – начальная загрузка половины буфера (1 мегабайт) очень долгая – сервер радио-MP3 медленно отдает - очень долго ждать старта проигрывания. :)

В RtlDuino использовался этот код arduino-src-patch.zip - из него была сделана либа lib_mp3i2s.a.
 
Последнее редактирование:

Pilnikov

Active member
pvvx я конечно дико извиняюсь за ламерский подход к постановке вопроса, но....
я тут получил модулек (самый бюджетный 8710 B&T RTL00) "на поиграться". Вечер мучался пытаясь хоть что-то от него услышать. Сейчас зацепил напрямую к СН340 RX TX GB0 GB1 и питалово. Получил картинку (в прицепе) И чего с этим делать дальше? Объясните мне пожалуйста не посылая далеко и надолго: что есть JLINK, если это вид аппаратного программатора, то получается без его наличия используя вашу свалку модулек не прошить?
 

Вложения

  • 32.3 KB Просмотры: 94

sharikov

Active member

pvvx

Активный участник сообщества
Объясните мне пожалуйста не посылая далеко и надолго: что есть JLINK, если это вид аппаратного программатора, то получается без его наличия используя вашу свалку модулек не прошить?
Можно без JLINK, но это надо создать прошивку OTA в RtlDuino и обновить модуль через "AT" команды.

Данную тему, конкретную прошивку, для заливки по OTA через AT команды в модуль для дальнейшей работы с Arduino я оставил на реализацию другими. Не всё же мне лепить. Надо оставить место другим. :)
 
Последнее редактирование:

VDS1986

New member
Добрый день!
Прошу совета у людей, работавших с RTL8710.
Удастся ли на этом модуле получить скорость обмена порядка 1-2 Мбит/сек в режиме, когда есть хост-контроллер,
который передаёт модулю данные по UART? Сам модуль должен работать в режиме TCP-сервера,
к нему подключается клиент и тянет потоковые данные.
Сейчас использую модуль STM SPWF01, реальный выхлоп у него 40 кбит/сек, в чём признались
разработчики на форуме саппорта. Хотя в документации было заявлено 54 Мбит/сек, а о реальной скорости ни слова.
Вообще, как я понял, из даташитов на различные вай-фай модули трудно оценить реальную скорость передачи данных.
 

pvvx

Активный участник сообщества
Удастся ли на этом модуле получить скорость обмена порядка 1-2 Мбит/сек в режиме, когда есть хост-контроллер,
который передаёт модулю данные по UART? Сам модуль должен работать в режиме TCP-сервера,
к нему подключается клиент и тянет потоковые данные.
Зависит от UART. Скорости в TCP и UDP при одной антенне (RTL871x).
Для реализации полной скорости передачи по WiFi в TCP потребуется скорость от UART не менее 12..13 Мегабит в секунду. Справиться ли ваш контроллер?

WiFi 54 Мбит/с (одна антенна) / 3 (реальный трансфер) / 8 (бит в байте) / 1.5..2 (TCP запрос-ответ с ACK) = ~ 1.1...1.3 Мегабайта в сек.
 
Последнее редактирование:

VDS1986

New member
Контроллер ATSAM3X8E (Arduino Due), тактовая 84 МГц. Максимальная скорость UART получается 5250000 бод.
Полная скорость не нужна, 1 Мбит/сек хватит за глаза. Но я на стмвском модуле и 50 кбит/сек не могу сейчас получить...
 

pvvx

Активный участник сообщества
Контроллер ATSAM3X8E (Arduino Due), тактовая 84 МГц. Максимальная скорость UART получается 5250000 бод.
Полная скорость не нужна, 1 Мбит/сек хватит за глаза. Но я на стмвском модуле и 50 кбит/сек не могу сейчас получить...
Придется заливать по 3-м UART, т.к. гарантированно UART у RTL871x работает на 4Mbit/s с DMA без всяких оверклоков. :) См. док на RTL8711AF - там есть таблица дискретности baud rate для UART.
1 Mbit - это ужасный тормоз - менее 100к/с...
 

VDS1986

New member
Не понял про "Придется заливать по 3-м UART". По трём портам одновременно?
Может тогда посмотреть в сторону SPI...
100 кбайт/сек достаточно, как ни странно.
6 каналов 8-бит АЦП с частотой 10 кГц генерируют в секунду 60000 байт данных.
И их надо срочно передать, так как хранить на борту, увы, негде: у хоста всего 96 кбайт SRAM.
По-настоящему тормозной SPWF01 не позволяет столько протолкнуть в воздух.
 

pvvx

Активный участник сообщества
Не понял про "Придется заливать по 3-м UART". По трём портам одновременно?
Может тогда посмотреть в сторону SPI...
Может.
И их надо срочно передать, так как хранить на борту, увы, негде: у хоста всего 96 кбайт SRAM.
По-настоящему тормозной SPWF01 не позволяет столько протолкнуть в воздух.
Это "AT" не позволяет. Через DMA протолкнется, но всё равно придется отслеживать хосту RTS/CTS. WiFi дело не надежное и бывают дырки из-за помех и прочего...
 

VDS1986

New member
У STM'овского модуля фишечка, что когда к серверу подключается клиент, то модуль переходит в прозрачный режим, и всё,
что летит ему в UART, падает прямиком в сеть и попадает клиенту.
Внутренний буфер UART у него, как удалось выяснить у разрабов, 1000 байт. Хост, естественно, следит за RTS.
Вот, что мне ответили на форуме STM:
54 Mbit/s refers to wifi chip. Current FW release speed is around 50Kbps.
More or less, which transfer rate are you looking for?
и:
Due to low RAM, SPWF as default is not able to reach 1Mbps.
Please contact your local ST office/distributor...

Нубский вопрос по модулю RTL00:
- Прошивается он по UART'у через бутлоадер, как все Cortex'ы умеют? Или нужен именно STLink/JLink?
 

sharikov

Active member
- Прошивается он по UART'у через бутлоадер, как все Cortex'ы умеют? Или нужен именно STLink/JLink?
#@$&$#%!!!!!!
RTL по uart НЕ ПРОШИВАЮТСЯ!!!
Только JTAG/SWD.
Сколько можно повторять?
Надо это прибить наверху каждого раздела про RTL.

6 каналов 8-бит АЦП с частотой 10 кГц генерируют в секунду 60000 байт данных.
И их надо срочно передать, так как хранить на борту, увы, негде: у хоста всего 96 кбайт SRAM.
Если хотите чтобы работало всегда ставьте буфер на несколько секунд, лучше десятков. Wifi это не провод а радио, в нем могут быть замирания связи. Любой радиоканал вы разделяете с целой вселенной и снаружи прилететь может все что угодно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Внутренний буфер UART у него, как удалось выяснить у разрабов, 1000 байт.
Менее MTU? Что за бардак?
Для передачи на максимальной скорости по TCP надо буфер на два пакета. Это обычно 15xx*2. Т.е. более 3 килобайт.
- Прошивается он по UART'у через бутлоадер, как все Cortex'ы умеют? Или нужен именно STLink/JLink?
Jtag и/или SWD.
#@$&$#%!!!!!!
RTL по uart НЕ ПРОШИВАЮТСЯ!!!
Да - сделано искусственно. Чтобы не использовали совсем не шарящие. Бутлоадер для загрузки с UART я не дам - не моя это задача. У меня есть Jtag и им быстрее, проще, надежней и с отладкой. У современных компов нет UART.
 
Последнее редактирование:
@pvvx, про mbed
А есть другие предложения по стандартизации интерфейса для "Абстрагирующихся" = пользователей Arduino?
Я адский нуб (который использовал из армов только STM32) но есть же, к примеру, SPL? Или она только для STM32, а под "чисты" ARM есть только CMSIS, который есть просто работа с регистрами? И libopencm3 вроде как.

Все как-то так запутано с этими библиотеками для ARM'ов, каждый норовит свой велосипед написать.
 

pvvx

Активный участник сообщества
@pvvx, про mbed


Я адский нуб (который использовал из армов только STM32) но есть же, к примеру, SPL? Или она только для STM32, а под "чисты" ARM есть только CMSIS, который есть просто работа с регистрами? И libopencm3 вроде как.
CMSIS - смешной набор драйверов: CMSIS_5/CMSIS/Driver/DriverTemplates at develop · ARM-software/CMSIS_5 · GitHub
Все как-то так запутано с этими библиотеками для ARM'ов, каждый норовит свой велосипед написать.
Ничего запутанного в RTL в упор не вижу. HAL уровень есть, RTOS прикручен, api уровень есть...
Может беда в том, что SDK содержит слишком много примеров?
Описания в хидерах есть на 90% регистров и контроллеров данного SoC (ещё и с примерами :) ). Документацию в PDF на сложные контроллеры я выложил. На RF часть - только хидеры - нефиг там копаться :) Пишите любой интерфейс или прямо в регистры...
Картинок не будет - я не художник и не нанимался в Realtek. На поступающие предложения от производителей модулей для детей я отказал. У меня своя работа и предприятия есть... Т.е. имею производство способное лепить хоть модули, но это не интересует, т.к. работать в области частных мелких заказов нет никакого желания. Это слишком муторно и не дает прибыли.
 
Последнее редактирование:
Ничего запутанного в RTL в упор не вижу. HAL уровень есть, RTOS прикручен, api уровень есть...
Может беда в том, что SDK содержит слишком много примеров?
Описания в хидерах есть на 90% регистров и контроллеров данного SoC (ещё и с примерами :) ). Документацию в PDF на сложные контроллеры я выложил. На RF часть - только хидеры - нефиг там копаться :) Пишите любой интерфейс или прямо в регистры...
Картинок не будет - я не художник и не нанимался в Realtek. На поступающие предложения от производителей модулей для детей я отказал. У меня своя работа и предприятия есть... Т.е. имею производство способное лепить хоть модули, но это не интересует, т.к. работать в области частных мелких заказов нет никакого желания. Это слишком муторно и не дает прибыли.
Да нет, это риторическое высказывание от нуба, который еще не разобрался во всем. К Вам-то вообще никаких претензий - наоборот, я искренне восхищаюсь и благодарен Вам за ту работу, которую вы проделали.
 

pvvx

Активный участник сообщества
Да нет, это риторическое высказывание от нуба, который еще не разобрался во всем. К Вам-то вообще никаких претензий - наоборот, я искренне восхищаюсь и благодарен Вам за ту работу, которую вы проделали.
Ну это только в рамках "хобби". Большего не сделать одному.
mbed - это C++.
 
Последнее редактирование:

Pilnikov

Active member
RTL по uart НЕ ПРОШИВАЮТСЯ!!!
Только JTAG/SWD.
Второй нубский вопрос - схема подключения например к такому
(перешит в jlink по рекомендациям pvvx) ?
Третий нубский вопрос - как проверить работоспособность зверька (jlink -a) без 2-го STM-a? При попытке прошивки выдает картинку из прицепки.
Четвертый нубский вопрос в каком режиме прошивать, какие настройки делать для jlinka?
Пятый нубский вопрос - указывать сом порт или не обязательно?
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
Второй нубский вопрос - схема подключения например к такому
Скачайте и ищите знакомые буквы тут: RTL871x_Info/padi-jtag-swd-connections-diagram.pdf at master · pvvx/RTL871x_Info · GitHub
(перешит в jlink по рекомендациям pvvx) ?
Я давал такую рекомендацию: Используйте нормальный Jlink - он при соединении ещё с reset (CHIP_EN) модуля хорошо работает и дает большие скорости...
Третий нубский вопрос - как проверить работоспособность зверька (jlink -a) без 2-го STM-a? При попытке прошивки выдает картинку из прицепки.
Нет смысла в проверке, если адаптер исправен.
Четвертый нубский вопрос в каком режиме прошивать, какие настройки делать для jlinka?
Никаких. установки берутся из скриптов.
Пятый нубский вопрос - указывать сом порт или не обязательно?
Куда и какой COM порт? У JTAG нет COM портов. И на компьютерах тоже ныне нет COM портов. Это чтобы прошить ESP8266 надо покупать адаптер USB-COM порта отдельно, JTag тоже отдельно и переписать самому UDK или купить лицензию на платную версию Xtensa (ныне Cadence Design Systems) компилятора под Windows. А тут RTL871x.
 
Сверху Снизу