ARM`y - początki

Jun 06, 2005 19 Replies

Witam wszystkich. Do wczoraj wystarczały mi 51`ki i AVR`y. Radziłem sobie z nimi (mam nadzieję) dosyć dobrze. W końcu jednak przyszedł czas na ARM`y. Nie chę się bawić w starter`kity, więc na początek, m.in. z powodu wbudowanego flash`a wybrałem AT91SAM7S64. Zacząłem sobie o tym wszystkim czytać, czytać..... i doszedłem do wniosku, że zaprogramowanie tego to nie jest to samo co ISP+PonyProg w AVR`ach :-) To co wiem (ale niewiele):



- bezapelacyjnie potrzebny jest interfejs JTAG. Mam zamiar wyrzeźbić coś takiego:

formatting link
to wystarczy, czy będzie "toto" współpracowało z "CrossStudio for ARM", z którego chcę korzystać? Czy "CrossStudio for ARM" jes dobrym wyborem? Załóżmy, że tak, to czy z poziomu CrossStudio przy pomocy (wyżej opisanego) JTAG`a da się załadować program do ARM`a? Jeżeli jest inaczej, to proszę o możliwie dokładne opisanie procedury programowania tego mikrokontrolera, tak krok po kroku:-) Gdzieś wyczytałem, że trzeba stworzyć sobie bootloader, załadować go do RAM`u i dobiero przy jego pomocy zaprogramować wewnętrzny flash. Rónież obiła mi się o oczy informacja o czymś takim jak "SAM-BA". Ale jak to wszystko ugryźć i nie połamać sobie na samym początku zębów? Słyszę, że dzwonią, ale nie wiem gdzie :-)



