• Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу