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

Arduino для RTL8710.

sharikov

Active member
А у меня чего то не идет... Arduino IDE 1.6.5. На всех примерах ошибки компиляции.
У меня так же:

Код:
Arduino: 1.6.12 (Windows 7), Board: "Ameba RTL8710"

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c: In function 'HalI2COpInit_Patch':

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c:179:37: error: 'HalI2CMassSendRtl8195a_Patch' undeclared (first use in this function)

     pHalI2COp->HalI2CMassSend   =   HalI2CMassSendRtl8195a_Patch;

                                     ^

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c:179:37: note: each undeclared identifier is reported only once for each function it appears in

exit status 1
Error compiling for board Ameba RTL8710.
 

pvvx

Активный участник сообщества
У меня так же:

Код:
Arduino: 1.6.12 (Windows 7), Board: "Ameba RTL8710"

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c: In function 'HalI2COpInit_Patch':

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c:179:37: error: 'HalI2CMassSendRtl8195a_Patch' undeclared (first use in this function)

     pHalI2COp->HalI2CMassSend   =   HalI2CMassSendRtl8195a_Patch;

                                     ^

C:\Users\*******\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\cores\arduino\hal_i2c.c:179:37: note: each undeclared identifier is reported only once for each function it appears in

exit status 1
Error compiling for board Ameba RTL8710.
Наверно надо полную копию всех файлов для Arduno сделать. Но это выходит большой архив и куда его кидать, чтобы он грузился автоматом из меню Arduino? Я не в курсе с лицензиями для Arduino.
Могу дать копию всех файлов (архив 128Mb) из C:\Users\USER_NAME\AppData\Local\Arduino15\packages\realtek
arduino_realtek.zip
Прикалывает наличие в Ameba Arduino множества файлов с заголовками:
Код:
/*
*  Copyright (c) 2013 Realtek Semiconductor Corp.
*
*  This module is a confidential and proprietary property of RealTek and
*  possession or use of this module requires written permission of RealTek.
*/
И отсутствие файла LICENSE.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Под линуксом не ставится.
Boards manager ругается "Tool ameba_tools is not available for your operating system"
Пользователи Линукс и Маков пока обделены.
Я не собираюсь один городить полную поддержку Arduino под модули RTL00.
Так, потестировать и всё. Существует масса желающих осуществлять поддержку Arduino и вписать свой (c) - пусть они и занимаются.
 

sharikov

Active member
Наверно надо полную копию всех файлов для Arduno сделать.
...
Могу дать копию всех файлов (архив 128Mb) из C:\Users\USER_NAME\AppData\Local\Arduino15\packages\realtek
Ваша копия компилируется, скетч заливается и работает.
timer_oneshot.ino
Код:
CLK CPU        166666666 Hz
RAM heap    421584 bytes
TCM heap    64768 bytes
I am timer 0
I am timer 1
I am timer 2
I am timer 3
I am timer 4
Как в этой ардуине работают вообще?
У меня после эклипса культурный шок от отсутствия "Open declaration" , "Open call hierarchy". Даже убогий редактор iar и то лучше.
 
Последнее редактирование:

Юрий Ботов

Moderator
Команда форума
Не пошло.
Код:
Arduino: 1.6.5 (Windows 8.1), Плата"Ameba RTL8195A"

arm-none-eabi-gcc: error: z:\Temp\build7798133079160539330.tmp/core.a: No such file or directory
Ошибка компиляции.

  Это сообщение будет содержать больше информации чем
  "Отображать вывод во время компиляции"
  включено в Файл > Настройки
Такой путь действительно есть и там явно то что туда кинула амеба... но core.a там нету
 

pvvx

Активный участник сообщества
Как в этой ардуине работают вообще?
У меня после эклипса культурный шок от отсутствия "Open declaration" , "Open call hierarchy". Даже убогий редактор iar и то лучше.
Там есть возможность запустить Visual Studio, и, поковыряв её, можно вписать запуск программирования чипа. Остальное всё от Дурины в Visual Studio работает. Это самое простое, как убежать от амбразуры-редактора Дурины.
Arduino IDE for Visual Studio - Visual Studio Marketplace
Как установить лучше смотреть на Arduino.cc...
 