Zapewne nie jestem jedyny, który chciałby, ale nie wie do końca jak zacząć z ARM`ami przygodę. Proszę o możliwie konkretne naświetlenie tematu.



Pozdrawiam Meleks


Meleks napisał(a):

Najlepszym rozwiązaniem będzie zrobienie odpowiednika WIGGLER

formatting link
. Działa na 100% z CrossStudio.

Moim zdaniem CrossStudio jest dobrym wyborem z tym ze nie jest darmowy. Jako kompilator wykorzystuje GCC. GCC jest darmowy ale płaci się właśnie za IDE i debugger który zrobiony jest rewelacyjnie. Programowanie jest banalnie proste. CrossStudio załatwia wszystko automatycznie. Czyli podłączamy JTAG i robimy start i po tym następuje automatyczne ładowanie programu do RAM lub FLASH i start procesora. Gdy nie był ustawiony break point to robi się stop na wejściu procedury main. Tak że w przypadku CrossStudio nie trzeba martwic się bootloaderami. I jeszcze ten programatorek JTAG pracuje również z GDB. Jest tylko jeden problem nie da się załadować program do FLASH tylko do RAM ale jest darmowy. Jak sie nie myle to GDB jest w zestawie

formatting link
.

Pozdrowienia framer

Dzięki za link. Właśnie oglądnąłem ten schemat i naunęło mi się parę pytań:

- co ustawia się zworkami J1 i J2;

- pinologia złącza X2 nie odpowiada standardowi złącza JTAG(14pin) Co do opisanych sygnałów na X2 to nie ma problemu. Co jednak z sygnałami na pinach 9,10,11,12 Jak to ożenić ze standardem złącza JTAG(14pin) aby było 100% prawidłowo i działało w 100% z CrossStudio? Sorry za być może banalne pytanie, ale jak mówiłem wcześniej nie miałem do tej pory z tym do czynienia i chciałbym możliwie bezboleśnie ominąć takie właśnie "banalne problemy".

No to na razie jestem pocieszony :-)

Meleks

Też sobie wczoraj kupiłem tego ARMa, powinien przyjść przed weekendem. :-) Mam tylko dwa pytania:

  1. Czy ByteBlasterMV, którego używam do FPGA będzie bez problemu współpracował z programami do ISP do ARMów? Niby i tu jest JTAG i tam jest JTAG, ale nie chcę się nieprzyjemnie zdziwić.
  2. Jeśli bufor jest zamontowany we wtyczce LPT, to jakiej długości kabla programującego nie należy przekraczać?

Pozdrawiam Piotr Wyderski

Meleks napisał(a):

for ARM: R8-R11, R13, VT2, J1, J2, X2.11-X2.14 nie instalować . Z tych tranzystorów dla ARM jest ważny tylko VT1 i R12. Nie opisane piny są nieużywane. Co do standardu JTAG to może być rozbieżność w pinach tego dokładnie nie wiem. Generalnie uruchomiłem CrossWork dla płyty na bazie LPC2124 , ale z Atmelami też musi chodzić (też o tym słyszałem). Tak że proponuje porównać schemat

formatting link
i jakiś schemat do AT91SAMXXX. Jest jeszcze jedna zwora której niema na schemacie. Jak będzie potrzeba to zobaczę i podam ale nie w tej chwili. Pozdrowienia framer

No qrna, ślepota mnie ogarnia, przeca jak byk stoi :-)

Może chodzi o zworę pomiędzy pinami 8-15 na złączu do LPT (DB25)? Widziałem ją w paru innych schematach, a na tym i poprzednim moim linku jej nie ma. No chyba że jeszcze coś innego.

Pozdrawiam Meleks

Prosty JTAG podłączany do LPT to najmniejszy problem w przypadku ARM większym problemem jest soft który podtrzymuje danego JTAGa. Tak że trzeba patrzyć na to z czym będziemy pracować. Nie słyszałem o tym żeby jakiś soft podtrzymywał ByteBlaster dla ARM za wyjątkiem PPPCB

formatting link
. Generalnie dla ARM z programatorów JTAG pod LPT najbardziej znany jest WIGGLER (GDB ,CROSSWORK , IAR ).

W przypadku WIGGLER nie zalecane więcej niż 20cm od buforów.

pozdrowienia framer

Meleks napisał(a):

Tak , dokładnie to jest to. Ne wiem czy to wpływa na prace z Cross Work ale na GDB od 1.5 w góre to tak. Pozdrowienia framer

No to "śmy som w domie". Przynajmniej jak na razie :-) Zaopatrzony w podstawowe narzędzia (a przynajmniej w informację o nich) idę na wielką wyprawę poznawczo-badawczą :-) Jak będą jakieś problemy, to na pewno jeszcze się odezwę.

Pozdrawiam Meleks

On Mon, 06 Jun 2005 09:43:30 +0200, Meleks snipped-for-privacy@poczta.neostrada.pl> wrote: [.....]

Wystarczy.

IMO to dobre narzędzie. Aczkolwiek AFAIR trzeba za nie dać $500. Kompilatorem jest gcc, a debugger i IDE jest produkcji Rowley'a.

Da się załadować i da się debugować.

Regards, /J.D.

On Mon, 06 Jun 2005 11:05:13 +0200, framer snipped-for-privacy@go2.pl wrote: [.....]

Ten schemat z SourceForge to też jest klon Wigglera. :-) Chociaż już trochę zdezaktualizowany. W każdym bądź razie z CrossWorks chodzi bardzo dobrze.

Regards, /J.D.

On Mon, 06 Jun 2005 11:55:05 +0200, Meleks snipped-for-privacy@poczta.neostrada.pl> wrote: [.....]

14 pinowy JTAG dla ARM-ów już raczej nie jest standardem. Obecnie jedynym słusznym :-) złaczem jest 20 pinowe IDC preferowane przez ARM-a i Macraigora.

Natomiast JTAG jako taki AFAIK nie ma specyfikacji mechanicznej. Są tylko złącza i konfiguracje pinów preferowane przez producentów krzemu i płytek ewaluacyjnych.

Regards, /J.D.

Z CrossWorks nie ma problemu, natomiast problemy są gdy pracuje się z OCD Commanderem i OCDremote Macraigora. Sugeruję poszukać w archiwach comp.sys.arm wątku "Macraigor OCD Commander and Wiggler clones" z połowy stycznia. :-)

BTW. GDB 1.5??? Ja sądziłem że aktualną wersją jest 6.3 (jeśli nie ma już nowszej). :-)

Regards, /J.D.

Zakładając że zrobisz sobie odpowiednią przelotkę z wyjścia BB na wejście JTAG płytki z ARM-em albo po prostu umieścisz na tej płytce złącze z pinologią zalecaną przez Alterę to:

- teoretycznie (bo nie sprawdzałem tego w praktyce) będziesz mógł zaprogramować uC przy pomocy programatora z Quartusa,

- nie będziesz mógł debugować softu bo AFAIK, ponieważ AFAIK żaden z popularnych debuggerów nie supoortuje BB; chociaż teoretycznie mógłby - trzebaby wprowadzić trywialne zmiany w kodzie.

Wszystko rozbija się o to, że popularne interfejsy JTAG i oprogramowanie z nimi współpracujące po stronie portu równoległego wykorzystują różne kombinacje pinów.

Dlatego lepiej pospawaj sobie ten układ z Sourceforge'a, najlepiej z uwzględnieniem zwory pomiędzy pinami 8-15 złacza DB25 której nie ma na tym schemacie

Regards, /J.D.

A można namiary na aktualny schemat?

Pozdrawiam Meleks

Dołączę się do topiku. Czy można gdzieś kupić same płytki demo/evb/kit pod LPC2131+ lub LPC2292 ? Wyposażenie dowolne aby był UART, JTAG, wyprowadzone piny i reset:) Aktualnie mam do wyboru: rzeźbić samemu + faldruk (czas i kasa) albo import kompletnej płyty z olimex.com (kasa i szkoda układów w szufladzie).

Sorry chodzili mi o OCD Pozdrowienia framer

Za duże bydlę. Ja wolę standard Atmela czyli 2x5 pinów (jak JTAG w starterkitach z AVRami albo w sondzie ATJTAGICE).

Nie znam namiarów na aktualny schemat, ale poniżej jest działający schemat wypracowany wspólnie z ludźmi z comp.sys.arm - została dodana zwora pomiędzy pinami 8 i 15 złącza DB25.

Simple JTAG interface circuit. ==============================

PL1 25wayD Male PL2 20wayIDC

PL1/17-25 <--------------+-------------------------+--+-----------< PL2/4,6,8, | | | 10,12,14, | AC244 200nF = = 4.7uF 16,18,20 | +------------+ Vcc | | TDI 0v +-| 1 20 |-+--------+--+-----------< PL2/1,2 PL1/5 >-------------------| 2 19 |-+ TMS | 3 18 |-----XXXX----------------> PL2/5 PL1/3 >-------------------| 4 17 | 51R TCLK | 5 16 |-----XXXX----------------> PL2/7 PL1/4 >-------------------| 6 15 | 51R | 7 14 |-----XXXX----------------> PL2/9 PL1/8 >---+ +----| 8 13 | 51R | | | 9 12 |-----XXXX---+ PL1/15 >---+ | +-| 10 11 | 51R | | | +------------+ | | V 0v | +------------------------------------------< PL2/13 TDO | PL1/11 <---------------------------------------------+

DTC114 /-------xxxx----------------< PL2/15 RST 10k | / 51R PL1/2 >----------------XXXX--+---|< | | \ X V 47k X | X | | | V 0v V

Regards, /J.D.

  1. Na złączu IDC20, oprócz standartowych sygnałów, JTAG-a mogą być umieszczone dodatkowe opcjonalne sygnały RTCK, DBGRQ i DBGACK.
  2. W przypadku IDC20 przewody sygnałowe są "poprzeplatane" przewodami na potencjale GND - bez tego mogą dziać się cuda i można stracić sporo czasu zanim się dojdzie o co chodzi. :-)
  3. Przy prototypach rozmiar złącza JTAG-a w zasadzie nie ma znaczenia; przy producji seryjnej często wogóle nie używa się złącz tylko zwykłych (porozrzucanych po PCB) padów i programuje się układy za pomocą igieł testowych - vide PDA, niektóre tunery satelitane.

Regards, /J.D.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required