Cześć. Zastanawia mnie jedna sprawa dotycząca tych uC. Jak to jest z ich architekturą. Podobno jest harwardzka? Tylko dlaczego w dokumentacji pamięć jest pokazana jako ciągła czyli flash potem RAM w adresach rosnących? Czy jeśli była by to faktycznie harwardzka to czy Flash i RAM nie powinny zaczynać się od zera?
STM32 architektura pami?ci.
May 30, 2011
27 Replies
W dniu 2011-05-30 06:29, slawek7 pisze:
To co widzi programista nie musi się pokrywać z tym jak fizycznie są podzielone magistrale.
Dobrze, ale w takim razie jaka jest fizyczna różnica dla programisty. W którym czasie użytkownik, programista odczuje róznicę w architekturze. Tego nie rozumiem.
W dniu 2011-05-30 08:05, slawek7 pisze:
Jedyna różnica jaką zauważysz, to prędkość. Można w jednym cyklu pobrać (następny) rozkaz z FLASHa i dane (do bieżącego rozkazu) z RAMu.
Czyli podczas programowania (pisania programu) nie ma żadnej różnicy? To po co tak zawsze głośno o tym? A STM32 jaka ma w końcu architekturę, bo czytam o sprzecznych opisach
ARMv7-M :) ARM napisał, że Harvard:
formatting link
że zmylił rdzeń ARM7TDMI-S, który ma architekturę ARMv4T. Trochę to zamieszane.
Michał
A znacie jakieś strony poświęcone STM32? Powiem szczerze że ciężko się połapać nawet w tych sygnałach zegarowych, juz nie mówiąc o tym że ciężko rozszyfrowac to jak to nazwali. Npco to jest AHB?
W dniu 2011-05-30 12:16, slawek7 pisze:
Wszystko jest dostępne na stronie producenta i ewentualnie na stronie ARM. Chyba nie oczekujesz, że ktoś ci tu będzie przepisywał pdfy?
formatting link
formatting link
Co prawda to nie stm, ale tam chyba co nieco było o szynie AHB i VPB.
The Insider's Guide to the Philips ARM7 - Based Microcontrollers
Paweł
To trochę tak - z punktu widzenia konstruktora, architektura jest harwardzka. Są dwie magistrale, koniec, kropka. Z punktu widzenia programisty - praktycznie von Neuman - jedna przestrzeń adresowa, nie wiesz, czy odnosisz się do pamięci programu (flash) czy danych (RAM). A czemu o tym głośno?? Bo gdyby było to zrobione w typowej architekturze von Neumana, to by działało wolniej i tyle ;)... Piszesz referat na ten tema, jakąś pracę, czy chcesz zacząć tego używać? Bo trochę nie wiem, jakiej wiedzy poszukujesz ;)...
Chcę zacząć tego używać. Tą książkę co powyżej pokazuje Zbych mam i wg mnie są tam sprzeczne rzezcy. Na początku pisze o jednym a potem wewnątrz coś zupełnie przeciwnego. Nie mogę też zrozumiec o co chodzi w tych własnie sygnałach zegarowych. Aby było śmieszniej nie doszukałem się w żadnym pdfie jakie mogą byc wartości preskalera dla każdego z tych sygnałów a nie mówiąc własnie co oznaczają niektóre skróty. Coś mi sie wydaje że są to zbyt nowe uC i chyba większośc działa po omacku.
Użytkownik "Konop" snipped-for-privacy@gazeta.pl napisał w wiadomości news:is0ega$aj8$ snipped-for-privacy@inews.gazeta.pl...
No zaraz, zaraz. Ale jest podstawowa kwestia... program da się uruchomić tylko z flesha, czy z RAM-u też. Bo jeśli tylko z flesha, to jest to typowa architektura harwardzka i adresacja ma tu drugorzędne znaczenie. Po prostu po zdekodowaniu adresu wiadomo do jakiej magistrali się odwołać a co za tym idzie można nie bawić się z osobnymi instrukcjami do odczytu flesha, jak to jest w AVR, gdzie przestrzenie adresowe się pokrywają.
W dniu 30.05.2011 19:09, slawek7 pisze:
Max częstotliwość magistrali zależy od modelu, ST robi wersje z max zegarem 36, 48, 72 MHz. To wszystko masz w pdfach.
W dniu 30.05.2011 19:24, Marcin Wasilewski pisze:
Program można też uruchomić z SRAMu.
Michał
Użytkownik "Michał Smolnik" snipped-for-privacy@fims.pl napisał w wiadomości news:is0qld$h50$ snipped-for-privacy@news.onet.pl...
Ale program będzie wolniej się wykonywał, przynajmniej korzystający z pamięci danych (w RAM).
Michał
W dniu 30.05.2011 23:05, Michał Lankosz pisze:
W datasheecie to rozwiązanie jest zaznaczone jako dla debugu.
Michał
W dniu 30.05.2011 23:05, Michał Lankosz pisze:
Ztcw będzie się szybciej wykonywał (i z mniejszym poborem prądu) - FLASH powyżej 24MHz musi mieć 1 a powyżej 48 - 2 wait-state. RAM - nie.
Dlaczego?
Użytkownik "Michoo" <michoo snipped-for-privacy@vp.pl napisał w wiadomości news:is128v$i0b$ snipped-for-privacy@news.onet.pl...
Elementarne. Jeśli instrukcje programu są pobierane z jednej magistrali, w tym samym czasie na drugiej magistrali mogą być pobierane dane. W opisywanym przypadku, gdy będziesz pobierał z SRAM dane, to nie będziesz mógł w tym czasie pobierać instrukcji. Oczywiście nie każda instrukcja polega na przesyłaniu danych. Ale na pamięci SRAM zapewne i jakieś DMA działa. A to wszystko pochłania cykle dostępu.
To co siedzi w tych prockach nosi nazwę zmodyfikowanej architektury Harvard czyli dwie oddzielne szyny do pobierania instrukcji i przesyłu danych, ale wspólna przestrzeń adresowa. To jest w zasadzie najbardziej elastyczne rozwiązanie dzięki któremu program i dane mogą ale nie muszą być umieszczone w fizycznie oddzielnych pamięciach włącznie z możliwością odseparowania tylko fragmentów kodu np. procedur obsługi przerwań. Dosyć adekwatnie przedstawia sytuację chociażby ten diagram:
formatting link
Jak widać, oprócz tradycyjnych szyn I i D jest jeszcze szyna systemowa z oddzielną przestrzenią adresową umożliwiającą alokację zarówno instrukcji jak i danych (z przewagą tego drugiego - m.in połączenia z peryferiami).
Ogólnie we współczesnych architekturach z wielowarstwowymi magistralami oraz złożonymi hierachiami pamięci i przestrzeniami adresowymi mapowanymi na wiele równolegle dostępnych zasobów te podziały na Harvardy i von Neumany wg mnie powoli tracą rację bytu - trzeba patrzeć na "pełen obrazek".
Pozdrawiam! Portal
A powiesz mi jeszcze gdzie znaleźć opisy (wyjaśnienienia) sygnałów zegarowych występujących w STM32 i ich preskalerów. Tylko prosze nie mówcie że jest to w pdfach, bo pewnie tak jest. Problem w tym, w którym?
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required