Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Arduino для RTL8710.

Тема в разделе "Realtek - описание, документация и обсуждение", создана пользователем pvvx, 5 ноя 2016.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    10.217
    Симпатии:
    1.348
    При сборке своего добавляемого obj на SDK надо учесть только конфигурационные хидеры из Arduino в папочке hardware\development\rtl8???\system\sdk\project\rtl8710\inc\. Особенно lwipopts.h, если лепите SNTP
    Но самый простой вариант, как уже написал: кинуть исходник в папку hardware\development\rtl87xx\cores\arduino\. Она его от туда подхватит и даже без проблем заменяет встретившиеся в *.a процедуры и данные с одинаковыми именами. В итог пойдет из cores\arduino...
    После трасляции можно выудить obj этого файла и запихать в lib_xxx.a :)
    Примерно так и были собраны имеющиеся lib_rtl8xxx.a, lib_lwip.a, ...
    Исходники к вставленным и замененным файлам obj в rtlDunio находятся в RTL00MP3/RTL00_SDKV35a at master · pvvx/RTL00MP3 · GitHub

    Arduino от Ameba, из которой взята основа rtlDuino, базируется на SDK3.5, а SDK4.0 имеет расхождение.

    Разобрать все либы на obj по папочкам.bat :
    Код (Text):
    1. for %%a in (*.a) do (
    2. md %%a.o
    3. cd %%a.o
    4. arm-none-eabi-ar x ..\%%a
    5. rem for %%o in (*.o) do arm-none-eabi-objdump -S %%o > %%o.asm
    6. cd ..
    7. )
    Собрать либу из папочки lib_rtl8710:
    Код (Text):
    1. del lib_rtl8710.a
    2. arm-none-eabi-ar ru lib_rtl8710.a lib_rtl8710/*.o
    В итоге, на создание вполне работающей новой версии Arduino для серии "B" потребовался всего один вечер. Бяда там была с SDK4.0 файлами на предмет их сборки транслятором С++ (gcc++) (выдавало много ошибок на хидеры). Ну переписал один файл - Serial для console, т.к. другой чип и ROM у него, да включил опции трансляции для Cortex M4 с FPU и добавил требуемые хвосты для C++ либ от gcc ... Я теперь в полном непонимании почему Arduino для ESP-32 делают не один человек и не один год (?) :) Даже выкладывать полученное страшно, т.к. проверка "сборки за вечер" на второй день показала работоспособность 80% базового функционала Arduino (остальную просто не делал - она мне пока не нужна).
     
    Последнее редактирование: 16 янв 2018
    A.V нравится это.
  2. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    :D надо подсказать человеку же про волшебные слова.. а то так и замучается.
    Ну а выбор ОС - как по мне дело вкуса... у меня и на Windows прекрасно работает, дело работоспособности инструментов то не от ОС в большинстве случаев зависит (имхо), а от рук использующего)
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    10.217
    Симпатии:
    1.348
    Попробовав запустить rtlB-Duino в VS, пришлось скорректировать исходники tools-ов. Разобрал все выданные к SDK4.0 серии "B" Ameba тулзы, т.к. они, засранцы, не дали их исходников, но (!) полностью описали как и что они должны творить по их задумке в приложенных doc к SDK! Заменил, слепил по их аналогии. Не понравилось. :) Слепил на питоне вариант сборки бинарников из elf вообще не пользующийся GNU Tools ARM Embedded. Благо пример уже был из ESP8266/ESP-32 :) Кинут в тему rtltool для "B". Visual Studio 2015 сразу это сожрала и залила скетч в модуль... Использовал "плагин" vMicro. Так что если надо это обновленное безобразие - обращайтесь...
    Теперь думаю - не сделать ли полную имулящку Arduino ESP-32 на RTL8710BN? Ну чтобы вообще ничего не писать далее, а вставлять исходники в Arduino от их "сообщества" :)


    А для больных пользователей - "Ардуино поклонников" версия Arduino для серии "В" пока платная. Чтобы не расслаблялись и не болели :) Для разработчиков и обменивающихся информацией - бесплатная и в варианте с базовым функционалом доступна по просьбе.
    Пользователям свои негодования выражать =AK= и Pilnikov. :) Уж очень устал от их навязчивой болезни "потребителей"...
     
    Последнее редактирование: 16 янв 2018
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    10.217
    Симпатии:
    1.348
    @A_D - Да и на счет "среды".
    В вынь 10 есть WSL. Не пора-ли переводить всё на неё? VS с ней согласуется, Arduino - без проблем, т.к. она об этом и не знает. SDK для RTL все давно у меня собираются под WSL в Win10. Основная причина использования WSL - там работает много-поточная сборка (5 секунд сборка полного SDK4.0), а в Win-де, в mingw проблемы с много-поточностью - лепит ошибки файловая система... и в итоге сборка SDK в один поток происходит за 1 минуту.
    Там ещё много интересных вещей - на на m.2 PCIE x4 (с трафиком 2.4Gbytes/sec запись-чтение) накопителе разница во времени трансляции пакета SDK3.5/4.0 с древним IDE диском (7..10 ms средний seek, 100 MB/сек) не наблюдается и составляет 10 сек :) А 5 сек - это типа RAM диск и львиная доля времени идет на сборку бинарников... С новой модификацией rtlimage.py ещё не замерял.
    Тем более Arduino для серии "B", если переделать на WSL в вынь 10, то можно будет опубликовать - кинуть на git, но исключить установку gcc в WSL, чтобы "общество потребителей" не прошло :)
     
    Последнее редактирование: 16 янв 2018
  5. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    @pvvx WSL штука прикольная, но выходит не совсем переносимо с любого ПК на любой другой..только с win10 Fall Creators Update она доступна любым пользователям (в ранних версиях заморочки были) + гайд под это писать уже целый надо, как запустить всё это)) хотя с другой стороны автоматом отсеивается большинство людей не заинтересованных...
    А с В серией.... я с пятницы не то, что примеры проектов не ковырял, даже не открывал, как с работы прийду, вообще желания и времени толком нету ковыряться в них(( Но блин очень хочется уже и на В серии склепать проект. На днях только по А серии посидел, поразбирался как USDK вынести за проект VS (о чем ранее писал) и частично получилось, но всё-равно пока не компилируемо...
    Да, к слову.. тут на RDA возможно достану дев борду и чипы или даже доки\sdk, но это не точно пока) Правда по RAM памяти выглядит печально чип и правда, но интересен usb встроенный за такую цену (может как раз и сделать можно на них будет сниффер каналов wifi usbшный и их уже лепи их хоть на все каналы wifi к пк ;) ).
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    10.217
    Симпатии:
    1.348
    Иначе смысл хобби в изучении нового пропадает.
    Не надо ничего писать, как поставить gcc в WSL описано уже многократно... Под VS тоже описание есть, но там мне не понравилось, что она каждый файл при трансляции копирует в среду WSL. Т.е. вся производительность к чертям, ещё учитывая новогрядущие патчи на все процы по Meltdown и Spectre. Как их потом выковыривать из системы (это про Meltdown и Spectre)? - Кто допустил аппаратчиков-программистов к давно сложившейся системе разделения на программеров-ботаников и аппратчиков-слесарей? :mad: От них уже получили ограничения в бытовом хламе, теперь ещё... Не знали-бы и так бы и сидели, да всё летало бы...
    Я вот туда и не лезу... хотя примерно этим и занят, но выбираю что попроще, для баловства...
    Meltdown и Spectre - это как раз тот случай, когда не всю информацию можно давать и вообще где либо оглашать... Теперь параноики с манией преследования всё испортят.
     
    Последнее редактирование: 16 янв 2018
  7. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    Ну это надо подумать... я честно говоря не пробовал и не вижу пока сильных плюсов это решения.

    Вот наверное по этой причине и не пойму, зачем столько заморочек) Не конкретно нюанс копирования файлов, а гонка за скорострельностью.. будет оно 4 или 10-15 сек компилироваться - особо разницы я не вижу..

    Уже вышли патчи, на той неделе вроде как... по идее, просто KB4056892 запрещаем к установке и всё) Правда для AMD там печалька (а у вас как я помню AMD как раз) и с убунтой тоже не оч..

    Есть такое... только шумиху про что то подымают, сразу начинается у всех подряд подгорание пятой точки и желание скорее как то это решить.. хотя баг это был аж 10 лет и ничего.. )
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    10.217
    Симпатии:
    1.348
    Сама суть в спортивном интересе выдавить максимум. :)
    При до 5 сек на всё, вместе с заливкой в чип, отладка происходит быстрее. Повторная сборка идет быстрее, т.к. не надо пересобирать всё. Но были проблемы у генераторов бинарников - тоже исправил, слепил на питоне для обоих серий - RTL "A" и "B" (для "В" исправил мелкую ошибку . Теперь, как доберусь до rtlDunio и прочих старых проектов - встрою туда...
    Не поставятся - версия корп. Политика - прошедшие все проверки на обычных пользователях...
    Дырки производители теперь заделывают кое как (за счет ухудшения и вообще урезания функционала для пользователей), иначе им поставлен ультиматум от данной группы "Google-харкеров" - полная публикация ошибки через месяц, если фирма не исправляет... Короче скоро доиграются до увеличения цены на всё Hard/Soft в десятки раз и размеров программ...или вообще каких глобальных запретов.
     
    Последнее редактирование: 18 янв 2018
  9. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    Мне бы столько времени и возможностей... ) мечты-мечты..постоянно не хватает ни на что по хобби времени(

    Тоже Enterprise зачастую ставлю, иногда ставлю еще LTSB версию, когда хочется совсем чистой ОС для экспериментов.
     
  10. nkly

    nkly Новичок

    Сообщения:
    24
    Симпатии:
    1
    Не получается вывести ШИМ частотой 1кГц с разрядностью 8 бит. В диапазоне от 0 до 255 происходит только 16 изменений ширины импульса. Для модуля RTL00 это предел? ШИМ контроллер тоже от 32кГц тактируется? И, возможно ли генерировать 4 ШИМ сигнала с такими параметрами?
    ---------
    Разобрался, так и должно быть, минимальный тик таймера для ШИМ 61мкС.
     
    Последнее редактирование: 12 апр 2018
  11. Руснак

    Руснак Новичок

    Сообщения:
    18
    Симпатии:
    4
    Глупый вопрос
    После прошивки примера ota_non_block всегда запускается OTA прошивальщик, если НЕ заземлен нужный пин. Мне кажется, логичнее было бы сделать наоборот - запускать прошивальщик только при заземлении пина. Подскажите, где надо поправить для нужного поведения, я пока еще нуб в этом чипе.
     
  12. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    А не наоборот? Какую кстати используете, офф., RAK или от pvvx ?

    Код (Text):
    1. #if defined(BOARD_RTL8710)
    2. #define RECOVER_PIN 9 // PC_1, if "0" (connect gnd) -> boot OTA
    3. #elif defined(BOARD_RTL8711AM)
    4. #define RECOVER_PIN 10 // PC_1, if "0" (connect gnd) -> boot OTA
    5. #else
    6. #define RECOVER_PIN 18 // PE_5?
    7. #endif
     
  13. Руснак

    Руснак Новичок

    Сообщения:
    18
    Симпатии:
    4
    Использую от pvvx, если пин НЕ подтянут к земле - грузится прошивальщик. Если думаете, что я ошибаюсь - попробую еще поэкспериментировать.
     
  14. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    362
    Симпатии:
    56
    я не использовал ардуино, странно просто, что не соответствует поведение описанию..
    По выбору 1\0 - в файле OTA.cpp либы в функции:
    Код (Text):
    1. int OTAClass::setRecoverPin(uint32_t pin1, uint32_t pin2) {
    2.     uint8_t boot_pin1 = 0xFF;
    3.     uint8_t boot_pin2 = 0xFF;
    4.     uint32_t boot_pins = 0;
    5.    
    6.     if ( pin1 < TOTAL_GPIO_PIN_NUM ) {
    7.         boot_pin1 = (g_APinDescription[pin1].pinname) & 0xFF;
    8.         boot_pin1 |= 0x80; // <<< ---------------- Вот это указывает на уровень сигнала, можно сменить на 0x00
    9.         OTA_PRINTF("Pin1: P%c_%d\r\n", ((boot_pin1>>4)&7)+'A', boot_pin1&0x0F);
    10.     }
    11.  
    12.     if ( pin2 < TOTAL_GPIO_PIN_NUM ) {
    13.         boot_pin2 = (g_APinDescription[pin2].pinname) & 0xFF;
    14.         boot_pin2 |= 0x80; // <<< ---------------- Вот это указывает на уровень сигнала, можно сменить на 0x00
    15.         OTA_PRINTF("Pin2: P%c_%d\r\n", ((boot_pin1>>4)&7)+'A', boot_pin1&0x0F);
    16.     }
    17.  
    18.     if (boot_pin1 != 0xFF || boot_pin2 != 0xFF) {
    19.         boot_pins = (boot_pin1 << 8) | boot_pin2;
    20.         set_system_data(0x0008, boot_pins);
    21.     }
    22. }
    Вроде бы так по памяти, не проверял
     
  15. barakuda62

    barakuda62 Новичок

    Сообщения:
    7
    Симпатии:
    0
    Если пин не подтянут к GND грузится прошивальщик, если пин подтянут грузится прошивка из раздела памяти boot OTA, логика правильная.
     
  16. Руснак

    Руснак Новичок

    Сообщения:
    18
    Симпатии:
    4
    Но ведь логичнее было бы наоборот - прошивальщик должен грузиться при совершении действия (подтягивании пина).
    Впрочем, неважно - это мои UI/UX заморочки.
     
  17. barakuda62

    barakuda62 Новичок

    Сообщения:
    7
    Симпатии:
    0
    Возможно !, как бы то ни было действие (перемычка) имеет место быть.
     

Поделиться этой страницей