Na pewno wiemy już, że nasz system wyposażony zostanie w kość pamięci SDRAM… Otwartym jednak wciąż pozostaje pytanie:
Jaka dokładnie ma być ta pamięć?
Wybór pamięci SDRAM jest ogromny, więc postanowiłem sięgnąć po coś sprawdzonego i wykorzystywanego w wielu systemach prototypowych z mikrokontrolerami STM32F429/STM32F427. Okazuje się, iż zdecydowana większość z nich używa układu IS42S16400J, o pojemności 64Mb czyli 8MB. Patrząc z perspektywy gigabajtowych pojemności jakie można spotkać w przeciętnych nawet telefonach komórkowych, wspomniane kilka megabajtów nie robi większego wrażenia. Pamiętajmy jednak, iż jest to prawie 20x więcej niż będziemy mieli wbudowanej pamięci SRAM w naszym nowym procesorze.
Od strony mechanicznej, do wyboru mamy trzy rodzaje obudowy naszego scalaka – dwa z nich to obudowy typu BGA, a jedna – TSOP. Wybór jest tu dość oczywisty – montaż powierzchniowy kości BGA jest o wiele bardziej wymagający i niezbyt nadaje się do zastosowania w urządzeniu prototypowym. Z drugiej strony układy w obudowach TSOP zarówno łatwo przylutować jak i ewentualnie wylutować, np. w celu podmiany na kość o większej pojemności.
A gdzie tkwi haczyk?
Dotychczas interesowaliśmy się jedynie tym, że brakuje nam pamięci i na pewno będziemy potrzebowali dodatkowej, zewnętrznej kości. Dziś udało nam się znaleźć kandydata na to miejsce. Czy to oznacza koniec problemów? Niestety nie…
- Podłączenie kości pamięci pozbawia nas kilkunastu pinów procesora, które będą pełnić rolę linii adresujących oraz sterujących pracą pamięci SDRAM.
- Pamięć typu SDRAM, ze względu na swoją budowę, wymaga okresowego “odświeżania”. Oznacza to, iż przejście w jakikolwiek tryb niskiego poboru prądu spowoduje zniszczenie przechowywanych w niej danych, a co za tym idzie – wymusi ponownie ich wczytanie/utworzenie po wybudzeniu się urządzenia.
- W porównaniu do wbudowanej pamięci SRAM, czas dostępu jest kilkukrotnie dłuższy. Oznacza to, że wczytanie bądź zapisanie czegokolwiek do zewnętrznej kości pamięci będzie trwało znacznie dłużej niż ma to miejsce w przypadku pamięci wbudowanej. Wymusza to dokładne przemyślenie co należy umieścić w pojemnej, lecz wolnej pamięci zewnętrznej, a co pozostawić w szybkiej pamięci SRAM.
- Pamięć współdzieli magistralę danych z wyświetlaczem LCD. Oznacza to, iż nie jest możliwe jednoczesny dostęp do obu tych mediów. Ponadto połączenia muszą zostać zaprojektowane bardzo starannie, aby nie doprowadzić do powstawania zakłóceń.
,
Powyższa lista to jedynie część potencjalnych problemów, na jakie możemy się natknąć dodając pozornie tak “oczywistą” rzecz, jaką jest pamięć. Pokazuje ona również ponownie, jak bardzo złożonym procesem jest projektowanie i modyfikowanie systemów wbudowanych – zarówno tych najmniejszych, jak i tych już nieco bardziej rozbudowanych. Widzimy, że poruszenie jednego “kamienia” powoduje powstanie całkiem sporej lawiny zmian, która dotyka każdej niemalże warstwy, każdego aspektu. Wyliczmy kolejno: schemat ideowy, płytkę PCB, system zasilania, warstwę driverów sprzętu, warstwę alokacji pamięci, konfigurację linkera, wydajność i opóźnienia w systemie, mapę pamięci… Całkiem sporo tego… a czasu co raz to mniej…