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

Arduino для RTL8710.

Pilnikov

Active member
@Neov помогите забодать

C:\Program Files (x86)\Arduino\hardware\development\rtl87xx\cores\arduino/Arduino.h:66:17: error: 'class LOGUARTClass' has no member named 'rtl_printf'

#define printf rtl_printf

^
Z:\ardu\sketch\Main\wc_rt1\d_msg.ino:70:20: note: in expansion of macro 'printf'


ругается на DBG_OUT_PORT.printf("Invalid display type %u\n",disp);

Как присобачить внешний макрос к классу?

Я тут уже читал про printf для ртл - ов - мол проблемный он, а где читал - не помню
 

Neov

Member
лучше зорга спросите, я ардуину ковырял давно, еще на аврке, и понял что дурина мне не нравится.
но подозреваю, что вызываемый метод printf подменяется препроцессором на rtl_printf. Осторожней с define :)
ну либо добавьте в класс метод-клон rtl_printf :)
 

pvvx

Активный участник сообщества
Я тут уже читал про printf для ртл - ов - мол проблемный он, а где читал - не помню
Он не проблемный, а частью реализован в ROM-BIOS, используя назначенные при сборке ROM-BIOS области SRAM под буфера в фиксированных адресах.
Но у вас С++ и вообще другая версия компилятора и библиотеки GCC при сборке используют другие буфера для вашего кода, тем самым увеличивая потребление RAM (двойные области для процедур ROM-BIOS и проекта). Вот если совмещать эти области для уменьшения потребления RAM, то и возникают некоторые преодолимые сложности, что не совсем просто - в этом и вся проблемность для тех кто плохо это понимает.
Переключение на rtl_printf и есть переключение на использование части процедур в ROM-BIOS.
надеюсь @pvvx не накинется
А зачем (?) - эта система то не нужна и вписывается в самоуничтожение :) Для C++ на RTL-ы есть mbed. Там и библиотек поболее...
А Visual Studio и так прекрасно собирает проекты Arduino, но вот только записать в чип не может (надо вручную ковырять заливку и прошивку в установках Visual Studio).
 
Последнее редактирование:

Pilnikov

Active member
в чем тогда разница между
Код:
printf ("Hello");
и
Код:
Serial.printf ("Hello");
?
 

Pilnikov

Active member
Т.е. так
Код:
int LOGUARTClass::rtl_printf(const char *fmt, ...)
{
rtl_printf(fmt);
}
можно делать?
 

pvvx

Активный участник сообщества
Странные у вас желания –испортить всё. Для каждого применения всегда есть оптимальный подход. “На все случаи жизни” ничего не бывает.

Не забывайте, что есть ещё DiagPrintf – это прямо в ROM-BIOS, без заголовков в RAM.

Вообще в RTOS так не делают. Printf, rtl_printf, Serial.print[f] и прочие не имеют атомарности исполнения - это дело пользователя, окружить его семафорами или типа… Иначе, в многозадачке, в одной строке будут перемешаны разные буквы от разных потоков :) Но вам то всё равно – Arduino.
 

Pilnikov

Active member
немного цитат с ардуино.ру

Да и, если разобраться, многопоточность не такой уж и благо. Без него все гораздо предсказуемей/проще. Нет проблемы с блокировками, с тем конкрутным доступом и т.п. Вообщем без многопоточности скетч гораздо вероятней "либо работает, либо нет". А с многопоточностью "вроде работет, но это ничего не значит".

По памяти тоже: никогда не знаете сколько у вас ее будет. Когда GC соизволит запуститься (и сколько времени это займет).
public static void Main() {

OutputPort led = new OutputPort(Cpu.Pin.GPIO_Pin1, false); //PA1 on discovery board

while (true) {

led.Write(true);

Thread.Sleep(500);

led.Write(false);

Thread.Sleep(500); }

}

тут же сразу и многопоточность в чистом виде, поддерживаема кортексом на уровне ядра..
Взять вот так и целую Thread тормознуть.
На самом деле я уже говорил о своей позиции и точке зрения на все это, как на игрушку. Нет реальных задач под многопоточность.
В "больших" ПК до сих пор немного приложений в полной мере использующих многоядерность современных процессоров. А ОС тоже не способна сделать это за ПО
 

pvvx

Активный участник сообщества
На самом деле я уже говорил о своей позиции и точке зрения на все это, как на игрушку. Нет реальных задач под многопоточность.
А у меня есть. По этому Arduino мне не нуно.
В "больших" ПК до сих пор немного приложений в полной мере использующих многоядерность современных процессоров. А ОС тоже не способна сделать это за ПО
Многоядерность и многопотчность вещи разные. Если вы используете WiFi не по предназначению, то и получается "игрушка". Но это не у всех так... если не считать, что "вся жизнь - игра" :)
Причины вам уже описаны – WiFi SoC – это устройство, используемое когда нужен трафик более 100 килобайт в сек. UART это не прокачивает. Задачи Arduino ограничены десятком байт коммуникации в минуту и там вполне хватает BT и подобных беспроводных протоколов.
 
