• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Arduino для RTL8710.

pvvx

Активный участник сообщества
Теперь все собирается. Без ssl:
CLK CPU 166666666 Hz
RAM heap 151040 bytes
TCM heap 27928 bytes
Либа lib_websocket.a от Амёб всё равно кривоватая. Она ключ неверный выдает - вроде не соответствует спецификации RFC. Обратный ответ ключа вообще не проверяет... Возможно позже перепишу с полными исходниками, т.к. всё равно надо ещё WebSocket server...
 

pvvx

Активный участник сообщества
Программирование модуля RTL00 из Arduino по WiFi.

1) Открываем пример “ota_basic.ino” или “ota_non_block.ino”. Исправляем “ssid” и “pass” на свой роутер или создаем папку “myAP” и в ней файл “myAP.h” в директории библиотек.
Код:
 #ifndef _MYAPCFG_H_
#define _MYAPCFG_H_

#define password pass

char ssid[] = "имя_роутера";  // your network SSID (name)
char pass[] = "пароль_на_роутере";  // your network password

#endif
После этого в любом примере комментируем “//” строки с ssid + pass и вставляем #include <myAP.h>
Меняем, если надо, порт I/O соединив который к GND (можно через 470 Ом) будет производиться загрузка OTA прошивки.
По умолчанию это PC_1.
Если не замкнут на gnd - загрузится описываемая программа обновления по OTA через WiFi.

2) В Arduino переключаем “Инструменты”->”Upload method”-> "JLink IMG" и транслируем с загрузкой.
3) После запуска примера в меню Arduino появиться “MyModuleIP”:
Снимок1213.gif

Теперь, после старта модуля его всегда возможно программировать из Arduino по WiFi через опцию “Инструменты”->”Upload method”-> "Network OTA".

При соединении назначенного для переключения пина (по умолчанию PC_1) на GND будет грузиться прошивка OTA, записанная из Arduino по WiFi за пару сек…
Без соединения - загрузится прошитый по описанию лоадер OTA по WiFi.
Лог лоадера:
Код:
=========================================================

ROM Version: 0.3

Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)

=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x3704, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
===== Enter Image 1 ====

load OLD fw 0
Flash Image2:Addr 0xb000, Len 263652, Load to SRAM 0x10006000
No Image3
Img2 Sign: RTKWin, InfaStart @ 0x10006049
===== Enter Image 2 ====
This is version 1

interface 0 is initialized
interface 1 is initialized

Initializing WIFI ...
WIFI initialized

RTL8195A[Driver]: set ssid [*******]
RTL8195A[Driver]: start auth to **:**:**:**:**:**
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=3)
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:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2

Interface 0 IP address : 192.168.1.151
Connected...
Pin1: PC_1
FlashInfo: 0xb000[0x405e4], 0x4b5f4[0x0], 0x80000
Wait for client
 
Последнее редактирование:

dev_n

New member
У меня чего-то не хочет программировать из под Arduino IDE. При выборе MyModule at xx.xx.xx.xx все равно запускает jlink, хотя если пытаюсь вручную-все ок.
upload_ota -i 192.168.6.117 -p 5000 -f ota.bin
file: ota.bin
ip: 192.168.6.117
port: 5000
Try to connect...
Send OTA info...
String uploading...
Upload success
rtl8710:
Interface 0 IP address : 192.168.6.117
Connected...
Pin1: PC_1
FlashInfo: 0xb000[0x40454], 0x4b464[0x0], 0x80000
Wait for client
Client connected. IP:192.168.6.108 port:2049

Read OTA info...
Start download 263288 bytes
=========================================================
 

Вложения

  • 120.1 KB Просмотры: 136
Последнее редактирование:

pvvx

Активный участник сообщества
Последнее редактирование:

dev_n

New member
Спасибо. Откинул jlink - работает.
Interface 0 IP address : 192.168.6.117
Connected...
Pin1: PC_1
FlashInfo: 0xb000[0x40454], 0x4b464[0x0], 0x80000
Wait for client
Client connected. IP:192.168.6.108 port:2609

Read OTA info...
Start download 263288 bytes
=========================================================
 

pvvx

