SpenceKonde / megaTinyCore

Arduino core for the tinyAVR 0/1/2-series - Ones's digit 2,4,5,7 (pincount, 8,14,20,24), tens digit 0, 1, or 2 (featureset), preceded by flash in kb. Library maintainers: porting help available!
Other
551 stars 143 forks source link

2.5.11 + Arduino IDE 2.0.0-rc8: Suggestions not working when selecting specific board entries #736

Closed InstantMuffin closed 2 years ago

InstantMuffin commented 2 years ago

Hello,

using XUbuntu 22.04 LTS, Arduino IDE 2.0.0-rc8 and megaTinyCore 2.5.11 editor suggestions do not work for the following board entries:

ATtiny3224/1624/824/424 w/Optiboot
ATtiny3226/1626/826/426 w/Optiboot
ATtiny3227/1627/827/427 w/Optiboot

Initially suspecting it affected all "w/Optiboot" postfixed entries, I went through all boards of this extension to verify and actually came up with the above mentioned list of entries that have this issue.

For keywords that already exist in the sketch (like in this example "digitalWrite"), this is the behavior: image

Otherwise nothing is being suggested. Compilation (and upload) works fine.

I attached logfiles from the language server.

languageserverlog.zip

Relevant error from inols-clangd-err.log seems to be: V[11:37:29.057] Ignored diagnostic. unknown target CPU 'attiny3226' V[11:37:29.057] Ignored diagnostic. valid target CPU values are: avr1, avr2, avr25, avr3, avr31, avr35, avr4, avr5, avr51, avr6, avrxmega1, avrxmega2, avrxmega3, avrxmega4, avrxmega5, avrxmega6, avrxmega7, avrtiny, at90s1200, attiny11, attiny12, attiny15, attiny28, at90s2313, at90s2323, at90s2333, at90s2343, attiny22, attiny26, at86rf401, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534, at90s8535, ata5272, attiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny441, attiny461, attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88, attiny828, at43usb355, at76c711, atmega103, at43usb320, attiny167, at90usb82, at90usb162, ata5505, atmega8u2, atmega16u2, atmega32u2, attiny1634, atmega8, ata6289, atmega8a, ata6285, ata6286, atmega48, atmega48a, atmega48pa, atmega48pb, atmega48p, atmega88, atmega88a, atmega88p, atmega88pa, atmega88pb, atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, ata5790, ata5795, atmega16, atmega16a, atmega161, atmega162, atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, atmega168pb, atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega324pb, atmega325, atmega325a, atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p, atmega328pb, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega649, atmega649a, atmega649p, atmega6450, atmega6450a, atmega6450p, atmega6490, atmega6490a, atmega6490p, atmega64rfr2, atmega644rfr2, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at90scr100, at94k, m3000, atmega128, atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, at90usb1287, atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega32e5, atxmega16e5, atxmega8e5, atxmega32x1, atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4, atxmega64a1, atxmega64a1u, atxmega128a3, atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3, atxmega384d3, atxmega128a1, atxmega128a1u, atxmega128a4u, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, attiny102, attiny104, attiny202, attiny402, attiny204, attiny404, attiny804, attiny1604, attiny406, attiny806, attiny1606, attiny807, attiny1607, attiny212, attiny412, attiny214, attiny414, attiny814, attiny1614, attiny416, attiny816, attiny1616, attiny3216, attiny417, attiny817, attiny1617, attiny3217 E[11:37:29.057] Indexing /home/sigi/.arduino15/packages/megaTinyCore/hardware/megaavr/2.5.11/cores/megatinycore/UART.cpp failed: Couldn't build compiler instance

So, naturally, I was curious and been wondering what the difference between a working and a non-working entry is. So I compared

"ATtiny3226/1626/826/426 w/Optiboot" with the "3226" entry without optiboot (which includes the 3216 as well - Please don't make my manually type in the entry name...)

And it seems that according to

/tmp/arduino-language-server[YOURFREENUMBERSHERE]/compile_commands.json

even though you select the "3226" under "Tools/Chip/" it uses "3216" in the entire params (for example "-mmcu=attiny3216").

Maybe this helps, I'm completely unfamiliar with all of this, and I find that bit very odd, so I thought I'd mention it as well.

InstantMuffin commented 2 years ago

Okay, a little update. So as shown in the list above there no CPU targets for any of the 2nd generation MCUs. The other non-optiboot entries respective to the ones with the error work because the CPU target is always a 1st generation MCU.

Looking at the boards.txt and compile_commands.json the CPU target is always the first CPU entry in boards.txt for the respective compile-target/MCU-family entry. I tested this by checking the specified CPU target in compile_commands.json after selecting different entires under "Tools/Chip/" (which didn't change the target in compile_commands.json), and then by exchanging the order the CPU entries are defined under boards.txt.

InstantMuffin commented 2 years ago

Mentioning https://github.com/arduino/arduino-ide/issues/31 as this is all the same bug it seems.

Maybe not a fix but a workaround can be found and implemented for the time being?

per1234 commented 2 years ago

even though you select the "3226" under "Tools/Chip/" it uses "3216" in the entire params (for example "-mmcu=attiny3216").

This bug is being tracked here: https://github.com/arduino/arduino-ide/issues/1029

SpenceKonde commented 2 years ago

Thanks for that info Per!

Since this is a confirmed bug in the IDE, not a defect in the core, I'm going to close this one.