Sebastian BiaĹy
Guest
Sat Sep 28, 2013 5:32 pm
Taka sytuacja: mam w systemie około 4 urządzeń programowalnych po JTAG.
Ponieważ nie wszystkie muszą być fizyczne osiągalne w danym momencie,
nie mogę ich połaczyć w daisy-chain.
W systemie bedzie procesor, którego zadaniem bedzie komunikacja z nimi
po JTAG.
Teraz mam taki luźny pomysł:
a) jtagi sa połaczone w gwiazdę
b) TMS, out do wszystkich równolegle
c) TCK, in do każdego osobno
Czy to ma sznase działać? Konkretnie nie wiem czy wolno mi machać
drutami TMS, out tak po prostu bez machania linia TCK. Na pierwszy rzut
oka nie powinno być z tym problemu, ale ... no wlasnie. Wole zapytać.
Sebastian Biały
Guest
Sat Sep 28, 2013 6:52 pm
On 2013-09-28 20:46, stchebel@gmail.com wrote:
Quote:
Tyle, że będziesz musiał z każdego urządzenia wyprowadzić osobno TDO
Taka jest wlasnie myśl.
Quote:
Daisy chain jest mimo wszystko najlepszy i sprawdzony.
Nie ponieważ u mnie zamiast urządzenia może być dziura. Urzadzenia są
wpinane i wypinane w sposób dowolny.
Efektem czego:
a) muszę robić zworki In<->Out
b) musze w software zgadywać że nie ma N-tego układu. Cięzka sprawa, bo
chyba nie da się zgadnąc *którego* brakuje.
Dlatego wole poświęcić kilka nóg więcej i mieć 1000% pewności z kim gadam.
Guest
Sat Sep 28, 2013 8:46 pm
W dniu sobota, 28 września 2013 19:32:11 UTC+2 użytkownik Sebastian Biały napisał:
Quote:
Taka sytuacja: mam w systemie około 4 urządzeń programowalnych po JTAG.
Ponieważ nie wszystkie muszą być fizyczne osiągalne w danym momencie,
nie mogę ich połaczyć w daisy-chain.
W systemie bedzie procesor, którego zadaniem bedzie komunikacja z nimi
po JTAG.
Teraz mam taki luźny pomysł:
a) jtagi sa połaczone w gwiazdę
b) TMS, out do wszystkich równolegle
c) TCK, in do każdego osobno
Czy to ma sznase działać? Konkretnie nie wiem czy wolno mi machać
drutami TMS, out tak po prostu bez machania linia TCK. Na pierwszy rzut
oka nie powinno być z tym problemu, ale ... no wlasnie. Wole zapytać.
Tyle, że będziesz musiał z każdego urządzenia wyprowadzić osobno TDO na jakiś multiplekser, albo osobnymi drutami do procka. Strasznie dużo kablarstwa się zaczyna robić. Daisy chain jest mimo wszystko najlepszy i sprawdzony.
Sebastian Biały
Guest
Sat Sep 28, 2013 9:48 pm
On 2013-09-28 22:52, stchebel@gmail.com wrote:
Quote:
Jeżeli są to takie same układy to poopa blada. Wtedy trza robić tak jak kombinujesz. To będzie działać.
Cóż, życie mnie zweryfikuje.
Ponadto, nawet gdyby to były rózne układy to master nic nie wie o ich
identyfikatorach bo nie ma pojecia jak je odczytać. Wczesniej pytałem o
jakiś projekt SVF Playera wlasnie dlatego, że niuanse programowania JTAG
są na tyle absurdalnie skomplikwane że nie da się zrobić tego
generycznie we firmware i musze ucieć do software.
Problem w tym że user końcowy może sobie wetknąć *cokolwiek* z JTAG w
dziurę. Nie mam jak generycznie tego obsługiwac.
Guest
Sat Sep 28, 2013 10:52 pm
W dniu sobota, 28 września 2013 20:52:43 UTC+2 użytkownik Sebastian Biały napisał:
Quote:
On 2013-09-28 20:46, stchebel@gmail.com wrote:
Tyle, że będziesz musiał z każdego urządzenia wyprowadzić osobno TDO
Taka jest wlasnie myśl.
Daisy chain jest mimo wszystko najlepszy i sprawdzony.
Nie ponieważ u mnie zamiast urządzenia może być dziura. Urzadzenia są
wpinane i wypinane w sposób dowolny.
Efektem czego:
a) muszę robić zworki In<->Out
b) musze w software zgadywać że nie ma N-tego układu. Cięzka sprawa, bo
chyba nie da się zgadnąc *którego* brakuje.
Dlatego wole poświęcić kilka nóg więcej i mieć 1000% pewności z kim gadam.
Wiadomo, jak brakuje układu, to musisz pomiędzy TDI<=>TDO wpie[rzyć zworkę albo np. rezystorki 0 Ohm. O ile są to różne ukady, to soft powinien (MUSI!!) dać se radę z odczytaniem z imienia i nazwiska te które są na pokładzie , a które nie.
Jeżeli są to takie same układy to poopa blada. Wtedy trza robić tak jak kombinujesz. To będzie działać.
Guest
Sun Sep 29, 2013 9:43 am
W dniu sobota, 28 września 2013 23:48:09 UTC+2 użytkownik Sebastian Biały napisał:
Quote:
On 2013-09-28 22:52, stchebel@gmail.com wrote:
Jeżeli są to takie same układy to poopa blada. Wtedy trza robić tak jak kombinujesz. To będzie działać.
Cóż, życie mnie zweryfikuje.
Ponadto, nawet gdyby to były rózne układy to master nic nie wie o ich
identyfikatorach bo nie ma pojecia jak je odczytać.
Nic podobnego. Master ma tu guano do rzeczy, o ile rozumiem że Master w/g Ciebie to pierwsze urządzenie w daisy-chain.
Jeżeli układ jest taki:
[procek]=>(TDI)=>[device_0]=>(TDO/TDI)=>[device_1]=>(TDO/TDI)...=>[device_n]=>(TDO)=>[procek] ,to z dowolnego urządzenia "gdzieś tam w środku" łańcucha jego identyfikator "przelatuje" przez kolejne i identyfikacja softwarowa jest możliwa. Tak zresztą działa np. używany przeze mnie XILINX platform cable.
Cokolwiek by nie było w łańcuchu wpięte, to soft daje se radę. Tak że od strony softu Twój problem jest identyczny w daisy chain i Twoim pomyśle. Twoje rozwiązanie ma jednak tę zaletę, że jak jakiegoś urządzenia nie ma wpiętego, to nie przerywasz łańcucha TDO/TDI.
Mario
Guest
Sun Sep 29, 2013 1:06 pm
W dniu 2013-09-29 09:43, stchebel@gmail.com pisze:
Quote:
W dniu sobota, 28 września 2013 23:48:09 UTC+2 użytkownik Sebastian Biały napisał:
On 2013-09-28 22:52, stchebel@gmail.com wrote:
Jeżeli są to takie same układy to poopa blada. Wtedy trza robić tak jak kombinujesz. To będzie działać.
Cóż, życie mnie zweryfikuje.
Ponadto, nawet gdyby to były rózne układy to master nic nie wie o ich
identyfikatorach bo nie ma pojecia jak je odczytać.
Nic podobnego. Master ma tu guano do rzeczy, o ile rozumiem że Master w/g Ciebie to pierwsze urządzenie w daisy-chain.
Podejrzewam, że raczej to co zarządza transmisją czyli interfejs i
komputer z softem do programowania/debugowania.
Quote:
Jeżeli układ jest taki:
[procek]=>(TDI)=>[device_0]=>(TDO/TDI)=>[device_1]=>(TDO/TDI)...=>[device_n]=>(TDO)=>[procek] ,to z dowolnego urządzenia "gdzieś tam w środku" łańcucha jego identyfikator "przelatuje" przez kolejne i identyfikacja softwarowa jest możliwa. Tak zresztą działa np. używany przeze mnie XILINX platform cable.
Cokolwiek by nie było w łańcuchu wpięte, to soft daje se radę.
No chyba, że to OpenOCD to mu trzeba podać plik cfg definiujący każdy
tap np:
jtag newtap XCF01S tap -irlen 8 -ircapture 0x01 -irmask 0x3
-expected-id 0xd5044093
i to nawet wtedy gdy nie zamierzasz pisać do tego urządzenia.
--
pozdrawiam
MD
Sylwester Ĺazar
Guest
Mon Sep 30, 2013 12:58 pm
Taka sytuacja: mam w systemie około 4 urządzeń programowalnych po JTAG.
Quote:
Ponieważ nie wszystkie muszą być fizyczne osiągalne w danym momencie,
nie mogę ich połaczyć w daisy-chain.
A nie można po prostu dać rezystora pomiędzy TDI a TDO przy każdej
podstawce/footprincie?
Jak scalak nie będzie obsadzony, to sygnał przejdzie bypassem.
--
-- .
pozdrawiam
Sylwester Łazar
http://www.alpro.pl Systemy elektroniczne.
http://www.rimu.pl -oprogramowanie do edycji schematów
i projektowania PCB.
Sebastian BiaĹy
Guest
Mon Sep 30, 2013 4:06 pm
On 2013-09-30 14:58, Sylwester Łazar wrote:
Quote:
Taka sytuacja: mam w systemie około 4 urządzeń programowalnych po JTAG.
Ponieważ nie wszystkie muszą być fizyczne osiągalne w danym momencie,
nie mogę ich połaczyć w daisy-chain.
A nie można po prostu dać rezystora pomiędzy TDI a TDO przy każdej
podstawce/footprincie?
Jak scalak nie będzie obsadzony, to sygnał przejdzie bypassem.
To dalej utrudnia mi zgadnięcie *którego* nie ma. Co gorsza CPLDki bedą
raczej identyczne i będzie ich kilka, user sobie może wypiąć dowolny z
nich. Wyobraź sobie że to coś na kształt płyty głownej z kartami.