4R|\/|-JT4G R 02 T R
Transkrypt
4R|\/|-JT4G R 02 T R
pejdŜ 1 4R|\/|-JT4G Rev02, TRM Rev01 4R|\/|-JT4G REV02 TECHNIKAL REFRENS MANJUŁAL pejdŜ 2 4R|\/|-JT4G Rev02, TRM Rev01 Tejból of kontentz I. Introdakszion.....................................................................................................................................3 II. Ficzery.............................................................................................................................................4 III. Chardłer..........................................................................................................................................5 1. Elementologia..............................................................................................................................5 2. Gniazdkologia i pinologia............................................................................................................6 3. Taśmologia...................................................................................................................................7 4. Cenologia.....................................................................................................................................7 5. Efekt finalny................................................................................................................................7 IV. Softłer............................................................................................................................................11 V. JusidŜ..............................................................................................................................................13 1. OpenOCD..................................................................................................................................13 2. IDE oparte o GDB.....................................................................................................................15 3. Crossworks (BETA info)............................................................................................................15 4. Gdzie szukać szczegółowych informacji?.................................................................................15 VI. FAKU...........................................................................................................................................16 VII. Trabelszóting...............................................................................................................................17 VIII. TU DO.......................................................................................................................................19 IX. TRM CzejndŜlog..........................................................................................................................20 X. Disklejmer.....................................................................................................................................21 XI. Appendiks.....................................................................................................................................22 pejdŜ 3 4R|\/|-JT4G Rev02, TRM Rev01 I. Introdakszion 4R|\/|-JT4G to JTAG dla procesorów opartych na rdzeniu ARM podłączany do komputera za pomocą magistrali USB. Projekt ten w całości bazuje na projekcie Turtelizer 21 dla Ethernut'a2. Z tego teŜ względu opis instalacji i uŜytkowania jest praktycznie identyczny. Przeróbki były konieczne, poniewaŜ zastosowane w Turtelizerze elementy (scalone bufory i inwerter) nie są dostępne w Polsce. RównieŜ wprowadzono kilka poprawek, aby układ mógł współpracować z targetami innymi niŜ AT91R40008. Nietypowe złącze zmienione zostało na standardowe, a projekt przystosowany do dostępnej w Polsce obudowy. 1 http://www.ethernut.de/en/hardware/turtelizer/ 2 http://www.ethernut.de/en/ pejdŜ 4 4R|\/|-JT4G Rev02, TRM Rev01 II. Ficzery 4R|\/|-JT4G posiada standardowe złącze JTAG 20 pin oraz złącze RS232 (10 pin gniazdo IDC) – emulowany w nim port COM jest w pełni funkcjonalnym portem – doprowadzone są do niego wszystkie sygnały sterujące (DCD, RX, TX, DTR, DSR, RTS, CTS, RI), napięcia w standardzie RS-232. JTAG bezproblemowo współpracuje z OpenOCD3, pozwalając na debuggowanie we wszystkich pakietach które z niego korzystają (m.in. Yagarto4). 4R|\/|-JT4G testowany był równieŜ przez krótką chwilę w środowisku Crossworks5. Testy w środowisku IAR pokazują, Ŝe nie moŜna w nim korzystać z opisywanego tutaj układu 4R|\/|-JT4G. 3 http://openocd.berlios.de/web/ 4 http://www.yagarto.de/ 5 http://www.rowley.co.uk/arm/index.htm pejdŜ 5 4R|\/|-JT4G Rev02, TRM Rev01 III. Chardłer 1. Elementologia Schemat, wzór płytek, rozkład i lista potrzebnych elementów znajdują się na końcu tego dokumentu. Układ zasilany jest częściowo przez złącze USB (główny układ scalony, EEPROM, transceiver RS-232), częściowo przez targeta (bufory U2, inwerter na tranzystorze Q1) za pośrednictwem złącza JTAG – pozwala to na konwersję poziomów napięcia i współpracę z układem o praktycznie dowolnym napięciu zasilania w zakresie dopuszczalnym przez zastosowany bufor (dla układu typu 74VHC244 w teorii 2V – 5.5V) . Obecność napięć zasilania sygnalizowana jest przez dwie diody: USB_P (przy gnieździe USB) oraz TRGT_P (przy gnieździe JTAG). Płytka drukowana ma wymiary około 40 mm x 60 mm. Płytka jest dwustronna i wymaga metalizacji otworów. Pasuje ona do obudowy typu Z-246 (o dowolnej z dostępnych wysokości). Większość elementów jest w obudowach SMD, jedynie kondensator elektrolityczny (1), tranzystor (1), diody LED (6), rezonator kwarcowy (1) oraz gniazda (3) są przeznaczone do montaŜu przewlekanego. Rezystory i kondensatory SMD są w obudowach rozmiaru 0805. Dodatkowo przewidziana została moŜliwość zastąpienia niektórych trudniej dostępnych elementów SMD elementami przewlekanymi: – – – kondensatory C5, C6 (27pF) przy rezonatorze kwarcowym, kondensatory C8, C9, C12 (470nF) przy transceiverze MAX3243, dławik FB przy gnieździe USB. Główny układ scalony U1 – FT2232 – moŜe być w wersji -C, -L jak i -D – nie ma to znaczenia dla tego projektu. Układ U3 – transceiver RS-232 MAX3243 – moŜe być w obudowie typu SSOP jak i TSSOP (warianty -CA-, -CU-, -EA- lub -EU-). Bufor 74xxx244 powinien być w obudowie typu SOIC-WIDE. Bufor ten powinien być buforem typu 74VHC244, 74AHC244 lub innym, spełniającym poniŜsze wymagania: – – napięcie zasilania przynajmniej od 3.3V w górę, odporność na napięcie wejściowe większe od VCC w szerokim zakresie – przynajmniej VCC +2V lub minimum 5V niezaleŜnie od napięcia zasilania. W układzie moŜna zastosować inny układ EEPROM, który spełnia poniŜsze warunki: – – – pojemność ≥ 128 bajtów, magistrala typu Microwire, organizacja pamięci 16-to bitowa (np. 64 x 16b). Mogą to być na przykład układy typu 93C46, 93LC46, 93xx56 lub 93xx66. Zastosowany dławik powinien dopuszczać prądy I ≥ 0.2A i cechować się niską rezystancją. Indukcyjność nie ma znaczenia. W ostateczności moŜna go zastąpić zworą – jednak wtedy układ moŜe nie pracować stabilnie w otoczeniu silnie zakłócających urządzeń (zasilacze impulsowe, telefony bezprzewodowe, komórkowe, silniki, itp.). Kondensatory C5 i C6 mogą mieć inne wartości niŜ podane w schemacie i na liście elementów – układ prawidłowo pracuje przy wartościach 22pF, najprawdopodobniej równieŜ inne – zbliŜone – wartości pozwolą na poprawną pracę. Rezystory R3, R5, R6, R8, R10, R12 (27R) słuŜą jedynie 6 http://kradex.com.pl/z23.htm pejdŜ 6 4R|\/|-JT4G Rev02, TRM Rev01 ograniczeniu prądu w wypadku zwarć lub błędów uŜytkownika i stanowią proste zabezpieczenie przed uszkodzeniem wszystkich delikatnych układów scalonych złączonych w całość. Jak jesteś naprawdę twardy, to moŜesz je zastąpić zworami. Ich wartość jest zaleŜna tylko od aktualnego stanu zaopatrzenia sklepów, mogą mieć nawet kilka kiloomów, jednak tak duŜe wartości mogą zakłócać pracę układu (zwłaszcza przy duŜych szybkościach). Wszystko do około 100R powinno pracować bezproblemowo. Rezystory R15 – R18 słuŜą ograniczeniu prądu diod LED sygnalizujących transfer danych – ich wartość moŜe być inna, byle nie zbyt mała, gdyŜ moŜe to grozić uszkodzeniem U1. Podobnie rezystory R19 i R20, jednak tu zbyt mała ich wartość moŜe doprowadzić do uszkodzenia diod LED sygnalizujących obecność napięcia zasilającego lub przeciąŜenia źródeł zasilania (komputera PC i/lub zasilacza targeta). Diody LED sygnalizujące transmisję lub odbiór danych mogą być zarówno zwykłymi diodami dwuwyprowadzeniowymi, jak i diodami dwukolorowymi o wspólnej anodzie. Kondensator elektrolityczny C2 powinien mieć dopuszczalne napięcie większe niŜ 5V. Jego wartość moŜe być inna, choć nie powinna być mniejsza. Jeśli nie jest wymagana obecność konwertera USB <=> RS-232 moŜna nie montować następujących elementów: układ U3, kondensatory C7, C8, C9, C11, C12, gniazdo kątowe 10 pin, diody LED R_RX, R_TX, rezystory R17, R18. 2. Gniazdkologia i pinologia Opis wyprowadzeń w złączu JTAG znajduje się w tabeli 1. Linie nTRST i nSRST są zwarte. Bufor konwertujący poziomy logiki zasilany jest poprzez linie TVCC. Masy układu docelowego, JTAGa i komputera PC (za wyjątkiem stosowania izolowanych galwanicznie hubów USB) będą zwarte. Znaczenie i zastosowanie wszystkich tych linii moŜna znaleźć na stronie Turtelizera7. Tabela 1. Pinologia złącza JTAG TVCC – 1 2 – TVCC nTRST – 3 4 – GND TDI – 5 6 – GND TMS – 7 8 – GND TCK – 9 10 – GND N/C – 11 12 – GND TDO – 13 14 – GND nSRST – 15 16 – GND N/C – 17 18 – GND N/C – 19 20 – GND Opis wyprowadzeń złącza RS-232 znajduje się w tabeli 2. Rozmieszczenie poszczególnych linii jest zgodne z męskim gniazdem znajdującym się w komputerze PC. Numeracja odzwierciedla numerację oznaczoną na płytce. Ze względu na 'jednostronność' gniazd kątowych numeracja pinów w gnieździe będzie odwrócona. Tabela 2. Pinologia złącza RS-232 7 http://www.ethernut.de/en/hardware/enut3/jtag.html pejdŜ 7 4R|\/|-JT4G Rev02, TRM Rev01 DCD – 1 6 – DSR RX – 2 7 – RTS TX – 3 8 – CTS DTR – 4 9 – RI GND – 5 10 – GND Projekt płytki pozwala zastosować kątowe gniazdo JTAG przeznaczone do wtyczek typu IDC. Gniazdo USB jest gniazdem typu A, kątowym. Gniazdo RS-232 jest gniazdem kątowym przeznaczonym do wtyczek typu IDC. Zamiast gniazd JTAG i RS-232 moŜna wlutować na stałe taśmę lub inny rodzaj przewodu łączącego. 3. Taśmologia Taśmę do podłączenia targeta naleŜy zacisnąć w sposób przelotowy – piny nr 1 we wtyczkach (oznaczone małym trójkątem) powinny być ze sobą połączone czerwoną Ŝyłą taśmy. Zalecane jest, aby taśma nie była zbyt długa – zwykle mają one 15-30 cm. Taśmę RS-232 naleŜy zacisnąć w taki sposób, aby zachować zgodność ze standardem wyprowadzeń. Ze względu na fakt 'jednostronności' gniazda kątowego, taśmę od strony układu naleŜy zacisnąć odwrotnie (czerwona Ŝyła taśmy po przeciwnej stronie niŜ mały trójkąt na wtyczce), w dalszej części taśmy odciąć Ŝyłę nr 10, a w złączu DB-9 IDC zacisnąć taśmę standardowo (czerwona Ŝyła do pinu 1). 4. Cenologia Sumaryczna cena wszystkich elementów potrzebnych do zbudowania JTAGa to około 40zł + obudowa + transceiver MAX3243 (około 30zł oryginał MAXIMa lub tańsze zamienniki, niestety niedostępne w Polsce). 5. Efekt finalny Zmontowany układ przedstawiony został na rysunkach od 1 do 6. Przedstawiony na dwóch pierwszych zdjęciach układ montowany był pod kątem pracy bez obudowy i braku konwertera RS-232. Brak na nim teŜ diod LED – szufladka z LEDami niestety nie przewidywała chwilowo stosownej ilości diodek w odpowiednich kolorach. Na kolejnych czterech zdjęciach widać układ w wersji maximum-overkill – zarówno nago jak i w obudowie. pejdŜ 8 4R|\/|-JT4G Rev02, TRM Rev01 Rys. 1. 4R|\/|-JT4G od góry ... Rys. 2. ... i od dołu pejdŜ 9 4R|\/|-JT4G Rev02, TRM Rev01 Rys. 3. 4R|\/|-JT4G z transceiverem RS-232 Rys. 4. 4R|\/|-JT4G z transceiverem RS-232 od d...rugiej strony... pejdŜ 10 4R|\/|-JT4G Rev02, TRM Rev01 Rys. 5. Okablowany 4R|\/|-JT4G Rys. 6. 4R|\/|-JT4G podczas pracy pejdŜ 11 4R|\/|-JT4G Rev02, TRM Rev01 IV. Softłer Proces instalacji i programowania układu FT2232 opisany jest wnikliwie na stronie Turtelizera8. Sprowadza się on do następujących kroków: 1. Podłączenie układu do komputera PC, zainstalowanie sterowników VCP9 (Virtual COM Port Drivers) pobranych ze strony producenta układu – firmy FTDI10 2. Zaprogramowania układu EEPROM za pomocą programu MPROG11, pobranego ze strony producenta FT2232; konfiguracja którą naleŜy do niego zapisać jest opisana na stronie Turtelizera12; proces ten wygląda następująco: a. uruchomić program MPROG b. File -> New (lub przycisk New), aby przełączyć aplikację w tryb Edit Mode (sygnalizowany napisem w pasku tytułu) c. wybrać Device Type -> FT2232C (lub -D, jeśli taka właśnie jest tam wlutowana) d. wybrać USB VID / PID -> FTDI Supplied PID e. wpisać Product ID -> BDC8 f. w zakładce FT2232C, w boxie Side A wybrać: 245 FIFO, D2XX Direct i zaznaczyć opcję High Current I/O's, następnie w boxie Side B zaznaczyć High Current I/O's g. wpisać Manufacturer -> egnite h. wpisać Product Description -> Turtelizer JTAG/RS232 Adapter i. File -> Save As ... (lub przycisk Save Template As ...) i wybrać dowolną lokalizację oraz dowolną nazwę j. Device -> Scan (lub przycisk Scan for Available Devices), aby przełączyć aplikację w tryb Program Mode (sygnalizowany napisem w pasku tytułu); w tym momencie okno programu powinno wyglądać tak jak przedstawiono to na rysunku 7 (w przypadku wersji -D układu okno będzie wyglądać nieco inaczej, jednak wybrane opcje powinny być takie same!) k. Device -> Program (lub przycisk Program All Existing Devices) 3. Odłączenie układu od portu USB 4. Instalacja OpenOCD 5. Ponowne podłączenie układu do portu USB a. Ponowna instalacja sterowników dla urządzenia o zmienionej nazwie; sterowniki znajdują się w folderze <folder instalacyjny OpenOCD>\driver\turtelizer2\ 8 9 10 11 12 http://www.ethernut.de/en/hardware/turtelizer/ http://www.ftdichip.com/Drivers/VCP.htm http://www.ftdichip.com/ http://www.ftdichip.com/Resources/Utilities.htm#MProg http://www.ethernut.de/img/ftmprog02.png pejdŜ 12 4R|\/|-JT4G Rev02, TRM Rev01 Rys. 7. Ustawienia programu MPROG pejdŜ 13 4R|\/|-JT4G Rev02, TRM Rev01 V. JusidŜ 1. OpenOCD Do poprawnej pracy układu z OpenOCD potrzebny jest plik konfiguracyjny, opisujący zastosowany JTAG i uŜywanego targeta. Przykładowa zawartość takiego pliku przedstawiona jest poniŜej. #daemon configuration telnet_port 4444 gdb_port 3333 # tell gdb our flash memory map gdb_memory_map enable # enable flash programming gdb_flash_program enable #interface interface ft2232 ft2232_device_desc "Turtelizer JTAG/RS232 Adapter A" ft2232_layout turtelizer2 ft2232_vid_pid 0x0403 0xbdc8 jtag_speed 3 jtag_nsrst_delay 200 jtag_ntrst_delay 200 #use combined on interfaces or targets that can't set TRST/SRST separately reset_config srst_only srst_pulls_trst #jtag scan chain #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) jtag_device 4 0x1 0xf 0xe #target configuration #target <type> <startup mode> #target arm7tdmi <reset mode> <chainpos> <endianness> <variant> target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4 run_and_halt_time 0 30 daemon_startup reset working_area 0 0x40000000 0x4000 nobackup flash bank lpc2000 0x0 0x7d000 0 0 0 lpc2000_v2 12000 calc_checksum # For more information about the configuration files, take a look at: # http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger Plik ten jest przeznaczony dla procesora LPC2148 firmy NXP. Dokładne informacje jak powinna wyglądać zawartość pliku dla innych układów moŜna znaleźć w wiki OpenOCD13. W wiki tej moŜna znaleźć równieŜ przykładowe skrypty konfiguracyjne14 dla róŜnych procesorów. Fragment istotny dla zastosowanego JTAGa to: #interface interface ft2232 ft2232_device_desc "Turtelizer JTAG/RS232 Adapter A" ft2232_layout turtelizer2 ft2232_vid_pid 0x0403 0xbdc8 jtag_speed 3 jtag_nsrst_delay 200 jtag_ntrst_delay 200 #use combined on interfaces or targets that can't set TRST/SRST separately reset_config srst_only srst_pulls_trst 13 http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_configuration 14 http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_scripts pejdŜ 14 4R|\/|-JT4G Rev02, TRM Rev01 #jtag scan chain #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) jtag_device 4 0x1 0xf 0xe Reszta pliku jest specyficzna dla róŜnych targetów. MoŜliwe, Ŝe konieczna będzie zmiana opisu urządzenia na: ft2232_device_desc "Turtelizer JTAG/RS232 Adapter" (bez '<spacja>A' na końcu) – czasem urządzenie instaluje się pod inną nazwą. W zaleŜności od wielu czynników konieczne moŜe być teŜ ustawienie innej szybkości pracy urządzenia: jtag_speed 3 (mniej = szybciej, 0 – bez ograniczeń). Urządzenie o zbyt duŜej szybkości nie będzie potrafiło połączyć się z targetem, o czym poinformuje nas przy uŜyciu takiego errora w wierszu poleceń (patrz dalej): Open On-Chip Debugger (2008-03-22 12:00 CET) svn: r520 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/ Error: jtag.c:1291 jtag_examine_chain(): JTAG communication failure, check con nection, JTAG interface, target power etc. Error: jtag.c:1487 jtag_init(): trying to validate configured JTAG chain anywa y... Error: embeddedice.c:181 embeddedice_build_reg_cache(): unknown EmbeddedICE ve rsion (comms ctrl: 0xffffffff) Warning: jtag.c:902 jtag_add_reset(): requested reset would assert trst Error: armv4_5.c:186 armv4_5_mode_to_number(): invalid mode value encountered Error: arm7_9_common.c:1114 arm7_9_debug_entry(): cpsr contains invalid mode v alue - communication failure [...] Error: target.c:1362 handle_target(): couldn't poll target(-305). It's due for a reset. Error: armv4_5.c:186 armv4_5_mode_to_number(): invalid mode value encountered Error: arm7_9_common.c:1114 arm7_9_debug_entry(): cpsr contains invalid mode v alue - communication failure [...] User: target.c:365 target_process_reset(): Timed out waiting for reset [...] Plik naleŜy zapisać na dysku pod jakąś nazwą (np. pajak_je_biedronke.cfg). Następnie moŜna uruchomić OpenOCD z wiersza poleceń (aktualna lokalizacja musi zawierać inkryminowany plik konfiguracyjny) komendą: openocd-ftd2xx -f pajak_je_biedronke.cfg Powinno to dać następujący efekt: Open On-Chip Debugger (2008-03-22 12:00 CET) svn: r520 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/ Info: jtag.c:1329 jtag_examine_chain(): JTAG device found: 0x4f1f0f0f (Manufa cturer: 0x787, Part: 0xf1f0, Version: 0x4) Warning: jtag.c:902 jtag_add_reset(): requested reset would assert trst pejdŜ 15 4R|\/|-JT4G Rev02, TRM Rev01 2. IDE oparte o GDB Podrozdział ten oparty jest o IDE Yagarto15, jednak prawdy objawione w nim wypisane będą właściwe równieŜ dla innych IDE, w których debuggowanie oparte jest o GDB. Uruchomienie sesji debuggowania w IDE poprzez GDB wymaga zawsze pewnego zestawu rozkazów – swoistej gry wstępnej – wysyłanych przez GDB do JTAGa. Przykładowy zestaw komend inicjujących sesję w pakiecie Yagarto wygląda następująco (dla procesora LPC2148, debuggowanie w RAMie): target remote localhost:3333 monitor reset monitor sleep 500 monitor poll monitor soft_reset_halt monitor arm7_9 sw_bkpts enable monitor mww 0xE01FC040 0x0002 monitor mdw 0xE01FC040 load break main continue 3. Crossworks (BETA info) UŜytkowanie 4R|\/|-JT4G w środowisku Crossworks jest moŜliwe. Aby tego dokonać po uruchomieniu pakietu naleŜy kliknąć prawym klawiszem myszki w oknie Targets i wybrać opcję New Target Interface -> Generic FT2232 Device. Następnie w znajdującym się poniŜej oknie Properties naleŜy wpisać następujące wartości (pola niewymienione pozostawić z wartościami standardowymi): – – – – – nSRST Mask: 0x0040, nTRST Mask: 0x0040, Output Pins: 0x0C5F, Output Value: 0x0C00, PID: 0xBDC8. 4. Gdzie szukać szczegółowych informacji? Wiele dodatkowych informacji o konfiguracji i uŜytkowaniu JTAGa, IDE, OpenOCD, ARMa itp. moŜna znaleźć w następujących miejscach: – – – – – 15 16 17 18 19 20 wiki OpenOCD16, how-to pakietu Yagarto17, opis uŜytkowania Turtelizera 218, na forum elektrody19, google20. http://www.yagarto.de/ http://openfacts.berlios.de/index-en.phtml?title=Main_Page http://www.yagarto.de/howto.html http://www.ethernut.de/en/hardware/enut3/openocd.html http://www.elektroda.pl/rtvforum/ http://www.google.pl/ pejdŜ 16 4R|\/|-JT4G Rev02, TRM Rev01 VI. FAKU Q: Jak to tak fajnie zlutować? A: Scalaki w małym rastrze: najwygodniej pastą lutowniczą i lutownicą hot-air, moŜna równieŜ zastosować metodę super-hiper-ultra-achtung-cynowego-smarka, lutownicę kolbową, topnik i odsysacz/plecionkę. Resztę – lutownicą kolbową i najzwyklejszą cienką cyną. Prawdziwy twardziel zlutuje to transformatorówką, a John Rambo – lutownicą do rynien. Q: Jak zacisnąć te ch#$^&@* wtyczki IDC na taśmach? A: Ze swojej strony proponuje metodę nazwaną roboczo 'na pieska' (tudzieŜ 'od tyłu'). Potrzebne rekwizyty to coś w miarę płaskiego, cięŜkiego i łatwego do uchwycenia – ja osobiście stosuje mega cięŜkie trafo z mikrofalówki, ale egzamin zda teŜ dla przykładu deska do krojenia (byle mocna!). Wtyczkę w stanie częściowo zmontowanym (czyli taśma jest na miejscu, plastikowy docisk jest na miejscu, taśma jest dobita na tyle, Ŝeby się nie wysunąć samoczynnie) naleŜy połoŜyć na podłodze (nie mylić z dywanem! ma być twarde i sztywne), uklęknąć przed tą strukturą w odległości pozwalającej na przyjęcie względem niej pozycji narzucającej się po przeczytaniu pierwszego zdania tej porady. Po krótkich modłach do wtyczki typu IDC naleŜy połoŜyć na niej nasz narząd (deskę do krojenia lub trafo np.) dociskowy i dokonać kilku skierowanych pionowo w dół (! kluczowa sprawa ! dokonanie tego pod kątem zaowocuje rozwaleniem wtyczki !) pchnięć całym ciałem, co umoŜliwi wbicie taśmy w stosowne dla nich szparki. Q: Coś mi nie działa. A: Coś źle zrobiłeś – u mnie działa. Poza tym naucz się zadawać konkretne pytania21. Q: Gdzie kupić wszystkie elementy? A: W sklepie. STFW. FT2232 jest dostępny (na chwilę obecną) w co najmniej dwóch sklepach internetowych: sensu22 i kamami23. Reszta elementów jest na tyle standardowa, Ŝe moŜna je kupić w zasadzie gdziekolwiek. Dodać naleŜy, Ŝe układ FT2232 w wersji -C (lub bezołowiowej -L) jest wycofany z produkcji i coraz cięzej dostępny na rynku. Łatwiej kupić układ w wersji -D. Q: Nie wiem nic o ARMach, a chciałbym zacząć. Jak to zrobić? A: STFW & RTFM. Mnie nie pytaj, bo sam zaczynam. Q: Wyciąłeś krzywo otwory w obudowie / Krzywo przylutowałeś gniazda / Beznadziejnie przylutowałeś elementy / Wygląda toto jak wyciągnięte psu z pyska / Brzydka obudowa / Za duŜa płytka / Lewy projekt / etc. A: FOAD <; . Nie podoba się to nie patrz i zrób lepiej. To ma działać, a nie robić za wystawę. Q: Co to znaczy STFW albo RTFM albo FOAD albo cokolwiek_innego? A: Najprawdopodobniej nastał koniec wszechświata, skoro ani google24 ani wikipedia25 nie działają. W takim wypadku odpowiedź jest nieistotna. 21 22 23 24 25 http://rtfm.killfile.pl/ http://sensu.pl/ http://kamami.pl/ http://www.google.pl/ http://en.wikipedia.org/wiki/Main_Page pejdŜ 17 4R|\/|-JT4G Rev02, TRM Rev01 VII. Trabelszóting Problem: JTAG nie jest wykrywany przez system / Po podłączeniu do portu USB system wykrywa 'Nieznane urządzenie' i sygnalizuje problem z podłączonym urządzeniem USB / JTAG nie pracuje poprawnie. Powód: Schemat układu zawiera drobny błąd – wyprowadzenie AVCC (pin 46) układu FT2232, będące doprowadzeniem zasilania do analogowego PLLa mnoŜącego częstotliwość rezonatora 6MHz do wymaganej przez magistralę USB częstotliwości 48MHz, powinien być filtrowany przez prosty układ RC (470R + 100nF). W schemacie i w projekcie pominięty został kondensator 100nF. Rozwiązanie 1: Odsunąć JTAGa i przewód USB od silnych źródeł zakłóceń (impulsowy zasilacz komputerowy, telefony komórkowe, telefony bezprzewodowe itp.). Rozwiązanie 2: Do znajdującego się bliŜej układu U1 pada rezystora R1 (470R) dolutować przewlekany kondensator 100nF. Drugą nóŜkę moŜna dolutować do dowolnych połączonych z masą padów np. do padów kondensatorów C5 i C6 (SMD lub przewlekanych, w zaleŜności od tego które są wolne) obciąŜających rezonator kwarcowy Y1. Info! : Problem jak i jego rozwiązania są jedynie hipotezą! Układ pracuje poprawnie bez inkryminowanego kondensatora, jednak moŜe się zdarzyć, Ŝe w specyficznych warunkach będzie inaczej. Problem: Program MPROG sygnalizuje problem uniemoŜliwiający zaprogramowanie EEPROMu. Powód: Układ FT2232 wymaga pamięci EEPROM o organizacji 16b. Niektóre układy EEPROMu uŜywają wyprowadzenia ORG (pin 6) do ustalenia szerokości słowa w pamięci i nie zawiera w swojej strukturze rezystora pull-up, lub teŜ rezystor ten nie jest w stanie ustalić odpowiedniego potencjału na tym wyprowadzeniu w momencie włączenia zasilania, co w efekcie powoduje przełączenie EEPROMu na pracę 8b. Rozwiązanie 1: Zastąpić zastosowany układ EEPROMu modelem, którego organizacja jest domyślnie 16b (np. 93C46 lub 93LC46). Rozwiązanie 2: Do pada 6 układu U4 dolutować powierzchniowo zworę z drutu (lub rezystor przewlekany o w zasadzie dowolnej wartości rzędu do 10kR). Drugi koniec zwory (lub drugie wyprowadzenie rezystora) dolutować do dowolnego pada dołączonego do VCC (np. pad dławika FB, pad kondensatora C2, pady diod J_RX, J_TX). Info! : Rozwiązanie problemu jest niesprawdzone! Niemniej jednak cięŜko sobie wyobrazić dlaczego miałoby nie działać poprawnie. pejdŜ 18 4R|\/|-JT4G Rev02, TRM Rev01 Problem: Pomimo zastosowania opisanych procedur OpenOCD nie moŜe połączyć się z targetem. Powód: Niektóre targety pozwalają na dołączenie JTAGa jedynie 'przez chwilę' od uruchomienia. Rozwiązanie: Zresetować targeta i natychmiast po usunięciu sygnału resetu uruchomić OpenOCD odpowiednią komendą. Info! : Symptomy takie zaobserwowane zostały jedynie na procesorze LPC2148 (a w zasadzie na zestawie ewaluacyjnym ZL9ARM + ZL10ARM), poniewaŜ 4R|\/|JT4G nie został na chwilę obecną przetestowany z innymi procesorami. MoŜliwe, Ŝe w przypadku innego procesora lub innej aplikacji (pozbawionej kretyńskich błędów zestawu z BTC) problem nie będzie występował. Problem: Dioda LED TRGT_P, sygnalizująca zasilanie ze strony targeta, pali się, choć target nie jest podłączony. Powód: Przez diody zabezpieczające wejścia buforów typu 74VHC244 napięcie przechodzi na piny zasilania, jeśli bufor jest niezasilony i nieaktywny, a na jego wejściach pojawiają się stany wysokie (których źródłem jest FT2232). Rozwiązanie 1: Zignorować problem. Wydajność prądowa tego napięcia jest tak znikoma, Ŝe nie ma ono Ŝadnego znaczenia. Poza tym podłączenie zasilania ze strony targeta natychmiast spolaryzuje diody zabezpieczające w przeciwnym kierunku. Rozwiązanie 2: Zastosować bufor bez diod zabezpieczających wejścia, np. typu 74AHC244. Rozwiązanie 3: Przed dołączeniem targeta uruchomić OpenOCD z plikiem konfiguracyjnym, tak jak opisano to na stronie 14 w rozdziale V.1. (uruchomienie oczywiście się nie powiedzie), co spowoduje aktywację bufora i usunięcie problematycznego napięcia. Info! : 4R|\/|-JT4G został dość wnikliwie przetestowany i początkowa obecność napięcia na liniach TVCC złącza JTAG nie stanowi Ŝadnej przeszkody dla poprawnego funkcjonowania układu. Dokładna geneza problemu jak i rozwiązanie 2 jest hipotetyczne. Problem: JTAG działa przeraźliwie wolno Powód: Układ FT2232 przeznaczony jest do współpracy z magistralą USB2.0 – praca z magistralą USB1.0 lub USB1.1 nie pozwala na osiągnięcie pełnej prędkości układu. Rozwiązanie: brak, naleŜy korzystać z komputera wyposaŜonego w kontroler magistrali USB2.0. pejdŜ 19 4R|\/|-JT4G Rev02, TRM Rev01 VIII. TU DO 1. Współpraca z innymi IDE: Jeśli masz jakieś info dotyczące współpracy układu 4R|\/|-JT4G z innymi środowiskami, podziel się nim z innymi. Napisz do mnie PMa na forum elektrody, a info to znajdzie się w poprawionych wersjach TRMa. 2. Współpraca z Crossworks: Zgłębić sprawę diodek i debuggowania. Jeśli udało ci się zmusić do jakiejś konkretnej współpracy diody sygnalizujące, albo jeśli masz uwagi dotyczące współpracy w Crossworks – prześlij mi je. pejdŜ 20 4R|\/|-JT4G Rev02, TRM Rev01 IX. TRM CzejndŜlog 15.05.2008 – Rev00 – iniszal rilis wersji dla 4R|\/|-JT4G Rev02 13.06.2008 – Rev01 – drobne poprawki, dodane informacje o nieprawidłowej współpracy z kontrolerami USB poniŜej USB2.0, dodane info o braku współpracy z IARem, dodane zdjęcia układu z wszystkimi elementami i w obudowie, dodane informacje o wersji -L układu FT2232 pejdŜ 21 4R|\/|-JT4G Rev02, TRM Rev01 X. Disklejmer THIS HARDWARE DESIGN IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE DESIGNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DESIGN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (oczywiście, Ŝe skopiowałem to ze strony Turtelizera <: ) pejdŜ 22 XI. Appendiks Dołączone dokumenty: – schemat układu, – lista elementów, – wzór ścieŜek (top layer + bottom layer), – rozkład elementów (top overlay + bottom overlay). 4R|\/|-JT4G Rev02, TRM Rev01 1 2 3 4 tVCC RESET RSTOUT 1.5K 46 VCC 41 6 C4 USB_P VBUS GND 100n USB 1 2 3 4 VBUS DD+ GND 470 R20 PWREN 3V3OUT R10 27 USB-D- 8 USB-D+ 7 ACBUS3 ACBUS2 ACBUS1 ACBUS0 USBDM USBDP R12 27 SI/WUA USB-A 43 44 GND GND Y1 6MHz B 2 XTIN XTOUT BDBUS7 BDBUS6 BDBUS5 BDBUS4 BDBUS3 BDBUS2 BDBUS1 BDBUS0 1 C5 27p 1 2 48 C6 27p EESK EEDATA EECS GND TEST VCC SI/WUB JTAGOE RST 1 TCK TDI TMS RST JTAGOE TMS TDO TDI TCK 2 4 6 8 20 tVCC 11 12 13 15 RX1LED TX1LED SENSE TDO 32 33 35 36 37 38 39 40 BDBUS7 BDBUS6 BDBUS5 BDBUS4 BDBUS3 BDBUS2 BDBUS1 BDBUS0 9 7 5 3 10 GND tnSRST tTDI R3 tTMS R5 tTCK R6 Y1 Y2 Y3 Y4 VDD GND Y1 Y2 Y3 Y4 18 16 14 12 tTCK tTDI tTMS bnSRST 10 GND VDD 27 GND 74VHC244 19 OE A1 A2 A3 A4 tTDO R8 tnSRST 27 27 27 1 3 5 7 9 11 13 15 17 19 tVCC tVCC A 2 4 6 8 10 12 14 16 18 20 GND GND GND 11 tnSRST 13 GND 15 tTDO 17 GND 20 R7 10K bnSRST tnSRST R9 10K Q1 BC547 tVCC B R11 10K U3 C7 28 24 470n C8 1 2 BDBUS014 100n 27 28 29 30 A1 A2 A3 A4 SENSE 10 JTAG GND 74VHC244 OE U2B RX2LED TX2LED 26 45 9 18 25 34 GND GND GND GND GND AGND 47 BCBUS3 BCBUS2 BCBUS1 BCBUS0 16 17 19 20 21 22 23 24 U2A 330 USB-D+ R4 ADBUS7 ADBUS6 ADBUS5 ADBUS4 ADBUS3 ADBUS2 ADBUS1 ADBUS0 10K TRGT_P 4 5 R2 FT2232C R19 GND VCC VCC VCC GND tVCC C1 100n VCC 470 AVCC U1 VCC R1 14 31 C2 10uF C3 100n A VCC VCCIOA VCCIOB VCC FB 3 42 VBUS C1+ C1C2+ C2- MAX3243EUI+ VCC 26 C9 VCC 27 V+ GND GND 470n 9 TX BDBUS413 10 DTR BDBUS212 11 RTS 20 C R13 10K R14 2.2K GND 5 4 RI BDBUS518 5 DSR BDBUS617 6 DCD BDBUS116 7 RX BDBUS315 8 CTS RS-232 U4 1 6 3 2 BDBUS719 93LC46B VCC 8 VCC CS ORG D SCL Q DU VCC 4 100n 7 GND GND C11 25 R_TX J_RX J_TX C DSR RTS CTS RI Header 5X2A GND GND GND INVALID FORCEON FORCEOFF V- 21 23 22 3 GND VCC GND C12 470n R_RX 100n GND Title 100n GND 1 470 R18 470 R17 470 R16 470 D 4R|\/|-JT4G Size RX2LED C16 100n TX2LED C15 100n RX1LED C14 TX1LED R15 VCC C17 GND 6 7 8 9 10 VCC VCC 100n 1 2 3 4 5 C18 GND D DCD RX TX DTR Number Revision A4 Date: File: 2 3 02 2008-05-13 Sheet of D:\elektronika\..\4RM-U58-JT4G.SCHDOCDrawn By: Freddie Chopin 4 Report Generated From DXP Designator C1 C2 C3 C4 C5 C6 C7 C8 C9 C11 C12 C14 C15 C16 C17 C18 FB JTAG J_RX J_TX Q1 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 RS-232 R_RX R_TX TRGT_P U1 U2 PartType Cap Cap Pol1 Cap Cap Cap Cap Cap Cap Cap Cap Cap Cap Cap Cap Cap Cap Inductor Header 10X2 LED1 LED1 BC547 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Res2 Header 5X2A LED1 LED1 LED1 FT2232C 74VHC244 kwiecieĔ 29, 2008 2:38:56 PM Description Capacitor Polarized Capacitor (Radial) Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Capacitor Inductor Header, 10-Pin, Dual row Typical RED GaAs LED Typical RED GaAs LED NPN General Purpose Amplifier Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Resistor Header, 5-Pin, Dual row Typical RED GaAs LED Typical RED GaAs LED Typical RED GaAs LED FTDI FT2232C dual UASB UART / FIFO I.C. Octal Bus Buffer Footprint CC2012-0805 Elektrolit 100 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CC2012-0805 CR2012-0805 HDR2X10 LED 100 LED 100 BCY-W3/E4 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 CR2012-0805 HDR2X5_CEN LED 100 LED 100 LED 100 48 LD LQFP 751D-04 Value 100n 10uF 100n 100n 27p 27p 100n 470n 470n 100n 470n 100n 100n 100n 100n 100n 470 10K 27 1.5K 27 27 10K 27 10K 27 10K 27 10K 2.2K 470 470 470 470 330 470 Page 1 of 2 Designator U3 U4 USB USB_P Y1 PartType MAX3243EUI+ 93LC46B USB-A LED1 6MHz kwiecieĔ 29, 2008 2:38:56 PM Description Footprint Value ±15kV ESD-Protected, 1µA, 3.0V/5.5V, 250kbps, RS-232 TransceiverTSSOP-28 with AutoShutdown 1Kb (x8/x16) Serial Microwire Bus EEPROM SOP8 USB 1.1, Right Angle, Thru-Hole, Series A, Reverse Type, Receptacle, 440314 4 Position, Black Typical RED GaAs LED LED 100 Crystal Oscillator kwarc Page 2 of 2