Активный участник сообщества
Долепил выбор программирования модуля RTL00 через JTag или Сеть.
Теперь в этом меню выбирается:
RtlDuinoWrFlash.gif
  • JLink RAM - загрузка для теста в RAM
  • JLink IMG - запись в flash в область image2 (не OTA, с адреса Flash: 0xB000)
  • JLink OTA - запись в flash в OTA область (с адреса Flash: 0x80000)
  • Network OTA - загрузка в flash в OTA область через WiFi (до этого требуется прошить пример ota_basic.ino)
 

sharikov

Active member
Долепил выбор программирования модуля RTL00 через JTag или Сеть.
Теперь в этом меню выбирается:
Посмотреть вложение 2808
  • JLink ...
Прекрасно, только опенсорц не примет из-за проблем с лицензией на JLink.
Надо openocd или dap. Но поднять openocd в винде ардуинщики не смогут.
 

pvvx

Активный участник сообщества
Прекрасно, только опенсорц не примет из-за проблем с лицензией на JLink.
Там есть запись по WiFi :)
Для особых опенсорц: удалим Jtag. Модули приходят с AT и там есть OTA. По ней пусть и работают :)
Надо openocd или dap. Но поднять openocd в винде ардуинщики не смогут.
Это почему? С "openocd или dap" одна беда - эти интерфейсы = полные тормоза.
По SD и то быстрее. Пишу тут полный FTP:
Код:
-rwxrwxrw- 0 none   none   7473       2016-02-02 00:00:00 test.txt
-rwxrwxrw- 0 none   none   232226     2016-11-14 00:04:46 Arduino_RTL00MP3_lib.zip
-rwxrwxrw- 0 none   none   274380     2016-11-27 13:04:04 RTL00Flasher.pas.zip
-rwxrwxrw- 0 none   none   11263506   2016-10-26 20:36:58 rtl00MP3.zip
-rwxrwxrw- 0 none   none   65538821   2016-08-09 23:20:52 sdk-ameba1-v3.4b3_without_NDA.zip
drwxrwxrwx 0 none   none   0          2016-12-16 03:46:06 Папка с длинным именем!
Уж не знаю как ещё MS атрибуты преобразовать в Unix (?)...
 
Последнее редактирование:

sharikov

Active member
Там есть запись по WiFi :)
Для особых опенсорц: удалим Jtag. Модули приходят с AT и там есть OTA. По ней пусть и работают :)
Это почему? С "openocd или dap" одна беда - эти интерфейсы = полные тормоза.
Запись по wifi нужно как-то запустить а сделать это можно только по... jtag.
Убить OTA - раз плюнуть особенно если неумело писать во флэш пользовательские данные (настройки) или SPIFFS.
Может и тормоза, зато убитую прошивку всегда можно реанимировать.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Запись по wifi нужно как-то запустить а сделать это можно только по... jtag.
Убить OTA - раз плюнуть особенно если неумело писать во флэш пользовательские данные (настройки) или SPIFFS.
Может и тормоза, зато убитую прошивку всегда можно реанимировать.
C OTA проблем нет, если сделать описание. Так-же нет проблем с убиванием того, что не надо после спец. OTA прошивки. Китайцы зашьют, если кинуть... Будет читаться и писаться как ваш любимый ESP.
Только кому это всё надо? Побалуюсь с RTL - перейду к другим... Вы же всё равно ничего не дадите.

============

Что-то не вижу нормального WiFi файлового сервера с micro-SD. RTL8710 позволяет в предел своих 150Mbit/s гнать поток с SD. По тесту уже проверено, что со средних SD дает за 8Mbytes/s в себя. И это без оптимизации. Т.е. WiFi загрузит на полную. То, что есть на рынке WiFi-SD не выдерживает ни какой критики – ценник запредельный и никаких возможностей модификации. “Хакеры” - что-то там поковыряли, нашли куски линуха и бросили. Пора им подкинуть вариант за $2 да на Arduino:)

Первый попавшийся пример:

А вот с видео потоком могут быть проблемы, да и будет ли кто-то использовать гаджет именно для этого, при желании же есть возможность считывания файла через SD-карту или флешку на ТВ. Хотя и разработчики заявляют, что можно передавать поток между тремя пользователями, в реальности на одно устройство и только при нахождении рядом.

Оригинал обзора: Обзор и тесты ADATA AE400. Емкий PowerBank с функцией беспроводного картридера :)

