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

Arduino для RTL8710.

pvvx

Активный участник сообщества
Вот с этим там как раз и проблема, пока не скомпилируешь проект, многие вещи подсветки и почти все плюшки IntelliSense не работают - VS просто не видит исходников ардуиновских\SDK до их компиляции и в итоге пишешь код вначале вслепую. компилируешь и уже потом можно продолжить :) еще фишка - новые файлы, подключаемые с #inlude "___" VS до компиляции подсвечивает как ошибку - типа не нашла (нажимаешь скомпилировать проект - находит! ;) ).
Вот и потому и спрашивал - мало ли.. может пробовали visualgdb прикрутить - там таких болячек не должно быть... (ну и С без плюсов как то роднее.... хотя есть парадокс в этом плане у меня - проги для ПК люблю на C#\WPF писать :) )
Что-то не заметил того, что пишите:
Открыл "Примеры" - ткнул копировать - получил проект и там сразу:
Снимок1162.gif
Стоит VS2015.
 

pvvx

Активный участник сообщества
Зайду с другой стороны. В ртл можно получить доступ к файлам на внутренней флэш из браузера? Можно выполнять из - браузера же операции над файлами (копирование редактирование... есть же FREE RTOS) ?
В AVR из-за нехватки RAM часть переменных приходилось хранить в PROGMEM. В ртл RAM полно - выходит PROGMEM нафиг не нужна?
В RTL "PROGMEM" нет вообще. В MSDOS где "PROGMEM"?
 

Pilnikov

Active member
Как сохранить настройки (те же имя сети / пароль) на флэш для дальнейшего использования?
 

A_D

Active member
Что-то не заметил того, что пишите:
Открыл "Примеры" - ткнул копировать - получил проект и там сразу:
Посмотреть вложение 3085
Стоит VS2015.
Хм, интересно. Я же всегда новый проект создавал, пустой и у меня подобные приколы вылезали.. тоже VS2015 Community sp3 использую.
 

pvvx

Активный участник сообщества
Как сохранить настройки (те же имя сети / пароль) на флэш для дальнейшего использования?
Обратитесь к литературе в инет. Изучите разные конфигурации, модели API и прочее. Тогда и приходите. Вам пока рано играть в Arduino.
 

pvvx

Активный участник сообщества
Хм, интересно. Я же всегда новый проект создавал, пустой и у меня подобные приколы вылезали.. тоже VS2015 Community sp3 использую.
Наверно она цепляет то, что используется в *.ino...
Снимок1164.gif Снимок1165.gif
Да вроде и нет :) :rolleyes:
 
Последнее редактирование:

Pilnikov

Active member
Обратитесь к литературе в инет. Изучите разные конфигурации, модели API и прочее. Тогда и приходите. Вам пока рано играть в Arduino.
Придется ждать.
В native Arduino существует куча примеров с нормальным объяснением "чего и как" поэтому его и юзают куча юзверей. А тут ... - сразу "рано"
 

pvvx

Активный участник сообщества
В windows - файл pagefile.sys - чем не PROGMEM?
Это swap. Доступ к нему через файловую систему...
Где в 76РК "PROGMEM"?
И здесь тема не для обучения понятий простейшего SoC и прочих структур - здесь тема про разработку RtlDuino. Типа что и как всунуть ещё в неё "с помощью зала".
Обучение Arduino ищите на сайте Arduino - Home и там есть форум.
 

dev_n

New member

pvvx

Активный участник сообщества
Придется ждать.
В native Arduino существует куча примеров с нормальным объяснением "чего и как" поэтому его и юзают куча юзверей. А тут ... - сразу "рано"
Могу объяснить. Есть примеры. У меня знакомые работают и с Siemens и с другими ПЛК. Но вот взяли ESP8266 и не могут запустить в Arduino для ESP8266. Сначала пробовали просто примеры. Потом полезли в инет и стали тупо повторять что там показывают по ютубе. В итоге не работает. Эта куча "юзверей" наплодила кучу всякой всячины, а за время и Arduino сменилось. :) В итоге нет ничего вечного и старое не подходит. Да и умер уже ESP8266 и скоро его концепции тоже умрут.
 

Pilnikov

