#1 2025-06-12 11:09:37

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 120

Симуляція AVR в platformio

Знайшов дещо цікаве. Виявляється, для деяких чіпів є емулятори. І в platformio декларується можливість використання:
https://docs.platformio.org/en/latest/plus/debug-tools/simavr.html

У когось вийшло? Бо запустити руками емулятор в одній консолі, gdb в іншій - воно працює, але трохи по красноглазому wink

Неактивний

#2 2025-06-12 11:26:59

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

jokeR пише:

У когось вийшло?

Колись трошки грався з самим simavr (не в рамках platformio). Ну, воно працює, вивод на UART показує в консолі, gdb чіпляється як до будь-якої іншої remote target. Але для моніторингу периферії потрібно додавати код в саму фірмварь.

Неактивний

#3 2025-06-12 11:35:26

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 120

Re: Симуляція AVR в platformio

Ну це можна використати, якщо упоротись в TDD. А так, відчуття якоїсь незавершеності. debug_tool наче є, а використати неможливо.

Неактивний

#4 2025-06-12 11:37:03

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

Якраз нещодавно хотів в simavr перевірити ту багу з attiny85. Але ж ні URL та версії тієї EEPROM бібліотеки, ні опцій збірки так і не отримав, щоб відтворити збірку 1-в-1.

Неактивний

#5 2025-06-12 11:39:05

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

jokeR пише:

А так, відчуття якоїсь незавершеності.

У мене це відчуття щодо більшості інструментів для розробки під МК smile

Неактивний

#6 2025-06-12 11:52:33

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 120

Re: Симуляція AVR в platformio

https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json же ж. Без ніяких хитрощів.

Є підозра що емулятор цього не покаже. Якщо косячаться логічні рівні на виході - значить там всередині щось комутується неправильно. Може чіпи палені. До речі, в якійсь з ревізій цих tiny85 щось було з eeprom, саме з записом в 0 адресу, і були рекомендації від аксакалів починати запис з 10.. Можливо, автор цього коду щось таке чув, і в нього використовується put(10). І put(0) теж wink

Неактивний

#7 2025-06-12 13:02:32

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

jokeR пише:

https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json же ж. Без ніяких хитрощів.

А, в 1.7.5 EEPROM уже є в поставці. Тільки IDE навіть з verbose mode не показує як її компілює, тільки Compiling library "EEPROM".
Але автор писав, що доставляв ще якусь додатково. От якщо ліби з однаковими іменами є і в packages/digistump/hardware/avr/1.7.5/libraries/, і в ~/Arduino/libraries, яку з них воно бере? Це тільки з лога збірки можна побачити:

Alternatives for EEPROM.h: [EEPROM@2.0]
ResolveLibrary(EEPROM.h)
  -> candidates: [EEPROM@2.0] 
...
Using library EEPROM at version 2.0 in folder: ...

І який там Clock обрано в меню, теж може впливати.

jokeR пише:

Є підозра що емулятор цього не покаже. Якщо косячаться логічні рівні на виході - значить там всередині щось комутується неправильно.

Якщо апаратний баг, то так. Але в datasheet errata нічого такого нема. Тільки для ревізії A "EEPROM read may fail at low supply voltage / low clock frequency".
А у випадку програмного багу як мінімум стан регістрів можна перевірити. Взагалі можна було б і просто асемблерний код проаналізувати, але мені за то не заплатять smile

jokeR пише:

До речі, в якійсь з ревізій цих tiny85 щось було з eeprom, саме з записом в 0 адресу, і були рекомендації від аксакалів починати запис з 10..

Наскільки знаю, то якщо бутлоадер теж використовує EEPROM для збереження своїх даних. Micronucleus такого не робить наче.

Неактивний

#8 2025-06-12 13:58:29

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 120

Re: Симуляція AVR в platformio

Тільки IDE навіть з verbose mode не показує як її компілює, тільки Compiling library "EEPROM".

Тому що в EEPROM.h нічого цікавого немає. Це враппер до avr/eeprom.h, а реалізація роботи з eeprom - упсь, в бінарнику .arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/lib/avr25/libattiny85.a . При використанні функцій з eeprom.h все так само ламається.

Взагалі можна було б і просто асемблерний код проаналізувати