Последнее редактирование:

Pilnikov

Active member
Одна задачка у меня есть - я слукавил немного, не диодом поморгать, а пищалкой попищать "бумера" в фоне
 

Pilnikov

Active member
@pvvx, у вас отношения к СОКам как будто к чипам из роутеров и задачи почему-то вы видите в основном те-же что и решают роутеры (утрировано все конечно, но по простому) но тут еще и ножки, гпио которые, есть - т.е. диодиком поморгать сам бог велел.
 

pvvx

Активный участник сообщества
@pvvx, у вас отношения к СОКам как будто к чипам из роутеров и задачи почему-то вы видите в основном те-же что и решают роутеры (утрировано все конечно, но по простому) но тут еще и ножки, гпио которые, есть - т.е. диодиком поморгать сам бог велел.
Дык мигает же. Проблем то нет.
А роутеры и есть первый эшелон, где были затребованы WiFi SoC в быту.
Хотите что-то большее, например задействовать ресурсы данного WiFi SoC на более 5% - отказывайтесь от Arduino или ждите когда на вашу задачу кто даст готовое решение "без шагу в сторону".

В rtlDuino вложены примеры и либы. Они работают - пользуйтесь. Зачем тогда лезете в printf/rtl_printf ? Вы же явно указали, что у вас позиция пользователя, а тут разбирают и вопросы разработки самой Arduino. Вам то зачем они и что хотите от них (?) - всё равно какого-либо решения от вас не видно в этом плане.
Или вы пытаетесь описать стандарт для Arduino для разработчиков? Но тогда вам надо освоить среды, в которых пишутся либы и ядро для Arduino, чтобы потом вышел пример скетча “делай как я” повторяя его пользователями с видео на ютубе и ни шагу в сторону, т.к. это принесет неоднозначности и кучи вопросов у пользователей Arduino. И кто их будет решать, разбираться в том, что каждый пользователь нагородил и писать ему личный пример “скетча” для решения его вопроса?
 
Последнее редактирование:

Pilnikov

Active member
Скетч использует 349348 байт (93%) памяти устройства. Всего доступно 372736 байт.
А вы говорите
;)
На самом деле есть ресурсоемкие задачи - тот же мп3 или прорисовка цветного экрана, но для них существуют специализированные чипы, которые гораздо дешевле CPU (SoC) общего применения с теми же возможностями, по крайней мере в производстве.
 

pvvx

Активный участник сообщества
Скетч использует 349348 байт (93%) памяти устройства. Всего доступно 372736 байт.
А вы говорите

;)
Именно - 5% от аппаратных возможностей. Остальное занято никчемным кодом для упрощения и привода в рамки Arduino.
На самом деле есть ресурсоемкие задачи - тот же мп3 или прорисовка цветного экрана, но для них существуют специализированные чипы, которые гораздо дешевле CPU (SoC) общего применения с теми же возможностями, по крайней мере в производстве.
А кто вам сказал, что надо MP3 делать на данном чипе?
Тут, на основе MP3 создан тест производительности чипа для сравнения с ESP8266. Код то взят от ESP8266 и дополнен, что и показало большие возможности внутренних специализированных встроенных контролеров данного WiFi SoC... Т.е. в отличии от мигания светодиодом, получили использование уже двух встроенных специализированных контроллеров в данных SoC (wifi + i2s + DMA).

Для пользователя-кухонного игрунчика в Arduino с потребностями на али-экспрес данное решение просто дешевле, чем припаивать внешний чип, а показатели итого – одинаковы.

Прорисовка цветного экрана на RTL тоже делается с помощью внутренних специализированных встроенных контролеров в данный чип. Посмотрите примеры - они уже готовы и работают. Если надо больший экран - берете RTL8711AM.
SoC и есть сборка специализированных встроенных контролеров в один чип, а вы тянете к MCU c тупым CPU и их подходам. Это время давно прошло, а производители выпускают разнообразные SoC для частных решений нестандартных задач, когда итого с разработкой выходит дешевле, чем оптовый заказ тысяч чипов специализированного назначения.
По этому споры, какой тип CPU круче, давно канули в лето и остались уделом только старых-пер..ов, неспособных освоить другой… А решающее значение в SoC имеет встроенные контроллеры, а не "ногодрыг" и обучение в нем никому не нужно на современном этапе :)
 
Последнее редактирование:
Сверху Снизу