
Arduino 2.3.9 - cache error. Megoldás: downgrade : Arduino 2.3.9
Az Arduino IDE 2.3.9 megjelenésekor az egyik fontos újítás a fordítás gyorsítása volt. Ez a gyakorlatban azt jelenti, hogy az IDE igyekszik minél több, korábban már elkészített fordítási állományt újra felhasználni. Ez alapvetően jó irány. Nagyobb programoknál, sok könyvtár használatakor érezhetően rövidebb lehet a fordítási idő.
Az első tesztek alapján viszont úgy tűnik, az Arduino IDE 2.3.9-ben ezzel kapcsolatban egy kritikus hiba megmaradt. Több fórumbejegyzés és Arduino-github hibajegy szerint előfordulhat, hogy a program módosítása után az IDE nem fordít újra minden állományt, amit kellene. A fordítás és a feltöltés lefut, hibaüzenet nincs, a panelen így azonban a régi program fut tovább.
Ez különösen alattomos hiba, mert amúgy minden rendben lévőnek látszik. A feltöltés sikeres. A port jó. A panel válaszol. Ám mégis a korábbi kód dolgozik alapon.
Tipikus árulkodó jelek – tipikus módosításkor:
- átírt verziószám nem változik meg,
- soros monitoron a régi szöveg jelenik meg,
- módosított villogási idő nem látszik,
- debug-kiírás nem kerül bele a futó programba,
- ugyanaz a sketch a 2.3.8-cal még rendben működött.
Fontos, hogy az Arduino IDE 2.x felületén jelenleg nincs külön „Tiszta Fordítás” / „Clean&Compile” gomb. Nincs olyan egyszerű funkcionális beállítás sem, amellyel minden fordítás előtt biztosan töröltetni lehetne a fordítási gyorsítótárat.
Fontos: ez nem csak a beépített UNO, Mega és egyéb alapértelmezett áramköri lapok esetén vag így, hanem az Espressif ESP32/ESP8266 és a STM32 esetén is! Ezek kerültek eddig tesztelésre. A működésből fakadóan, – nem áramköri lap/board függő a jelenség, hanem általános fordítási anomália!
És a megoldás… Ez a megoldás?
Ha valaki mégis az Arduino IDE 2.3.9-et használja, akkor gyanús esetben az IDE bezárása után törölhető a sketch-fordítási gyorsítótár.
- Windows alatt jellemzően itt található:
C:\Users\<felhasználó>\AppData\Local\arduino\sketches
- macOS alatt:
~/Library/Caches/arduino/sketches
- Linux alatt rendszerfüggő, gyakran:
~/.cache/arduino/sketches
Ez nem a saját sketch-eket törli, hanem az Arduino IDE ideiglenes fordítási állományait. A következő fordítás emiatt újra lassabb lesz, de nem kerülnek bele korábbi fordítási „maradékok”.
Parancssoros használatnál az Arduino CLI ad egy tisztább megoldást:
arduino-cli compile --clean -b <FQBN> <sketch_mappa>
Feltöltéssel együtt például:
arduino-cli compile --clean --upload -b arduino:avr:uno -p COM3 Blink
A --clean kapcsoló kényszeríti az átmeneti állományok törlését.
Megoldás – vagy inkább mégsem
A gyakorlati tanács jelenleg egyszerű: aki tanfolyamon, oktatásban, ügyfélnél vagy éles munkában használja az Arduino IDE-t, annak most nem érdemes az Arduino IDE 2.3.9-cel kísérletezni. A jelenlegi stabil és biztos megoldás: a visszaállítás az Arduino IDE 2.3.8-as verzióra, amíg az Arduino 2.3.9 gyorsítótár-kezelési hibájára nem érkezik javított kiadás.
Ha a program módosítása után mégis a régi kód fut, akkor nem feltétlenül a panellel van baj. Lehet, hogy az IDE a régi fordítási eredményt használja. Ilyenkor gyorsítótár-törlés vagy visszaállás Arduino IDE 2.3.8-ra.
Források
- Arduino fórum – Arduino IDE 2.3.9 [Arduino forum]
- Hordozható Arduino: telepítési útmutató és az előnyök, hátrányok [TavIR]
- Arduino IDE 2.3.9 – gyorsabb fordítás, de figyelj a cache-re [TavIR]
Kapcsolódó cikkek:
– Arduino IDE 2.3.9 – gyorsabb fordítás, de figyelj a cache-re
– Arduino VENTUNO Q: merre tart az Arduino az UNO után?
– Arduino IDE 2.3.8: nem látványos kiadás, de végre javítja az idegesítő hibákat
– Infravörös vevőmodul tesztelése Arduino UNO-val – hogyan olvassunk távirányítót digitálisan (KY-022)?
– Olcsón, Gyorsan, Jót – a szoftverfejlesztés háromszöge az Arduino világában






