PlatformIO

Тема в разделе "Флудилка", создана пользователем IvanUA, 15 апр 2019.

  1. Voha888

    Voha888 Нуб

    Здравствуйте Иван, и всем заглянувшим в тему. Есть очень ламерские вопросы по поводу перехода с Arduino IDE. Последняя меня устраивает почти всем, кроме отсутствия отладки. Из-за чего хочу перейти, но со многим не выходит разобраться.

    1. Поддерживаются ли многофайловые проекты, где несколько .ino и несколько .h файлов ? В Arduino IDE использую такой вариант, т.к. в случае с кучей .cpp файлов путаюсь с тем кого в кого вложил. Просто такой проект при переносе из Arduino IDE вызвал кучу ошибок, возможно я что-то еще не учел, попробую разобраться еще

    2. Для каждого проекта использую отдельную portable-сборку arduino ide, для того чтоб не получить глюки из-за обновлений чего-то, плюс чтоб библиотеки не пересекались. В platformio, насколько я понимаю можно указать зависимости в проекте, и я так понял их нужно указать относительно корневой папки проекта. А можно ли в проект скопировать так-же все стандартные библиотеки, и возможно весь фреймфорк? Чтоб я его обновил в VScode, а в проекте остались старые версии абсолютно всего?

    3. Чтобы можно было откатить изменения, в Arduino IDE пересохраняю проект с новым именем. При этом создается копия папки с новым именем, куда копируются все файлы, и когда папок стает много, из них делаю компактный 7z архив. Какой вариант лучше для Platformio? Чтоб не копировать огромный проект со всеми библиотеками? Возможно для этого нужно использовать git? Или есть простые варианты?
     
  2. b707

    b707 Гуру

    если речь о написании кода под стандартные для Ардуино процессоры, например Атмега328 - то куда бы вы не перешли, отладка не появится, так как эта линейка процессоров ее не поддерживает
     
  3. b707

    b707 Гуру

    Алексей, прошу прощения что поднимаю старый пост - не могли бы вы немного подробнее пояснить, может с примерами - как происходит выбор тегов для библиотек, что такое автогенерация исходников и тд... Я понимаю, что вопросы ламерские - но если что-то ответите, буду благодарен
     
  4. Voha888

    Voha888 Нуб

    Извиняюсь, я про ESP32.

    Ну в Visual Studio с плагином Visual Micro можно натыкать точек останова, накидать им условий. Это куда проще, чем ручками добавлять это всё в код, а потом сидеть и вычищать - просто поставил точку, запустил псевдоотладку и видишь каждую итерацию цикла пошагово
     
  5. parovoZZ

    parovoZZ Гуру

    Как это? Это точная инфа?
     
  6. asam

    asam Гик

    Я, лично не пробовал, но в тырнетах пишут обратное
    You can debug a 328 with JTAGICEmkII or Dragon. It uses the one wire On Chip Debug interface called debugWire. You start using the debugger in ISP mode to set th DWEN fuse (unlike JTAG chips which have the JTAGEN fuse enabled by default the debugWire chips have DWEN disabled by default). Once you have used ISP to switch to dW mod in theory you only need two of the 6 wires in the ISP header but as you need all 6 to get the chip back from dW to ISP mode (you can't change fuses in dW mode) you might as well leave all 6 connected.

    Having switched the chip to debugWire you just use Debug-Select Platform and Device to select either JTAGICEmkII or Dragon then when you use "Start Debug" Studio will communicate with the chip in dW mode and download the latest build of the code into its flash then start the debug interface with the PC positioned at 0x0000 (Asm window active) or main() (C window active).
     
    Voha888 нравится это.
  7. Voha888

    Voha888 Нуб

    Спасибо, надо будет попробовать. Не найдя действительно работающего эмулятора языка Arduino для ПК, я обкатываю куски кода на Mega 2560, в которую мой кривой код залетает быстрее и проще, и уже с помощью псевдоотладки из под VS смотрю что и как работает. Неудобство в том, что все точки останова и отслеживаемые переменные нужно указать заранее, но зато исходник остаётся девственно чистым, без всяких Serial.println
     
  8. b707

    b707 Гуру

    то что написал asam - именно так и будет работать, насколько я знаю. То есть для каждой новой точки останова надо будет заново перекомпилировать и перезалить код в контроллер.
    Но это вряд ли можно назвать полноценной отладкой. Нормальной внутрисхемной отладки на АВР все равно не будет
    это решается при помощи условной компиляции
     
    Последнее редактирование: 1 ноя 2019
  9. asam

    asam Гик

    Ну, насколько я понял из этого и других описаний - atmega поддерживает нормальную внутрисхемную отладку, только по окончании отладки надо ее перешить.
     
    Voha888 нравится это.
  10. Voha888

    Voha888 Нуб

    Ну я встречал только варианты натыкать везде в код ifndef, от чего ествственно можно сойти с ума (каждый раз писать эту монстроузную конструкцию :mad:) +исходник весь будет усыпан этими лишними строками, что как бы усугубляет задачу, а не решает.
    Или есть вариант проще?
     
  11. DetSimen

    DetSimen Guest

    Нет. Ты не в скаску попал, а в жуткий мир Си.
     
  12. Voha888

    Voha888 Нуб

    В общем исходник портит и не разу не лучше, спасибо

    debugWIRE разрабатывался как более дешёвая альтернатива JTAG, специально для процессоров с ограниченными ресурсами. Он поддерживается большинством современных 8-битных контроллеров AVR. Пользователь получает возможность чтения и записи всех областей памяти (FLASH, EEPROM, Fuse bits) и контроль над выполнением программы внутри контроллера (брэкпойнты в программной памяти). Однако протокол не поддерживает пошагового выполнения.

    Протокол использует единственную двунаправленную линию Reset для входа и выхода данных.

    Программные точки останова формируются с помощью входящей в систему команд AVR команды Break. Интегрированная среда разработки обеспечивает сохранение оригинальной команды, заменяемой Break в памяти настольного компьютера, с последующим её восстановлением и продолжением исполнения программы. Таким образом использование программных точек останова тратит ограниченный ресурс данных микроконтроллеров — максимально возможное количество циклов записи стирания программной памяти. Нужно следить, чтобы отладчик не израсходовал его полностью.

    Поскольку для отладки используется вход внешнего сброса RESET, становится невозможным проверять схемы внешнего сброса.

    В момент останова процессора, чтобы не нарушить работу системы, надо соблюдать осторожность при обращении через отладчик к регистрам ввода-вывода.

    В режиме с разрешённой отладкой потребляемая процессором мощность возрастает, поэтому не следует забывать по окончании отладки перевести fuse-переключатель DWEN в исходное состояние.

    Похоже вариант в Visual Studio даёт тот же результат, но без фьюзов. Я понял одно из обсуждения - для отладки скетчей надо взять какой-нить STM32 за полбакса и не мучатся
     
  13. parovoZZ

    parovoZZ Гуру

    Все многоножки поддерживают JTAG - а это полноценная отладка. МК с меньшим количеством ног имеют dWare - полупрограммная, но пошаговая отладка есть. Беда в том, что такие отладчики стоят абсолютно конских денег. Поэтому я перешёл но новые аттиньки. Самая дешманская плата с отладчиком стоит всего 900 рублей. За эти деньги имеем полноценную отладку + 2 аппаратных точки останова. Свыше этого - программные. Ну и поддержку абсолютно всех МК из серии.
     
  14. parovoZZ

    parovoZZ Гуру

    Так надо пользоваться нормальными IDE, а не блокнотом. В таких IDE неисполняемый код условной компиляции затеняется.
     
  15. Voha888

    Voha888 Нуб

    Ну по форумам порылся, пишут мол JTAG есть в *AT90CAN128 *ATmega128*ATmega16*ATmega162*ATmega169*ATmega32*ATmega323*ATmega64,
    но в 328ой как-раз таки нету, и похоже теория с кол-вом ног не работает)). Однозначного списка нигде нет, надо на каждый отдельный МК смотреть.

    Можно ещё придумать вариант - пользоваться нормальными МК и причины заходить на этот форум отпадут сами по себе)))





     
  16. DetSimen

    DetSimen Guest

    А еще можно нормальные программы писать для любова МК
     
    parovoZZ нравится это.
  17. parovoZZ

    parovoZZ Гуру

    В 328 JTAG нет - мало ног. Но есть dWare
    Открываем даташит и читаем
     
  18. parovoZZ

    parovoZZ Гуру

    а сайт атмела/микрочипа не работает? Или брать инфу из первоисточника это моветон?

    у вышеприведенных МК как минимум 44 ноги. JTAG занимает 8.