Rozmiar wbudowanej pamięci flash jest niewystarczający

11

Korzystam z kontrolera TM4C1230C3PMI z instrumentu Texas w jednym z moich projektów. Ma 32 KB wewnętrznej pamięci flash, co nie jest wystarczające dla mojej aplikacji. Na rynku dostępne są mikrokontrolery o wyższej wielkości pamięci flash, których można używać, ale chcę korzystać tylko z tego mikrokontrolera. Zgodnie z moją wiedzą zewnętrzną pamięć EEPROM można wykorzystać do zwiększenia całkowitego rozmiaru pamięci flash (pamięć programu).

Czy moje myślenie jest prawidłowe?

Jeśli nie, proszę zasugerować, jak mogę zwiększyć całkowity rozmiar pamięci flash kontrolera?

Sanjeev Kumar
źródło
1
Zewnętrzna pamięć EEPROM jest zwykle używana do przechowywania danych, ponieważ wewnętrzna pamięć Flash pozwala na mniej cykli kasowania / zapisu niż większość pamięci EEPROM i może zostać zastąpiona bajtowo. W przypadku procesorów z interfejsem zewnętrznej magistrali (twój nie ma tego) możliwe byłoby dodanie zewnętrznej pamięci programu (jednak jest to trochę skomplikowane ...). Teoretycznie byłoby możliwe przechowywanie fragmentów kodu w zewnętrznej pamięci EEPROM i załadowanie tego kodu do pamięci RAM, aby go wykonać - jednak w większości przypadków ten scenariusz nie jest realistyczny.
Martin Rosenau
3
Wiele lat temu powiązana maksyma brzmiała: „Jeśli nie możesz tego zrobić w 1K, nie możesz tego zrobić”. Myślałem, że to sprytne i warte przemyślenia, ale tak naprawdę nie zaakceptowałem tego. Następnie MicroChess przybył w 1K.
user2338816
1
Dlaczego nie uruchamiasz kodu z pamięci zewnętrznej? Istnieje wiele zewnętrznych pamięci, które można połączyć z komputerem. Nie spowoduje to ograniczenia wewnętrznej pamięci flash, ponieważ kod będzie uruchamiany zewnętrznie.
AlphaGoku,

Odpowiedzi:

22

Nie można rozszerzyć pamięci programu (flash). TI produkuje ten sam układ z podwójną pamięcią flash i pamięcią RAM, ale nic innego się nie zmieniło: TM4C1230D5PMI .

Jeśli nie możesz użyć układu z większą pamięcią flash, musisz zmniejszyć rozmiar kodu:

  • Wyłącz debugowanie, takie jak kosztowna printffunkcja. A, printfktóry obsługuje dane zmiennoprzecinkowe, zwykle spowoduje powrót do około 5 KB-10 KB.
  • Upewnij się, że kompilujesz z włączoną optymalizacją - zwykle jest to flaga kompilatora -Os.
  • Nowoczesne kompilatory potrafią optymalizować czas łącza (LTO) . Z gcc dostajesz to za pomocą -flto. Musisz przejść -fltodo etapu kompilacji i odsyłacza, dla wszystkich plików. Zwykle zmniejsza to rozmiar produkowanego kodu o 30% -50%.
kod podstawowy
źródło
2

Możesz uzyskać najmniejszy ślad oprogramowania, używając asemblera i języka podobnego do Fortha, zaprojektowanego do Twoich celów. Kolejnym jest skompresowany kod maszynowy, jeśli jest dużo prawie identyczny kod.

Mikkel Alan Stokkebye Christia
źródło