AT91SAM7 i US0

Loading thread data ...

artur napisał(a):

Nie znam się na ARMach Atmela, ale od razu nasunęła mi się odpowiedź. Aby się upewnić ściągnąłem sobie 42 stronicowy dokument ,,AT91SAM7S256/128/64/321/32 Preliminary Summary''.

Na pierwszej stronie napisane jest: ,,Single Cycle Access at Up to 30 MHz in Worst Case Conditions'', ale napisane jest też (linijka niżej): ,,Prefetch Buffer Optimizing Thumb Instruction Execution at Maximum Speed''

Z powyższych wnioskuję że wprowadzane są waitstate-y podczas dostępu do pamięci flash. Jako że twój procek taktowany jest 48MHz, to przy założeniu że dostęp do flash'a trwa dwa cykle, twój program wykonuje się tak samo szybko jak gdybyś taktował procesor zegarem 24MHz.

Jeśli dobrze kombinuję, czyli wszystko to co napisałem jest prawdą, widzę trzy rozwiązania:

  1. To które zaproponowałeś, tj. załadowanie kodu do ramu i uruchamiane go z tamtąd.
  2. Uruchomić kod w trybie Thumb (patrz ,,Prefetch Buffer Optimizing Thumb....'')
  3. Zmień procesor na LPC2xxx Philipsa - tam program może pracować z flasha bez waitstate-ów do 55MHz.
Reply to
Artur

Skompiluj program w trybie Thumb (-mthumb, ew. takze -mthumb-interwork), ustaw 1ws dla pamięci Flash jak obecnie, a program bez problemu pójdzie na 48 MHz bez opóźnień (wykorzystany zostanie 1-słowowy "cache" działający w trybie Thumb). Po szczegóły odsyłam do PDFa, rozdział o kontrolerze pamięci. Jako miły efekt uboczny binaria programu dodatkowo się zmniejszą.

Reply to
Adam Dybkowski

Witam !

Jak to (implementacja Profibus'a) Ci sie to udało ? Skąd doumentacja ? Jestem pod wrażeniem.

P.J

Reply to
P.J

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.