Настоящих буйних мало wink

Остання редакція jokeR (2025-06-12 14:20:50)

Неактивний

#9 2025-06-12 14:38:16

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

jokeR пише:

Тому що в EEPROM.h нічого цікавого немає.

Тепер я зрозумів, чому IDE не показало команди компіляції. Бо ця EEPROM - header only.

jokeR пише:

Це враппер до avr/eeprom.h, а реалізація роботи з eeprom - упсь, в бінарнику.

Реалізація в avr-libc: libc/misc/eewr_byte.S
Вона в ісходніку виглядає страшно, бо там реалізація для всіх платформ. А в згенерованому коді для attiny85 досить проста:

0000096c <eeprom_write_byte>:
 96c:	26 2f       	mov	r18, r22

0000096e <eeprom_write_r18>:
 96e:	e1 99       	sbic	0x1c, 1	; 28
 970:	fe cf       	rjmp	.-4      	; 0x96e <eeprom_write_r18>
 972:	1c ba       	out	0x1c, r1	; 28
 974:	9f bb       	out	0x1f, r25	; 31
 976:	8e bb       	out	0x1e, r24	; 30
 978:	2d bb       	out	0x1d, r18	; 29
 97a:	0f b6       	in	r0, 0x3f	; 63
 97c:	f8 94       	cli
 97e:	e2 9a       	sbi	0x1c, 2	; 28
 980:	e1 9a       	sbi	0x1c, 1	; 28
 982:	0f be       	out	0x3f, r0	; 63
 984:	01 96       	adiw	r24, 0x01	; 1
 986:	08 95       	ret
jokeR пише:

При використанні функцій з eeprom.h все так само ламається.

А, не знав, що з libc'шними функціями той глюк теж проявляється.

Тоді може це просто сайд-ефект через таймінги, і відповідний delay() замість eeprom_write_byte() так само впливатиме.
А збірка в platformio працює тільки тому що інша версія avr-gcc smile

Неактивний

#10 2025-06-12 15:13:30

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 120

Re: Симуляція AVR в platformio

Теж дивно. Воно tiny85 не дуже модна іграшка, але невже ніхто не грався з нею в arduino ide з використанням eeprom і свіжим toolchain ом?

Неактивний

#11 2025-06-14 19:17:56

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

Бачу, цей simavr ще навіть ворушиться, є недавні комміти. Але якось на рівні аматорської поробки. Вивод стану пінів у VCD працює, але тільки з GPIO портів. Зміна стану по Compare Match Output, наприклад, ніяк не відображається. Інші альтернативні функції пінів не перевіряв. Схоже, що це "by design". Якщо так, то толку з такого емулятора небагато. 
Доречі, є і ще один форк.

Неактивний

#12 2025-06-15 08:40:18

jokeer
Гість

Re: Симуляція AVR в platformio

Походу є AVR (Atmel) studio, і є саморобки різного стану готовності. Мабуть треба підняти піратський прапор wink Бо купляти того монстра щоб пару разів на рік запустити якось не того.

#13 2025-06-15 11:37:02

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 485

Re: Симуляція AVR в platformio

jokeer пише:

Походу є AVR (Atmel) studio

Воно ж уже Microchip Studio, і вже не рекомендується для нових розробок smile Рекомендують користуватись MPLAB X IDE.

jokeer пише:

Мабуть треба підняти піратський прапор wink Бо купляти того монстра щоб пару разів на рік запустити якось не того.

Хіба воно платне в базовій версії? Щось не знайшов, скільки коштує ліцензія.
Мені не подобається, що воно проприєтарне. Microchip Studio взагалі наче тільки під вінду. MPLAB X IDE встановлювати їхнім інсталлером якось не комільфо. А пакет з неофіційного репозиторію хоче Java8 JDK, коли на дворі вже Java24.
Та й не факт, що воно не таке ж глючне як і саморобки.

Неактивний

#14 2025-06-15 17:33:01

jokeer
Гість

Re: Симуляція AVR в platformio

Та якось складно у них.. Цей mplab комплектується toolchain ом під pic, для AVR треба якось доставляти.. Після platformio/Arduino IDE наче в 2000-ні вернувся wink

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму