AVR efektywne wykorzystanie RAM

A

artem

Guest
Moja appliaction na avr ATmega wykorzystuje ucos i mogą mieć 2 tryby pracy: - tryb GUI gdzie tekstowa widget zarówno menu działa - i tryb ruchu drogowego, gdzie wszystko łączność skanowanie portów .. realizujemy Te 2 moduloes nie są wykonywane w tym samym czasie - gdy gui aktywny moduł ruchu nie działa i na odwrót. Moduły te komunikują się przez eeprom - GUI przechowuje dane, moduł ruchu retrives danych z pamięci EEPROM. Aby uzyskać jeden plik HEX i skompilować oba ale to oznacza, że ​​nie będzie konieczne używanie baran jak baran na gui i moduły ruchu zajmują noncrossing lokalizacje SRAM. Atmega ma funkcja bootloader więc może być to może być wykorzystane do podziału programu na 2 integal części niezależnych. Moje pytanie - czy istnieje inna niż bootloadera jak drogi do 2 niezależne aplikację do ATmega aby zmniejszyć wymagania systemowe? innymi słowy jest to możliwe do kompilacji modułów jak ich stanowisk flash będą przypisane różne miejsca pamięci przy założeniu, że dzielić się sam SRAM, wektorów przerwań dla obu modułów nie są skrzyżowane i absolutna skok może być używany do przełączania między modułami. Problem może być również przydatny jeśli większa niż 64 kb zewnętrzny SRAM jest używane - jeżeli moduły mogą pracować samodzielnie załadowani do jednego programu kosmicznego każdy z nich może mieć własne strona 64. kB SRAM przełączane przez GPIO portu.
 
Witam 1) Musisz skonfigurować linker umieścić zarówno program w innej lokalizacji 2) Musisz uruchomić Uruchomiliśmy program, który pozwoli Ci wybrać działający moduł 3) przełączanie między modułem za pomocą wskaźników funkcji w języku C Wszystkiego najlepszego Bobi
 
kroki 2 i 3 nie jest problemem. Jak mogę polecić linker przeznaczyć te same pozycje Ram do różnych modułów zakładając, że będzie jeden wynikowy plik hex binarny? Obecnie używam IAR kompilatora.
 
Hello To alocate sam posion RAM na 2 memeory modułu można użyć ptr do lokalizacji barana Ale myślę, że chcesz alocte 2 moduły (2 Sperate Program) na tej samej pamięci {pamięć FLASH nie pamięć RAM) - użyj linker lub odczytać łącznik ręczny lub poprosić o pomoc kompilatora produkować wszystkiego najlepszego Bobi
 
Mogę nto stosować wskaźnik bo linker wykonuje absolutną alokację w czasie kompilacji, a jeśli 2 moduły skompilowane razem - ich symbol (np. var const) alokacja będzie jednoznaczna.
 

Welcome to EDABoard.com

Sponsor

Back
Top