Arduino для RTL8710.

pvvx

Активный участник сообщества
Пробовал тут старый FTP Server STM32 ChibiOs на SD, примотал к RTL.
Показывает:
Код:
....
Interface 0 IP address : 192.168.1.151
Connected to wifi
SD card insert

SD Capacity: 7761920 sectors (3 GB | 3790 MB | 3880960 KB)

SD CSD: 400e00325b5900001d9b7f800a400001
Disk Label: 'TEST SD', Serial Number: 0xc49bfce8

CLK CPU         166666666 Hz
RAM heap        123416 bytes
TCM heap        27920 bytes
Start ftp server...
220---   Welcome to FTP Server!   ---
220 --   Version FTP-2015-04-12   --
Client connected!
<<USER Stm32-E407
331 OK. Password required
<<PASS Chibi
230 OK.
<<SYST
500 Unknow command
<<PWD
257 "/" is your current directory
<<TYPE I
200 TYPE is now 8-bit binary
<<REST 0
500 Unknow command
<<PORT 192,168,1,2,248,54
200 PORT command successful
Data IP set to 192:168:1:2
Data port set to 63542
<<TYPE A
200 TYPE is now ASII
<<LIST
Connecting in active mode
150 Accepted data connection
226 Directory send OK.
<<TYPE I
200 TYPE is now 8-bit binary
<<TYPE I
200 TYPE is now 8-bit binary
<<PORT 192,168,1,2,248,55
200 PORT command successful
Data IP set to 192:168:1:2
Data port set to 63543
<<RETR /rtl00MP3.zip
Connecting in active mode
Sending /rtl00MP3.zip
150-Connected to port 63543
150 11263506 bytes to download
226-File successfully transferred
226 13026 ms, 864 kbytes/s
~860 kbytes/s на больших файлах и от 500 на малых.
Windows не хочет есть имена - требует другой формат:
Снимок1236.gif
В других программах всё ok:
Снимок1237.gif
Но это поправимо.
Нужно ли это в RtlDuino?
 

pvvx

Активный участник сообщества
Нужно. Докачку поддерживает ?
Обычный диск FAT32 c длинными именами. Файлы и записаны по сети.
Сколько дает если писать мимо sd карты в /dev/null ?
Как это относится к устройству диска или ftp?
Скорость чтения записи на RTL871x через контроллер SDOIH описана ранее (он у нас на 20 МегБайт/сек). Код FTP Server STM32 ChibiOs без кеширования вперед и выходит меньше чем трансфер по WiFi (1.2 МегБайт/сек при одной антенне). Процесс то последовательный - запрос по WiFi блока (2xTCP_MSS - 1460*2 байта - окно стека TCP), чтение с SD блока, передача по WiFi блока, подтверждение ACK TCP приема блока. Появляется задержка в протоколе TCP на получение данных с SD. Она в основном от времени обработки начальной команды SD, а не от скорости трансфера контроллера... Так и выходит к 900 кило/сек - почти теоретический предел при данном алгоритме. Увеличение размеров буферов для SD вообще не влияют, а ухудшают ситуацию - при запросе следующего блока в данном протоколе возникает доп.задержка на чтение большого блока, который будет/не будет передан потом... В ftp это решается только несколькими потоками и распараллеливанием процессов... Тогда упремся в скорость WiFi - 1.2..1.3 мег/сек.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Дайте формат для LIST к windows ftp.exe
Код:
C:/ftp 192.168.1.151
Связь с 192.168.1.151.
220---   Welcome to FTP Server!   ---
220 --   Version FTP-2015-04-12   --
Пользователь (192.168.1.151:(none)): e
331 OK. Password required
Пароль:
230 OK.
ftp> dir
200 PORT command successful
150 Accepted data connection
+r,s7473,       test.txt
+/,     test
+r,s3135,       boards.txt
+r,s232226,     Arduino_RTL00MP3_lib.zip
+r,s274380,     RTL00Flasher.pas.zip
+r,s11263506,   rtl00MP3.zip
+r,s65538821,   sdk-ameba1-v3.4b3_without_NDA.zip
+r,s215032,     JLink.exe
+/,     Папка с длинным именем!
+/,     test12345678
+r,s0,  programmers.txt
226 Directory send OK.
ftp: 295 байт получено за 0,00 (сек) со скоростью 147,50 (КБ/сек)
-----
Всё - нашел.
https://files.stairways.com/other/ftp-list-specs-info.txt
В винде Проводник этот однопоточный ftp читает со скоростью:
<<PASV
Connection management set to passive
Data port set to 55600
227 Entering Passive Mode (192,168,1,151,217,48).
<<SIZE rtl00MP3.zip
213 11263506
<<RETR rtl00MP3.zip
Connecting in passive mode
Sending rtl00MP3.zip
150-Connected to port 55600
150 11263506 bytes to download
226-File successfully transferred
226 8034 ms, 1401 kbytes/s
Снимок1240.gif