Почти готово WiFi-micro-SD-Server+NFC. Размер 17 x 28 x 7 мм. Цена наверно от $3, если отдать китайцам. :) Но пока повременю - оставлю время на реализацию проекта другим...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Моя попытка адаптировать веб сервер ESP8266 под RTL8710.
А где к нему файловая система?
Сколько соединений он держит (?), если любой эксплоррер по обращению на 80-ый порт создает сразу (одновременно) пяток соединений, может и больше - зависит от контекста (вызываемых файлов в html странице...)
Через socket() не катит - слишком жручие эти socket-ы и не годятся для web-сервера на MCU с памятью до 1 мегабайта.
Для файловой системы web-сервера тоже есть требования - от 16 открытых одновременно файлов. Имеющийся в Ameba Arduino FatFS для SD тоже надо переписывать.
По этому не годится система от Ameba даже для слабого web-сервера на RTL8710 с 512 кило RAM...
Возможно позже кину другой вариант, но наверно без исходников - либой для RtlDuino...
А без исходников - дабы мотивировать создание нормального web-сервера другими. :)
А позже - по причине неготовности блока управления параметрами WiFi (парсера параметров WiFi для для данной системы...).
 
Последнее редактирование:

pvvx

Активный участник сообщества
@dev_n
Код:
#include <WiFi.h>
#include "WebRtl.h"
#include <myAP.h>

void setup() {
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) delay(100);
  printf("\nConnected\n");
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    printf("\nOpen new web-server...\n");
    WebRtl * wbsrv = new WebRtl(80);
    wbsrv->begin();
    delay(10000);
    printf("Close web-server...\n");
    wbsrv->close();
    delete wbsrv;
  } else delay(1000);
  sys_info();
}
Код:
Interface 0 IP address : 192.168.1.122
Connected

Open new web-server...
Close web-server...

CLK CPU         166666666 Hz
RAM heap        155056 bytes
TCM heap        27928 bytes

Open new web-server...

ERROR on binding
Close web-server...

CLK CPU         166666666 Hz
RAM heap        154576 bytes
TCM heap        27928 bytes
Куда далось 480 байт?
Кто такой "ERROR on binding" ?
 

pvvx

Активный участник сообщества
@dev_n Не закрывает порт.
Код:
--------------------------------------------- Open Web-server...
UDP pcbs:
flg:04  0.0.0.0:68      0.0.0.0:67      recv:0x100149f5
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x1001524d
Active PCB states:
none
Listen PCB states:
none
TIME-WAIT PCB states:
none

--------------------------------------------- Close Web-server...
UDP pcbs:
flg:04  0.0.0.0:68      0.0.0.0:67      recv:0x100149f5
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x1001524d
Active PCB states:
none
Listen PCB states:
Port 80|65528   flg:06  tmr:0x0 LISTEN
TIME-WAIT PCB states:
none

--------------------------------------------- Web-server closed...
UDP pcbs:
flg:04  0.0.0.0:68      0.0.0.0:67      recv:0x100149f5
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x1001524d
Active PCB states:
none
Listen PCB states:
Port 80|65528   flg:06  tmr:0x0 LISTEN
TIME-WAIT PCB states:
none

--------------------------------------------- New Open web-server...
UDP pcbs:
flg:04  0.0.0.0:68      0.0.0.0:67      recv:0x100149f5
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x1001524d
Active PCB states:
none
Listen PCB states:
Port 80|65528   flg:06  tmr:0x0 LISTEN
TIME-WAIT PCB states:
none

ERROR on binding
Код:
#include <debug.h>
....
    printf("\n---------------------------------------------Close web-server...\n");
    print_udp_pcb();
    print_tcp_pcb();
....
add LwIP debug-info · pvvx/RtlDuino@2f4be02 · GitHub
 
Последнее редактирование:

dev_n

New member
Добавил в ардуиновские либы закрытие сокета.
Код:
CLK CPU        166666666 Hz
RAM heap    155280 bytes
TCM heap    27928 bytes


Open new web-server...

Close web-server...

SOCK CLOSE:0
SOCK CLOSE:4
SOCK CLOSE:0


CLK CPU        166666666 Hz
RAM heap    155280 bytes
TCM heap    27928 bytes

Open new web-server...

Close web-server...

SOCK CLOSE:0
SOCK CLOSE:4
SOCK CLOSE:0

CLK CPU        166666666 Hz
RAM heap    155280 bytes
TCM heap    27928 bytes
 

Вложения

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

pvvx