pvvx

Активный участник сообщества
Не пошло.
....
Такой путь действительно есть и там явно то что туда кинула амеба... но core.a там нету
Я знаю только то, что если не указать в Arduino:
Снимок25.gif
То не будет выбора платы RTL8710
Снимок26.gif
Надо складывать всё в доступное место и инициализацию Arduino делать через https package_realtek.com_ameba_index.json.
Но делать полный дистрибутив и поддерживать его я не берусь.

--------
Слепил для Дурины чтение по любому HTTPS и распаковку любой PNG (которая лезет в мой экран :) ):
Meteo_spb.jpg
(Там подпись на плате не верна - 128x160)
Самому рисовать картинки лень. :) Проще ковыряться в Huffman Tree... У ESP8266 не хватает RAM на это. За основу взято YSFLIGHT.COM - PNG Encoder / Decoder in C++
Картинку перечитывает из Информер погоды для вашего сайта — Яндекс.Погода
Исходники Классов для Дурины под это пока сыроваты (грязи много :) ) - если почищу, то может кину куда...
 
Последнее редактирование:

Юрий Ботов

Moderator
Команда форума
Но делать полный дистрибутив и поддерживать его я не берусь.
Никто и не тербует :) просто у меня какая-то странная штука: все вроде встало, запускается... создает в Temp свой каталог для данного билда, закидывает туда кучу всего (*.o и т.п.) потом почему -то ищет там (в Temp) core.a, не находит его и ругается. У меня есть один прикол, которого обычно никто не делает: свап и темп перенаправлены на отдельный небольшой SSD (64Гб). Это резко увеличивает скорость работы всей винды, а когда ссдишка помрэ - ее не особо и жалко: полезных данных на ней нет. Я так полагаю что у меня проблема с путями, кто то (или дуина или sdk) где-то напрямую пишет в стандартную (с ее точки зрения) temp директорию не пользуясь виндовыми TEMP/TMP системными путями которые я перенаправил. Будем посмотреть.
 

Юрий Ботов

Moderator
Команда форума
Оказалось что Arduino15 у меня есть и в Local и в Roaming причем реально работает копия из Roaming. Скопировал. Нет эффекта. Ищет core.a

К PVVX: там в SDK что исполняет роль make? Обычных makefile не вижу...
 

pvvx

Активный участник сообщества
Оказалось что Arduino15 у меня есть и в Local и в Roaming причем реально работает копия из Roaming. Скопировал. Нет эффекта. Ищет core.a

К PVVX: там в SDK что исполняет роль make? Обычных makefile не вижу...
Описывается в platform.txt (и boards.txt).
Находятся в C:\Users\USER_NAME\AppData\Local\Arduino15\packages\realtek\hardware\ameba\1.1.4\
Для ESP8266 и других - аналогично:
C:\Users\USER_NAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\platform.txt
 

pvvx

Активный участник сообщества
Наблюдаю какие-то нелады с "new" и "delete" в SDK под Arduino.
Виснет без каких либо указаний, например в итеррации
Код:
void YsPngHuffmanTree::DeleteHuffmanTree(YsPngHuffmanTree *node)
{
    if(node!=NULL)
    {
        DeleteHuffmanTree(node->zero);
        DeleteHuffmanTree(node->one);
        delete node;
    }
}
Стек на задачу давал и 128 килобайт (без вызова WiFi на RTL00 свободно до 450 кило heap).
При замене [inline]delete node;[/inline] на [inline]vPortFree(node);[/inline] (и аналогичных [inline]ptr->one=new YsPngHuffmanTree;[/inline] на [inline]ptr->one= (YsPngHuffmanTree *) zalloc(sizeof(YsPngHuffmanTree));[/inline] всё успешно...
 

Юрий Ботов

Moderator
Команда форума
После замены соответствующего пункта в platform.txt на такой:

## Create archives
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/core.a" "{object_file}"

я наконец-то смог откомпилировать пустой проект! Уря.
Пустой проект занимает (как утверждает компилятор) 27 килобайт из 370... Ну понятно... FreeRtos... Но как то многовато :) на первый взгляд для пустого проекта.
 

pvvx