Ну а раз помощи даже в нахождении формата нет, то выложу ftp только через месяц...
 
Последнее редактирование:

dev_n

New member
Все-таки слепил веб-сервер на netconn(поставил ограничения 8 потоков/клиентов одновременно). Спасибо pvvx за наводку по time_wait (очень помогло).
Еще не сделал поддержку multipart/form-data. Т.е ФС поддержки нет.
Это дикая альфа(код без попытки оптимизации). Для ознакомления могу выложить (или подождем нормального сервера от pvvx?)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Все-таки слепил веб-сервер на netconn(поставил ограничения 8 потоков/клиентов одновременно). Спасибо pvvx за наводку по time_wait (очень помогло).
Еще не сделал поддержку multipart/form-data. Т.е ФС поддержки нет.
Это дикая альфа(код без попытки оптимизации). Для ознакомления могу выложить (или подождем нормального сервера от pvvx?)
Любая программа ценна - выкладывайте где... Если интегрируется с rtlDuino, то могу помочь вставить.
В rtlDuino счас есть FTP-SD и работает бяка SPIFFS. К SPIFFS в Arduino есть примеры работы со всеми другими вариантами - spiffs там стандартный 100% совместимый с ESP8266.
Драйвер диска от Web-свалки + tcpsrv для RTL871x тоже кидал.
FTP-SD однопоточный, но по аналогии переделывается на C++ из FTP Server STM32 ChibiOs - что изменить уже дано в примере.
Мне просто физически не успеть всё собрать - требуется выяснение подхода - как делать Web. Подзадачей для основного потока или ... В общем много нерешенных концептуальных вопросов, а не технических. Arduino - это большая свалка нестыкующихся кусков. Чтобы собрать нормальную систему необходимо систематизировать все куски - привести к общей концепции и интерфейсу. Это задача не для одного...
 
Последнее редактирование:

dev_n

New member
Для ознакомления:
-нет поддержки multipart/form-data
-не корректно закрывается сервер(потоки)
-...
 

Вложения

pvvx

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

A_D

Active member
Не помогло, ставил 3000 и 2000.
Клон на stm32f101.
на фото видно, что программатор собран на stm32f101, а оригинальные или нормальные клоны собраны на stm32f103. Отличие у них в том, что у первого официально нет usb, по факту же есть, но его не тестируют и он может баговать. Вам возможно стоит перепаять на нужный МК и прошить его в старый ST-Link, а далее уже просто (обновить,да в j-link).
 

nkly

New member
JFlash работает, получилось слить fullflash с друго модуля и залить в этот.
 

nkly

New member
А можно, как-нибудь с помощью Jflash залить прошивку скомпилированую ардуиной?

Всё, разобрался. В Jflash надо открыть файл /rtl87xx/tools/ota.bin (это и есть скомпилированая прошивка) указать адрес 98063000 и прошить.
 
Последнее редактирование:

pvvx

Активный участник сообщества
А можно, как-нибудь с помощью Jflash залить прошивку скомпилированую ардуиной?

