procek z zewnetrzna pamiecia programu

Chciałbym się dowiedzieć czy poza rodziną 8051 istnieją jakieś w miarę łatwo dostępne mikrokontrolery 8 bitowe(ewentualnie mogą być 16 btowe) które mogą pracować z zewnętrzną pamięcią programu? Mówiąc dokładniej chodzi mi o taki tryb pracy: program wykonywany z wewnętrznej pamięci lub fragmentu zewnętrznej(która może być przeprogramowana tylko zewnętrznym programatorem) odbiera plik hex z peceta i wrzuca do do RAM-u lub jakiegoś flasha(który w tym momencie jest traktowany jako pamięć danych). Następnie dokonuje skoku w odpowiednie miejsce tej pamięci i pobierane z niej dane zaczyna traktować jak kod maszynowy programu do wykonania.

Reply to
badworm
Loading thread data ...

Wysyłając taki oto zestaw znaków dnia 04-06-25 00:18 DAAMOOK nakarmił(a) stado głodnych newsserwerów:

O bootloaderach wiem. Mi chodzi o coś odrobinę bardziej zaawansowanego: normalnie uruchamiany jest program zaszyty w pamięci wewnętrznej(nazwijmy go BIOS) który ma możliwość odebrania/wysłania innego programu z/do peceta. Ten HEX z PC jest ładowany do zewnętrznej pamięci danych(podzielonej na banki by można było takich programów załadować więcej) i następnie może być traktowany jako dane(np. dla innego wgranego z PC programu) lub program do wykonania z możliwością w każdej chwili powrotu do BIOS-a. Czyli w skrócie poszukuję procka, który może pracować jednocześnie z zewnętrzną pamięcią danych i zewnętrzną pamięcią programu i fizycznie ma to być jedna kostka sterowana właściwą kombinacją stanów logicznych.

Reply to
badworm

On Fri, 25 Jun 2004 18:06:45 +0200, badworm snipped-for-privacy@post.pl wrote: [.....]

Np. H8 lub ARM. Oczywiście mam na myśli te modele, które mają wyprowadzone na zewnątrz obudowy odpowiednie szyny.

Regards, /J.D.

Reply to
Jan Dubiec

Wysyłając taki oto zestaw znaków dnia 04-06-26 00:13 Jan Dubiec nakarmił(a) stado głodnych newsserwerów:

Prosiłem o coś małego a nie od razu z grubej rury :-) Swoją drogą zastanawiałem się kiedy padnie propozycja użycia ARM-a...

Reply to
badworm

Zakładałeś na początku, że chodzi o 8-bitowiec. Jeżeli niekoniecznie - to zdecydowanie polecam ARMa. Za kilkanaście Euro kupisz już atmelowego ARMa z 128KB RAMu na pokładzie. Wystarczy spokojnie na całkiem spory program i dane. A dospawać kolejne 1MB SRAM na zewnątrz to żaden problem. Nie potrzeba nawet dodatkowego dekodera adresów - w ARMie są 4 wyjścia Chip Select (czy 8? nie pamiętam teraz) i można je konfigurować na różne zakresy adresów z różnymi cyklami oczekiwania.

Reply to
Adam Dybkowski
Reply to
invalid unparseable

Wysyłając taki oto zestaw znaków dnia 04-06-26 21:48 Adam Dybkowski nakarmił(a) stado głodnych newsserwerów:

Czyli pewnie skończy się na jakieś szybszej i lepiej wyposażonej '51 bo do ARM'ów to mi droga daleka. Poza tym nie mam aż takich wymagań jeśli chodzi o pamięć - BIOS nie powinien przekroczyć 16kB, pamięci danych/programów nie będzie chyba więcej niż 256kB.

Reply to
badworm

Ale one nie są wcale takie "duże". Wręcz przciwnie - parę rzeczy się upraszcza w stosunku do ośmiobitowców.

Regards, /J.D.

Reply to
Jan Dubiec

Wysyłając taki oto zestaw znaków dnia 04-06-27 12:40 Jan Dubiec nakarmił(a) stado głodnych newsserwerów:

Na przykład? Bo o tym, że większość instrukcji można wykonać warunkowo to już słyszałem.

Reply to
badworm

Instrukcja jest wykonywana warunkowo w trybie 32 bitowym. W trybie 16 bitowym kod dziala klasycznie czyli bada stan flag rejestru statusu i na tej podstawie wykonuje skoki pomijajace fragmenty kodu.

Co sie upraszcza:

-zarzadzanie pamiecią. ARM ma 32 bitowa liniową przestrzen adresową a w niej są wmapowane wszystkie peryferia. Inaczej mówiąc dostęp do rejestrów wbudowanych układów peryferyjnych nie różni sie od dostępu do pamieci. ARM nie ma specjalnych instrukcji dostepu do peryferiów w szczególnosci nie ma odpowiednika instrukcji OUT i IN znanej np. z procesorów Intela.

-wiekszosc implementacji ARM ma pseudowektorowy system obslugi przerwan. Przerwaniami zarządza handler w maszynówce ktory rozsyła przerwania do odpowiednich procedur obslugi. Jest to nieco wolniejsze od trybu full wektor, ale funkcje obslugi przerwan sa zwykłymi funkcjami C w stylu void procedura_obslugi(void) { akcja } Dla poczatkujacych takie podejscie to miodzio.

-znacznie upraszcza sie obsluga przerzutów bloków pamieci, bo kazdy rejestr procesora moze byc baza do adresowania pamieci. Nie ma tego typu ograniczen jak pojedynczy DPTR w 8051.