Активный участник сообщества
Пустой проект занимает (как утверждает компилятор) 27 килобайт из 370... Ну понятно... FreeRtos... Но как то многовато :) на первый взгляд для пустого проекта.
Там не только RTOS. Ещё Arduina - её иниты и т.д..
И число 370 - это я вписал на обум в platform.txt, чтобы оставался достаточный heap. :)
И осторожней с последовательностью линковки (передаче параметров кто первый, кто последний линковщику)... Могут не пройти патчи из cores\arduino . Дубли функций сидят в либах...
В чем беда - памяти то достаточно:
Код:
===== Enter Image 1.5 ====
Img2 Sign: RTKWin, InfaStart @ 0x1000604d
===== Enter Image 2 ====

CLK CPU         166666666 Hz
RAM heap        384248 bytes
TCM heap        64768 bytes
Initialized
ST7735 TFT Test fill time 21 ms
PNG: 120x156, 6, 8
ST7735 TFT Test show png time 303 ms

CLK CPU         166666666 Hz
RAM heap        365088 bytes
TCM heap        64768 bytes
С этим:
 

Вложения

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

A_D

Active member
Небольшой вопрос, а если нет COM порта в системе, но подключен J-Link - прошиваться не будет ? (его просто по SWD подключаем, UART нужен только для отладки ведь..)
В дуине все компилируеться, но при попытке "загрузить" прошивку высвечивает так:
Код:
Скетч использует 32 326 байт (8%) памяти устройства. Всего доступно 372 736 байт.
‘Ёб⥬Ґ Ґ г¤ Ґвбп  ©вЁ гЄ § л© ¤ЁбЄ.
А если выбрать пункт "Загрузить через программатор", то так:
Код:
Скетч использует 32 326 байт (8%) памяти устройства. Всего доступно 372 736 байт.
java.lang.NullPointerException
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingProgrammer(SerialUploader.java:313)
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:88)
    at cc.arduino.UploaderUtils.upload(UploaderUtils.java:78)
    at processing.app.SketchController.upload(SketchController.java:707)
    at processing.app.SketchController.exportApplet(SketchController.java:680)
    at processing.app.Editor$DefaultExportAppHandler.run(Editor.java:2273)
    at java.lang.Thread.run(Thread.java:745)
пути к jlink.exe указаны верно.
Похожая проблема и с расширением для Visual Studio - ставиться, компилируется, но при попытке прошить:
Код:
...
Program size: 27 376 bytes (used 7% of a 372 736 byte maximum) (0,64 secs)
Upload requires a serial port or programmer. Upload cancelled.
причём в настройках программатора не видит (что логично, ибо в programmers.txt пусто, можно конечно там прописать jlink \ stlink, его можно выбрать потом, но выбор порта для прошивки всё равно пустой и в итоге ничего не меняется), а опцию для прошивки вроде как находит, но не использует всё-равно..

В чем мой промах, не подскажете ?
 

pvvx

Активный участник сообщества
причём в настройках программатора не видит (что логично, ибо в programmers.txt пусто, можно конечно там прописать jlink \ stlink, его можно выбрать потом, но выбор порта для прошивки всё равно пустой и в итоге ничего не меняется), а опцию для прошивки вроде как находит, но не использует всё-равно..

В чем мой промах, не подскажете ?
Я не делал к Arduino прошивки flash. Сейчас скомпилированная программа сразу загружается в RAM RTL через JTAG и запускается. Для прошивки мне проще записать C:\Users\USER_NAME\AppData\Local\Arduino15\packages\realtek\tools\ameba_tools\1.0.7\ram_all.bin программатором.
И Arduina ещё не отлажена. Только счас туда вписал поддержку new/delete и прочей фигни для cpp. Ещё не выкладывал и надо ещё много чего там накрутить... Так что торопиться некуда :) Перевел в динамический режим LwIP по памяти - выходит больше Heap при клиенте ssl. Уже можно ставить на предел возможности либ mbed TSL (PolarSSL) буфера для одного активного клиента... Ну и т.д.
Оф. Ameba чего-то не шевелиться, а я не нанимался работать за них :)
У них есть оф. сайт :) А тут просто тест, "что тама творится в RTL-ах и каковы примерные возможности". Кароче в стадии исследования, а не оказания помощи пользователям.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Сейчас, с SSL (либа mbedTCL-PolarSSL) на RTL00 выходит примерно такой расклад при SSL_MAX_CONTENT_LEN = 16384 :
Код:
#include <WiFi.h>
#include <myAP.h>
//char ssid[] = "yourNetwork"; //  your network SSID (name)
//char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