Active member
В итоге не работает.
А у меня работает. Пускай с огрехами, но для домашнего пользования вполне сносно. Причем с довольно широкой номенклатурой периферии. И многие вещи удалось сделать именно из-за наличия встроенного WiFi, большего, чем у ATMEGA2560 ОЗУ и потому, что
Есть дремучая Spiffs
Но мне тупо стало не хватать GPIO. И иногда RAM. Поэтому я и стал смотреть в сторону RTL.
 

alex78

New member
Часто встречаю проблемы с swd на самодельных платах.
На одной например, если плата запитана от борт сети авто, swd не поднимается вообще, приходится плясать с питанием....
На другой при включении шим силовой части, тоже часто вырубает отладку. А есть платы где все летает.
Вообщем что хотел посоветовать, 22 ома резисторы на io линию и клок, также кондер 100 пф на клок. Часто помогает такой шнурок, на проблемных платах, обычно не длинней 15-20 см, юсб удлинитель 5м выручает )
Такого номинала под рукой не было, но вот что сделал: доростил провода от программатора.. в раза увеличил. и все заработало без всяких питаний по юсб. да еще и как заработало! на 4мгц.
SEGGER J-Link Commander V4.90 ('?' for help)
Compiled Jul 28 2014 10:35:28
Info: Device "CORTEX-M3" selected (0 KB flash, 0 KB RAM).
DLL version V4.90, compiled Jul 28 2014 10:35:20
Firmware: J-Link STLink V2 compiled Dec 21 2016 15:10:22
Hardware: V1.00
S/N: 735682578
VTarget = 3.300V
Info: Found SWD-DP with ID 0x4BA01477
Info: Found Cortex-M3 r2p1, Little endian.
Info: FPUnit: 6 code (BP) slots and 2 literal slots
Info: TPIU fitted.
Info: ETM fitted.
Found 1 JTAG device, Total IRLen = 4:
Cortex-M3 identified.
Target interface speed: 4000 kHz
J-Link>h
PC = 10012A08, CycleCnt = 2481EE21
R0 = 00001815, R1 = A5A5A5A5, R2 = 0001E848, R3 = 000F4240
R4 = 00001F40, R5 = 029F1841, R6 = 00000000, R7 = A5A5A5A5
R8 = 00000008, R9 = 40233333, R10= 437F0000, R11= A5A5A5A5
R12= 0000008B
SP(R13)= 10063EB0, MSP= 1FFFFFD8, PSP= 10063EB0, R14(LR) = 10045915
XPSR = 81000000: APSR = Nzcvq, EPSR = 01000000, IPSR = 000 (NoException)
CFBP = 02000000, CONTROL = 02, FAULTMASK = 00, BASEPRI = 00, PRIMASK = 00
J-Link>s
10012A08: 80 B5 PUSH {R7,LR}

Убрал провода - снова не видит target даже на 4гкц. Уверен что китайцы впаяли не тот номинал резистора на выходах программатора. или впаяли бракованный резюк. или клякса. как эта хрень разбирается?

upd: разобрал.... там все красиво: 22 ома на на каждую шину. резисторная сборка. номиналы в порядке. палата зеленая.
 
Последнее редактирование:

KomX

Member
доростил провода от программатора.. в раза увеличил. и все заработало без всяких питаний по юсб. да еще и как заработало! на 4мгц.
Вчера получил вот такой набор модулей STLink V2+, перепрошил в JLink и столкнулся с аналогичной проблемой. Частично проблема разрешилась применением DC\DC преобразователя (5->3.3), но при скорости выше 100кГц данные принимаются нестабильно. У Вас, судя по A5A5A5A5 в регистрах, аналогичная картина.

Поскольку, начинаю осваивать стезю RTL87xx (модуль с левой прошивкой), возникла насущная необходимость в информации "for Dummies".
Нет ли где на просторах форума пошаговых инструкций как, например, прошивать модули (JFlash хочет какую-то лицензию, Flasher для RTL00 c JlinkARM.dll ругается на отсутствие этой dll-ки, а при её добавлении ещё кучу месседжей выводит).
Одним словом, информации для начинающих осваивать совершенно незнакомое "железо" катастрофически мало. Отсюда и нет никакой помощи pvvx.
 

pvvx