-ARM z zalozenia nie programuje sie w maszynówce. Poza kodem startowym i handlerem przerwan (i ewentualnie przełączaniem trybów 32 i 16 bit) nie ma

potrzeby stosowania maszynówki.

-jesli konstrukcja procesora na to pozwala mozna dolaczac zewnetrzną pamiec o duzej pojemnosci przy czym mogą to byc np. pamieci SDRAM których prawie na pewno nie da sie podlaczyc nawet do wypasionych klonów '51 (a moze sie myle!). i innych 8 bitowców.

To tyle na początek.

B.

ARMmaniak od stycznia 1999.

Reply to
B

Jest oczywiscie gcc i to rozwiazanie polecam. Korzystalem tez jakis czas z CodeWarriora - tam bylo cale srodowisko z edytorem i kompilatorem (IDE) oraz dolaczony bardzo wygodny symulator ARMa. Ale i tak polecam gcc, bo CW kosztuje AFAIR z $5000. :-(

Reply to
Adam Dybkowski

Nie znajdziesz chyba '51, do ktorej mozna w miare bezbolesnie doczepic wiecej niz 64KB pamieci danych. Pozostaje bankowanie, czasem wspierane jako-tako przez kompilator. Ale to nie jest wygoda uzywania ARMa z 32-bitowymi wskaznikami i praktycznie nieograniczona pamiecia (ograniczenie konkretnej kostki np. do 32MB to chyba nie jest ograniczenie? :-))

Reply to
Adam Dybkowski

A to juz zawadzamy o nie tak bardzo podstawowe architektury. Najczesciej spotykane (i najtansze) kostki maja rdzen ARM7TDMI, taktowanie ze 100MHz i brak zaawansowanego kontrolera pamieci (MMU), do nich tez nie da sie doczepic pamieci SDRAM.

Ale do niezbyt wydumanych zastosowan powinien wystarczyc ARM z pamiecia wewnetrzna RAM 128-256KB, do tego mozna dolozyc na zewnatrz kostke 512KB i juz. Nic wiecej nie potrzeba do zabawy poza drobiazgami typu LCD, jakas klawiatura, diodki. No i mala pamiec Flash na bootloader/monitor (np. Angel lub RedBoot, z ktorymi umie zagadac gdb).

Polecam obejrzenie schematu atmelowego starterkitu EB40 - tam wszystko widac, co podlaczyc. Kupowania natomiast gotowego kitu nie polecam, mam taki w firmie, kosztowal chyba z 1000 zl a po miesiacu zostal odlozony do szuflady. Po prostu same elementy takiego starterkitu kosztuja ze 200 zl - warto od razu zrobic wlasna plytke dopasowana do potrzeb (np. z kontrolerem LANu).

Reply to
Adam Dybkowski

Wysyłając taki oto zestaw znaków dnia 04-06-27 22:09 Adam Dybkowski nakarmił(a) stado głodnych newsserwerów:

W grę jak najbardziej wchodzi bankowanie ale takie na piechotę - nie potrzebuję mieć cały czas dostępu do tych 256kiB pamięci danych/programu. Z poziomu BIOS-a zadecyduję, który bank chcę zapełnić, załaduję do niego plik z PC i uruchomię. Ale właśnie zdałem sobie sprawę, że mój pomysł ma wadę - nie pozwala wykorzystać tej pamięci danych/programu jako pamięci danych w momencie uruchomienia z niej programu :-( Będę musiał jeszcze raz przemyśleć założenia i przede wszystkim przejrzeć listę bardziej wypasionych 8051 bo na razie cena rzędu 100PLN za 89C420 mnie odstrasza.

Reply to
badworm

Wysyłając taki oto zestaw znaków dnia 04-06-27 22:16 Adam Dybkowski nakarmił(a) stado głodnych newsserwerów:

A ile kosztuje sam procek siedzący w takiej płytce?

Reply to
badworm

Tam jest dosyc prosty 33MHz (popedzany 32.768MHz) ARM7TDMI z 136KB RAMu na pokladzie, do tego FLASH PLCC w podstawce, AFAIR 512KB SRAMu na zewnatrz, jakies diodki i przyciski. Sam procesor AT91R40807 kosztuje kilkanascie Euro.

Takie ceny ARMow, ktore mnie interesuja, dostalem jakis czas temu z Seguro (ilosci detaliczne na zamowienie, ceny netto): AT91R40807-33AI 19 Euro 2-3tyg AT91R40008-66AI 15 Euro 6-8tyg

Reply to
Adam Dybkowski

Za tyle kasy to juz kupisz porzadnego ARMa 66MHz (AT91R40008), gdzie

256KB RAMu bedzie w srodku. A na zewnatrz doczepic kolejny 1MB i nie bedzie mialo znaczenia, czy potrzebujesz to na dane, czy program.
Reply to
Adam Dybkowski

Wysyłając taki oto zestaw znaków dnia 04-06-28 22:42 Adam Dybkowski nakarmił(a) stado głodnych newsserwerów:

Zapowiada się miodnie. Ale pewnie na razie sobie odpuszczę z bardzo prozaicznego powodu - braku czasu. Pierwszą wersję zrobię na jakieś '51, w międzyczasie jako-tako postaram się opanować C na mikrokontrolery i może jakieś mocniejsze procki będą na uczelni to się nadarzy okazja do nauki :-)

Reply to
badworm

Wysyłając taki oto zestaw znaków dnia 04-06-28 22:30 Adam Dybkowski nakarmił(a) stado głodnych newsserwerów:

A jak z obudową? Da się to polutować w domu?

Reply to
badworm

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.