Ile kodu może pomieścić Arduino Uno

Ile kodu może pomieścić Arduino Uno

Arduino i wszechstronne urządzenia oparte na mikrokontrolerze używają pamięci do przechowywania danych. Pamięć jest istotną częścią każdego systemu obliczeniowego, szczególnie jeśli chodzi o systemy i projektowanie wbudowane. Przydzielanie pamięci Arduino w sposób dynamiczny poprawia wydajność płyt Arduino. Pamięć może przechowywać wejścia i wyjścia pochodzące z czujników i innych urządzeń podłączonych do Arduino. Tutaj omówimy, ile kodu Arduino Uno może przechowywać w jego pamięci.

Arduino Uno Allocation

Mikrokontrolery stosowane w płytkach Arduino są specyficzne dla wbudowanych aplikacji systemowych. W przeciwieństwie do konwencjonalnego komputera zwykle używanego w naszych domach i biurach Mikrokontrolery mają dobrze zdefiniowane zadania dotyczące tego, co zaprojektowali. Mikrokontrolery nie mają wielowarstwowego buforowanego pamięci opartej na wirtualnej pamięci opartej na dysku używanych w procesorze domowym. Zwykle podczas programowania Arduino UNO pamięć nie jest uważana za większość czasu, dopóki kod nie zostanie utknięty z powodu problemów z niską pamięcią. Aby uzyskać rozwiązanie, musimy najpierw zrozumieć problem.

Tablice Arduino składają się głównie z trzech rodzajów pamięci.

  • Sram To miejsce, w którym Arduino tworzy zmienne używane w szkicach i odpowiednio je manipuluje.
  • Błysk Pamięć jest miejscem do programu, w którym piszemy szkice Arduino i przechowuje kod Arduino.
  • EEPROM to przestrzeń, która zwykle przechowuje długoterminowe dane obecne w naszym szkicu.

SRAM to niestabilna pamięć, której dane zostaną utracone po zasilaniu Arduino, gdy Flash i EEPROM nie są wolne; Ich informacje utrzymują się, nawet jeśli usuniemy moc Arduino.

Oto krótkie porównanie różnych płyt Arduino Microcontrollers Przydział pamięci:

Arduino Edytor Błysk Sram EEPROM
Uno, Uno Ethernet, Pro Mini, Nano 3.0 ATMEGA328 32KB 2KB 1KB
Leonardo, Micro ATMEGA32U4 32KB 2.5KB 1KB
Mega ATMEGA256 256KB 8KB 4KB

Ile kodu może pomieścić Arduino Uno

Ile kodu Arduino Uno może przechowywać? Odpowiedź na to pytanie brzmi: wszystko zależy od tego, w jaki sposób programujemy Arduino Uno. Arduino Uno ma trzy rodzaje pamięci, jak omówiono wcześniej, jeśli przekroczymy którykolwiek z tych kodów nie skompiluje. Arduino Uno ma 32KB z Pamięć flash co jest wystarczające do napisania tysięcy wierszy kodu.

Zwykle podczas pisania kodu Arduino Sram jest najcenniejszą pamięcią na płytkach Arduino. Arduino Uno ma tylko 2 kb SRAM, co równa się 2048 bajtów. To nie jest zbyt wiele, aby zaprogramować Arduino UNO dla rozległych interfejsów użytkownika i aplikacji graficznych. Arduino jest wystarczająco mocny, aby kontrolować silniki, czujniki i sterowniki, ale niewystarczające, aby poradzić.

Aby sprawdzić, ile miejsca wykorzystuje szkic Arduino, uruchom program i poszukaj użycia pamięci w wyjście okno.

Na przykład po skompilowaniu prostego LED miga Program, otrzymaliśmy dane wyjściowe, jak pokazano poniżej. Tutaj 2% Błysk Pamięć równa 924 bajtów z 32256 bajtów (32 kb) jest używana przez program mrugania napisany w Arduino IDE. Podczas gdy 9 bajtów SRAM z całkowitej 2048 bajtów (2KB) jest wykorzystywanych do tworzenia zmiennych używanych do szkicu LED LED mrugania.