Активный участник сообщества
Добавил в ардуиновские либы закрытие сокета.
Я быстрее. fix delete sockeds · pvvx/RtlDuino@defeca4 · GitHub :)
И уже проверил.
Теперь и так пашет:
Код:
WebRtl * wbsrv = new WebRtl(80);
    wbsrv->begin();
    delay(30000);
    delete wbsrv;
Простой пример то работы с ним дайте... а то ничего не пашет - порт 80 открывается и всё...
 

dev_n

New member
@pvvx Может имеет смысл добавить в server_drv.cpp метод stopServer?
Код:
void ServerDrv::stopServer(int sock)
{
      stop_socket(sock);
}
 

pvvx

Активный участник сообщества
Эти примеры пойдут? Arduino/libraries/ESP8266WebServer/examples at master · esp8266/Arduino · GitHub
Надо шапку вернуть... и дописать "Modified 12/2016 RTL871x dev_n". А то Ivan Grokhotkov обидеться :) У них же это "сурьезная" игра :) Но я в их шапке не нашел списка, кто учил их читать, писать, ходить и т.д. :( И под какой лицензией?
 
Последнее редактирование:

dev_n

New member
Нужны минимальные правки.
+ еще не адаптировал файловую систему.
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebRtl.h>
//#include <ESP8266mDNS.h>

char *ssid = "xxx";
char *password = "xxxxxxxx";

WebRtl server ( 80 );

const int led = 13;

void handleRoot() {
digitalWrite ( led, 1 );
char temp[400];
int sec = millis() / 1000;
int min = sec / 60;
int hr = min / 60;

snprintf ( temp, 400,

"<html>\
<head>\
<meta http-equiv='refresh' content='5'/>\
<title>ESP8266 Demo</title>\
<style>\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
</style>\
</head>\
<body>\
<h1>Hello from ESP8266!</h1>\
<p>Uptime: %02d:%02d:%02d</p>\
<img src=\"/test.svg\" />\
</body>\
</html>",

hr, min % 60, sec % 60
);
server.send ( 200, "text/html", temp );
digitalWrite ( led, 0 );
}

void handleNotFound() {
digitalWrite ( led, 1 );
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += ( server.method() == HTTP_GET ) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";

for ( uint8_t i = 0; i < server.args(); i++ ) {
message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n";
}

server.send ( 404, "text/plain", message );
digitalWrite ( led, 0 );
}

void setup ( void ) {
pinMode ( led, OUTPUT );
digitalWrite ( led, 0 );
Serial.begin ( 115200 );
WiFi.begin ( ssid, password );
Serial.println ( "" );

// Wait for connection
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}

Serial.println ( "" );
Serial.print ( "Connected to " );
Serial.println ( ssid );
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );

// if ( MDNS.begin ( "esp8266" ) ) {
// Serial.println ( "MDNS responder started" );
// }

server.on ( "/", handleRoot );
server.on ( "/test.svg", drawGraph );
server.on ( "/inline", []() {
server.send ( 200, "text/plain", "this works as well" );
} );
server.onNotFound ( handleNotFound );
server.begin();
Serial.println ( "HTTP server started" );
}

void loop ( void ) {
server.handleClient();
}

void drawGraph() {
String out = "";
char temp[100];
out += "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"400\" height=\"150\">\n";
out += "<rect width=\"400\" height=\"150\" fill=\"rgb(250, 230, 210)\" stroke-width=\"1\" stroke=\"rgb(0, 0, 0)\" />\n";
out += "<g stroke=\"black\">\n";
int y = rand() % 130;
for (int x = 10; x < 390; x+= 10) {
int y2 = rand() % 130;
sprintf(temp, "<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" stroke-width=\"1\" />\n", x, 140 - y, x + 10, 140 - y2);
out += temp;
y = y2;
}
out += "</g>\n</svg>\n";

server.send ( 200, "image/svg+xml", out);
}
 

pvvx

Активный участник сообщества
> еще не адаптировал файловую систему.
Только Spiffs не надо - где нибудь в другой теме про него, если хотите... :) Хуже FS spiffs в жизни не встречал...

Serial.begin(38400) стоит для совместимости с Амёбой. Там вроде USB-DAP на контроллере и скорость не переключает... Но точно не изучал данную поделку Амёбы, т.к. всё равно оно тормоз и не годиться для нормальной отладки и прошивки модулей...
Может "портировать" ESPUSB Community Project ? Какое-то шевеление там ещё идет
 
Последнее редактирование:
Сверху Снизу