char server[] = "www.google.ru";    // name address for Google (using DNS)
//unsigned char test_client_key[] = "";   //For the usage of verifying client
//unsigned char test_client_cert[] = "";  //For the usage of verifying client
//unsigned char test_ca_cert[] = "";      //For the usage of verifying server

WiFiSSLClient client;
/* if ssl_handshake returned -0x7200 ->
SSL_MAX_CONTENT_LEN to sufficient size (maximum value is 16384).
default value 4096. */
extern "C" unsigned int mfl_code_to_length[]; // mfl_code_to_length[0] = SSL_MAX_CONTENT_LEN

void setup() {
  mfl_code_to_length[0] = 16384; // = предельный SSL_MAX_CONTENT_LEN = 16384
  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.println("Attempting to connect to SSID");
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid,pass);
    // wait 0.1 seconds for connection:
    delay(100);
  }
  Serial.println("\r\nConnected to wifi");

  Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  if (client.connect(server, 443)) { //client.connect(server, 443, test_ca_cert, test_client_cert, test_client_key)
    Serial.println("connected to server");
    // Make a HTTP request:
    client.println("GET /search?q=realtek HTTP/1.0");
    client.print("Host: "); client.println(server); //    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  }
  else
  Serial.println("connected to server failed");
}

void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them:
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();
    sys_info();
    // do nothing forevermore:
    while (true);
  }
}

Код:
===== Enter Image 1.5 ====
Img2 Sign: RTKWin, InfaStart @ 0x1000604d
===== Enter Image 2 ====

CLK CPU         166666666 Hz
RAM heap        108480 bytes <--- стартовая информация,
TCM heap        64768 bytes  <--- до инициализации Arduino
Attempting to connect to SSID
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=2)
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.122
Connected to wifi

Starting connection to server...
connected to server
HTTP/1.0 200 OK
Date: Sat, 19 Nov 2016 17:37:31 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=windows-1251
P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: NID=91=OIkIBZYQGILjviVrD81ka77ofSN1kOUbRjPBt-nOizzWT7YqoWwRumOA79vYzIhTT91vqTYBsNWJIUjm34_ENXuVp5lr7tO8k2n2-wqOsY7E-bbCOJo_8kbzCuLdtA7k; expires=Sun, 21-May-2017 17:37:31 GMT; path=/; domain=.google.ru; HttpOnly
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34"
Accept-Ranges: none
Vary: Accept-Encoding

<!doctype html><html itemscop
....
<---- далее тут идет код html страницы на 81 килобайт. --->
....
</script></body></html>
disconnecting from server.

CLK CPU         166666666 Hz
RAM heap        76504 bytes <--- Итого:
TCM heap        27928 bytes <--- по завершению ssl-клиента
Выглядит это так:
Снимок3.gif
Надо ещё ужимать или дождаться RTL8711AM.
TFT либа с разверткой картинок PNG (типа банеров) с HTTPS сайтов влазит и остается место. Но у меня подключен маленький экранчик к RTL00 - У него весь буфер то на 40 килобайт (128x160x2)...

PS: Google - как одному из самых прожорливых, с имеющимися ключами, хватает и SSL_MAX_CONTENT_LEN = 12 кило, а это ещё всегда идет в двойне (т.е. там выходит два буфера с доп.разметками - общим весом за 30 кило только на них...).
 
Последнее редактирование:

A_D

Active member
Я не делал к Arduino прошивки flash. Сейчас скомпилированная программа сразу загружается в RAM RTL через JTAG и запускается. Для прошивки мне проще записать C:\Users\USER_NAME\AppData\Local\Arduino15\packages\realtek\tools\ameba_tools\1.0.7\ram_all.bin программатором.
мм, видимо у меня что то не так, я если нажимаю скомпилировать в дуине - она просто компилирует и всё, больше никаких сообщений или заливки прошивки в RAM.
 
Сверху Снизу