Kiedy skompilujemy program Arduino, IDE poinformuje, jak duży jest problem. Korzystając z niektórych technik optymalizacji, możemy zwiększyć zdolność do przechowywania programu Arduino. Poniżej obraz pokazuje przykład SRAM i pamięci flash, która przekracza limity danych mikrokontrolera.

Jak zoptymalizować pamięć Arduino

Zauważ, że nie ma tam dużo pamięci Arduino Uno, takich jak SRAM, ma tylko 2 kb. Można go łatwo użyć za pomocą bezużytecznych strun w szkicu. Na przykład:

Char Message [] = "Linuxhint.com ";

Deklaracja taka może zjeść dużo SRAM. Tutaj „Linuxhint.com ” wkłada 14 bajtów do SRAM, każdy z tych char bierze 1 bajt, plus 1 dla terminatora „\ 0”.

Jak zoptymalizować kod Arduino w celu lepszego wykorzystania pamięci

Optymalizacja kodu Arduino jest niezbędna dla złożonych projektów, więc oto kilka sposobów optymalizacji szkicu Arduino.

Usuń martwy kod

Jeśli kod Arduino wywołuje wiele bibliotek, może istnieć szansa, że ​​część kodu nie jest używana. Usuń wszystkie nieużywane biblioteki, funkcje i zmienne. Jeśli ktoś nie jest ich pewien, skomentuj to. Jeśli program nadal kompiluje się i działa dobrze, to część kodu nie jest używana przez Arduino.

Biblioteki zużywają dużo SRAM, na przykład korzystanie z biblioteki kart SD może zająć do 1 kB SRAM. Unikaj niepotrzebnego użycia biblioteki podczas pisania szkiców.

Przechowuj stały ciąg w pamięci Flash

Statyczne struny mogą być jedną z głównych przyczyn odpadów pamięci Arduino. Na przykład:

Seryjny.println („Linuxhint.com ”);

Takie statyczne struny są automatycznie kopiowane w SRAM z pamięci flash. Aby tego uniknąć, użyj F () makro funkcjonować. To uniemożliwi SRAM wywołanie go bezpośrednio i zapisuje pamięć. Funkcję f () można zastosować w następujący sposób:

Seryjny.println (f („Linuxhint.com "));

Za pomocą makro f () w powyższym ciągu zapisaliśmy 14 bajtów SRAM.

Prawidłowy typ danych

Używając dużych tablic i tabel wyszukiwania, użyj typu danych zgodnie z potrzebą. Użyj najmniejszego typu danych, który może łatwo dopasować dane. Na przykład, int weźmie dwa bajty bajt zajmie tylko jeden. Podobnie unikaj używania pływaka, gdy masz liczbę całkowitą, spróbuj używać int int. To pozwoli zaoszczędzić dodatkowe bajty w szkicu Arduino, co da ogólnie dodatkowe miejsce do pisania szkiców. Różne typy typów danych i pamięć, które zajmują w Arduino, pokazano w poniższej tabeli:

Typ danych Rozmiar (bajty) Zakres wartości
Próżnia 0 zero
Bool/boolean 1 Prawda fałsz
Zwęglać 1 -128 do +127
niepodpisany char 1 0 do 255
Bajt 1 0 do 255
Int 2 -32 768 do 32 767
niepodpisany int 2 0 do 65 535
Słowo 2 0 do 65 535
Długi 4 -2 147 483 648 do 2 147 483 647
bez podpisu długie 4 0 do 4 294 967 295
Platforma 4 -3.4028235e+38 do 3.4028235e+38
Podwójnie 4 3.4028235e+38 do 3.4028235e+38
Strunowy - Tablica postaci

Wniosek

W tym przewodniku omówiliśmy, ile kodu może utrzymać Arduino Uno, dalej omawialiśmy różne parametry, które prowadzą do problemów z niską pamięcią. Dynamiczna alokacja pamięci za pomocą funkcji Arduino może być bardzo pomocna w budowaniu projektów. Za pomocą wspomnianych technik można zoptymalizować użycie pamięci Arduino.