Всё, разобрался. В Jflash надо открыть файл /rtl87xx/tools/ota.bin (это и есть скомпилированая прошивка) указать адрес 98063000 и прошить.
Адрес не верный. Он от старой версии SDK, прошитого в ваш модуль и является индивидуальным - т.е. зависит от размера первой части.
В Arduino другие адреса основной и OTA прошивок. Как-бы стандартезировано - OTA - заливается в flash по адресу 0x80000. Загрузчик по нулю, а основная прошивка по 0xB000.
 

nkly

New member
Да, это адрес image2 из fullflash слитого с моего модуля.
Подскажите в чем может быть дело?На домашнем компе не работает загрузка в RAM. JLink IMG тоже не работала, но после заливки ota.bin с помощью JFlash эта функция заработала. Раньше при попытке загрузить в RAM модуль перезагружаться а теперь просто зависает.
 

pvvx

Активный участник сообщества
Да, это адрес image2 из fullflash слитого с моего модуля.
Подскажите в чем может быть дело?На домашнем компе не работает загрузка в RAM. JLink IMG тоже не работала, но после заливки ota.bin с помощью JFlash эта функция заработала. Раньше при попытке загрузить в RAM модуль перезагружаться а теперь просто зависает.
Я не знаю, что там у вас. У меня есть отладочные платки с STM32F103C8 - в них заливал разные прошивки Jlink, есть много STLink китайских на STM32F103C8 - покупал для своих прошивок, т.к. дешево и как-бы законченная вещь с выводами для вставки в USB - в них тоже заливал разные прошивки Jlink и проверял. Есть большой Jlink - в него не заливал ничего своего - он родной от SEGGER. Всё это работает.
Что было найдено - я вам уже написал. Некоторые варианты прошивок Jlink не работают на 4MHz SWD (с некоторыми вариантами программ) и пишут примерно то, что у вас на скриншоте. На 3900 - работают. Не уточнял причины - не вижу смысла, т.к. 3500 хватает. Может это связано с самим RTL8710AF. Нужны какие-то задержки в протоколе работы с ним по SWD. Там, где это не требуется - фирменный программатор работает и на выше частоте SWD.
При длинных проводах и неправильной разводке общего провода наблюдаются описываемые вами симптомы. Иногда запускается, иногда - нет. Сбоит передача данных по SWD. Но это называется - "кривые руки" по подключению адаптера или "кривые адаптеры из помойки" и рассматривать их тут не вижу смысла, а могу дать одну всего рекомендацию: Включите осциллограф и проверьте сигналы во время работы. Устраните неисправности.
 
Последнее редактирование:

nkly

New member
По full flash видно, что JLink IMG загружает ota.bin по адресу 0xb000, но стартует всё равно с 0x6300. С загрузчиком какие-то проблемы? Загрузка в RAM тоже не работает.
Может есть full flash с blink например, где всё на своих местах и загрузчик работает?
Arduino 1.6.4 может в этом дело?
---------
Еще есть stm32f0Discovery перешитая в JLink но почему-то связывается только с stm, что на плате, а с RTL не хочет. Пробовал разные версии Jflash.
 

pvvx

Активный участник сообщества
По full flash видно, что JLink IMG загружает ota.bin по адресу 0xb000, но стартует всё равно с 0x6300. С загрузчиком какие-то проблемы? Загрузка в RAM тоже не работает.
Возможно, что прошит такой загрузчик.
Вообше у текущих загрузчиков есть неопределенность. Из-за неё можно "убить" модуль, если нет Jtag. Связано как раз с переключением что грузить - OTA или основную прошивку (по 0xB000). Исходников загрузчика для исправления ситуации пока нет. Перелопачивать каждый раз при записи всю flash не правильный путь. Надо "чинить" загрузчик.
В новой версии RtlDuino поправлена загрузка OTA - корректируется адрес 0x80000 для OTA в области системных переменных (первое слово по адресу 0x9000 во Flash). Но это всё временная затычка пока нет исходников загрузчика...
 
Сверху Снизу