Активный участник сообщества
Одним словом, информации для начинающих осваивать совершенно незнакомое "железо" катастрофически мало. Отсюда и нет никакой помощи pvvx.
И не будет "помощи". У меня другие задачи.
Разобраться с описанными вами простыми проблемами может любой начинающий. То, что нет инструкций для "телепузиков" проблема самих "телепузиков". Если они не желают помогать друг другу - то я то тут при чем? Техническая информация для следующего шага им выложена, а менять общество - не моя задача. :p
 

pvvx

Активный участник сообщества
Такого номинала под рукой не было, но вот что сделал: доростил провода от программатора.. в раза увеличил. и все заработало без всяких питаний по юсб. да еще и как заработало! на 4мгц.
На 4MHz старт соединения по SWD с RTL не обязан работать. В момент соединения в CPU может быть снижен CLK. В SDK применено много энергопонижающих решений и CLK CPU и периферии переключается при неактивности. По этому старт соединения надо производить к примеру на 400 кГц и только после сброса SoC уже переходить на 4MHz или выше.
Так что не китайцы и не длина провода (или глупости с припаиванием резисторов и кондеров) тут виноваты. :p
Больше всего сказывается криворукость по соединениям общих (GND) проводов и не соблюдение нормативов питаний. На это можно смело дать 99%. Остальное - это уже качество Jtag/SWD адаптера. Я не думаю, что вы попали в тот процент, что неисправен Jtag/SWD адаптер или модуль RTL00.

Чтобы исключить другие варианты, связанные с отключенным Jtag итерфейса в модуле, необходимо кому-то переписать код, заливаемый в STLink - вывести на разъем 5-ть сигналов: SWD, RX-TX(VCOM), RESET. Это уже может сделать любой студент – исходники и загрузчики Jlink в инете есть. Тем более SEGGER ведет политику по захвату рынка (и IoT особенно(!)) для продажи своего ПО и решений ОЕМ адаптеров крупным производителям с получением процентов с каждого произведенного устройства. Интерфейс SWD может стать стандартом для “холодильников” и прочего хлама с MCU. Вас и кухонного уровня это не касается, но данный контингент дает дополнительную рекламу и запрещать баловаться SEGGER не будет. Не те времена и не те ставки. :p Jlink OB от SEGGER стоит 10 центов в больших партиях. :p
Всякие CMIS-DAP и прочий хлам отладчиков и перепрошивальщиков для среднему хламу устройств давно переплюнут SEGGER со своими JLink...
Т.е. если вы лепите некоммерческую фигню – это не запрещено в лицензии SEGGER.
Так-же уже давно выложены все доки, вплоть до RM08001_JLinkUSBProtocol.pdf, а то, что "детки" не могут всё освоить - не моё дело :)
Из дока RM08001_JLinkUSBProtocol.pdf (2010 год):
2.1.1 Что вы можете сделать
Вы можете использовать информацию, содержащуюся в данном документе, чтобы добавить поддержку для широкого распространения SEGGER J-Link ARM эмулятора и версии OEM в программном обеспечении с открытым исходным кодом.

2.1.2 Что вы не можете сделать
Вам не разрешается использовать информацию, содержащуюся в данном документе,
· чтобы построить J-Link клонов
· чтобы построить J-Link совместимых эмуляторов
 
Последнее редактирование:
  • Like
Реакции: KomX

pvvx

Активный участник сообщества
Вопрос по теме - а Вы пробовали с использованием visualgdb для Visual Studio делать прошивку для RTL871x ?
Попробовал - собралось без проблем.
Что ему не собраться-то, если он собирается одной командой из командной строки: [inline]mingw32-make.exe -s[/inline] ? :confused:
Снимок1168.gif
И если да - то, можете пожалуйста написать кратчайшую инструкцию что и как делать, что бы скомпилировать хотя бы минимальный проект с Вашим вариантом SDK ? (я пробовал, скачал arm-none-eabi-gcc, но вот с его настройками, флагами запутался и в итоге как то не вышло...)
Кратчайшая инструкция, но делать последовательно(!):
1) купить VisualGDB
2)Запустить в нем [inline]mingw32-make.exe -s[/inline] :)
---
С Arduino отладка с J-link тоже в нем работает:
Снимок1167.gif
Только вот исходников у в Arduino нет.
 

A_D

Active member
Попробовал - собралось без проблем.
Что ему не собраться-то, если он собирается одной командой из командной строки: [inline]mingw32-make.exe -s[/inline] ? :confused:

Кратчайшая инструкция, но делать последовательно(!):
1) купить VisualGDB
2)Запустить в нем [inline]mingw32-make.exe -s[/inline] :)
Хм. видимо для меня нужна несколько расширенная инструкция.... то ли я не так понял. я ставил "купленную" VisualGDB, там arm-none-eabi-gcc нету же, его отдельно я ставил (распаковывал, выбирал даже тупо тот, что в ардуино-версии RTL), выбираешь в VisualGDB что используется сторонний компилятор, не указываем конкретные параметры МК (RTL871x поддержки оффициальной нету ) и далее... куча параметров.. на этом я и запутался. (смотрел инструкции по типу этой - на вот этом шаге - http://visualgdb.com/w/wp-content/uploads/tutorials/arm/legacy/03-flags.png я и застрял)
 

pvvx

Активный участник сообщества
Хм. видимо для меня нужна несколько расширенная инструкция.... то ли я не так понял. я ставил "купленную" VisualGDB, там arm-none-eabi-gcc нету же, его отдельно я ставил (распаковывал, выбирал даже тупо тот, что в ардуино-версии RTL), выбираешь в VisualGDB что используется сторонний компилятор, не указываем конкретные параметры МК (RTL871x поддержки оффициальной нету ) и далее... куча параметров.. на этом я и запутался. (смотрел инструкции по типу этой - на вот этом шаге - http://visualgdb.com/w/wp-content/uploads/tutorials/arm/legacy/03-flags.png я и застрял)
Debug запускал ни о чем не думая через это:
Снимок1171.gif
Он даже загрузку пытается сделать в RAM, но неверно стартует - не отключает Flash...
Поэтому выходит отладка только программы записанной в Flash.
Нафих этот платный VisualGDB (помойка, которая не может просто поставить ядро M3) - Eclipse привычнее и кросплатф..
Поддержки RTL со всеми регистрами как у STM не дождетесь, пока кто бесплатно им не сделает, а за это они будут требовать с вас :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Тест скорости приема по UDP и TCP в текущей версии RtlDuino с помощью iperf.exe из SDK (при установках параметров WiFi по умолчанию).
На компе
для TCP [inline]iperf.exe -c 192.168.1.122 -i 1 -t 25 -w 64k -p 5001[/inline]
для UDP [inline]iperf.exe -c 192.168.1.151 -i 1 -t 25 -w 320k -p 5001 -u -b 54M[/inline]
Код:
/*
   Test TCP read -> #define TEST_TCP
   iperf.exe -c 192.168.1.122 -i 1 -t 25 -w 64k -p 5001
   Test UDP read -> //#define TEST_TCP
   iperf.exe -c 192.168.1.151 -i 1 -t 25 -w 320k -p 5001 -u -b 54M
*/
#include <WiFi.h>
#include <WiFiUdp.h>
#include <myAP.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if 0 // ESP-32S
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/time.h>
#else
extern "C" {
#include <lwip/sockets.h>
}
#endif

#define TEST_TCP

#define BUFSIZE 2048
#define PORT 5001

//char ssid[] = "mynetwork"; //  your network SSID (name)
//char pass[] = "mypassword";    // your network password (use for WPA, or use as key for WEP)
//int status = WL_IDLE_STATUS;

WiFiUDP Udp;
char server[] = "192.168.1.2";
int port = 5001;
uint8_t buf[BUFSIZE];
int sockfd, optval;

struct sockaddr_in serveraddr, clientaddr;
int clientaddr_len = sizeof(clientaddr);

struct hostent *hostp;
char *hostaddrp;

long datacount = 0;

uint32_t delta_time_ms, tik;

void setup() {
  Serial.begin(38400);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println("WiFi Connect...");
  delta_time_ms = millis();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  delta_time_ms = millis() - delta_time_ms;
  Serial.println();
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("Time connect = ");
  Serial.print(delta_time_ms);
  Serial.println(" ms");

  Serial.println("Wait data...");
#ifdef TEST_TCP
  sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // SOCK_STREAM, SOCK_DGRAM
#else
  sockfd = socket(PF_INET, SOCK_DGRAM, 0); // SOCK_STREAM, SOCK_DGRAM
#endif
  if (sockfd < 0) {
    Serial.println("ERROR opening socket");
    while (1);
  }

  optval = 1;
  setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval , sizeof(int));

  memset(&serveraddr, 0, sizeof(serveraddr));
  serveraddr.sin_family = PF_INET;
  serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
  serveraddr.sin_port = htons(PORT);
  if (bind(sockfd, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) < 0) {
    Serial.println("ERROR on binding");
    while (1);
  }
#ifdef TEST_TCP
  if (listen(sockfd, 1) < 0) {
    Serial.println("ERROR listen");
    while (1);
  }
#endif
  delta_time_ms = millis();
}

void loop() {
#ifdef TEST_TCP
  int x = accept(sockfd, 0, 0);
  while (x > 0) {
    int n = read(x, buf, BUFSIZE);
    if (n < 0) Serial.println("ERROR in recvfrom");
    else if (n) {
      datacount += n;
      if (millis() - delta_time_ms >= 1000) {
        Serial.print("Average: ");
        if (datacount < 8192) {
          Serial.print(datacount);
          Serial.println(" bytes/sec");
        }
        else {
          Serial.print(datacount / 1024);
          Serial.println(" kbytes/sec");
        }
        datacount = 0;
        delta_time_ms = millis();
      }
    }
    else break;
  }
#else
  int n = recvfrom(sockfd, buf, BUFSIZE, 0, (struct sockaddr *) &clientaddr, (socklen_t*)&clientaddr_len);
  if (n < 0) Serial.println("ERROR in recvfrom");
  else {
    datacount += n;
    if (millis() - delta_time_ms >= 1000) {
      Serial.print("Average: ");
      if (datacount < 8192) {
        Serial.print(datacount);
        Serial.println(" bytes/sec");
      }
      else {
        Serial.print(datacount / 1024);
        Serial.println(" kbytes/sec");
      }
      datacount = 0;
      delta_time_ms = millis();
    }
  }
#endif
}
Лог
Код:
@@@@@@@@@
TCP
@@@@@@@@@
...
IP address: 192.168.1.151
Time connect = 3710 ms
Wait data...
Average: 24 bytes/sec
Average: 1284 kbytes/sec
Average: 1410 kbytes/sec
Average: 1435 kbytes/sec
Average: 1508 kbytes/sec
Average: 1468 kbytes/sec
Average: 1267 kbytes/sec
Average: 1306 kbytes/sec
Average: 1320 kbytes/sec
Average: 1401 kbytes/sec
Average: 1412 kbytes/sec
Average: 1378 kbytes/sec
Average: 1444 kbytes/sec
Average: 1418 kbytes/sec
Average: 1477 kbytes/sec
Average: 1363 kbytes/sec
Average: 1324 kbytes/sec
Average: 1281 kbytes/sec
Average: 1317 kbytes/sec
Average: 1405 kbytes/sec
Average: 1434 kbytes/sec
Average: 1461 kbytes/sec
Average: 1402 kbytes/sec
Average: 1300 kbytes/sec
Average: 1410 kbytes/sec
...
@@@@@@@@@
UDP
@@@@@@@@@
...
IP address: 192.168.1.151
Time connect = 3783 ms
Wait data...
Average: 1470 bytes/sec
Average: 2865 kbytes/sec
Average: 2862 kbytes/sec
Average: 2865 kbytes/sec
Average: 2859 kbytes/sec
Average: 2865 kbytes/sec
Average: 2858 kbytes/sec
Average: 2865 kbytes/sec
Average: 2819 kbytes/sec
Average: 2815 kbytes/sec
Average: 2836 kbytes/sec
Average: 2868 kbytes/sec
Average: 2862 kbytes/sec
Average: 2846 kbytes/sec
Average: 2869 kbytes/sec
Average: 2859 kbytes/sec
Average: 2850 kbytes/sec
Average: 2859 kbytes/sec
Average: 2853 kbytes/sec
Average: 2840 kbytes/sec
Average: 2853 kbytes/sec
Average: 2850 kbytes/sec
Average: 2855 kbytes/sec
Average: 2861 kbytes/sec
Average: 2862 kbytes/sec
Average: 2865 kbytes/sec
...
 
Последнее редактирование:
Сверху Снизу