Zajimave problemy s IO Marwell + Vitese

Pavel Hudeček edizon na seznam.cz
Úterý Únor 24 15:03:16 CET 2015


Tak pokračování: Po připojení driveru na CLK a zkratování sériového odporu 
(který je ve skoro každém doporučeném zapojení MDIO) začala být možná 
komunikace s adresami 4, 6/7, 31, pokud je na CLK sonda osciloskopu. Bez ní 
funguje po doplnění paralelního C 10 pF. 

Tím přišla na řadu fyzická vrstva Vitese VSC8538, která by měla být na více 
adresách najednou, ale zjevně nekomunikuje. Má všechna napájení, po zapnutí+
resetu rozsvítí LEDky a pak zhasne. Dál nic.




Při podrobném zkoumání na osciloskopu jsem zjistil zajímavou věc: Když je na
datech 1, někdy to vypadá, jako by se na ně kapacitně přenášelo CLK. Ten 
bordel má rozkmit cca 0,3 V, což by asi nemělo vadit. Ale zaujalo mě to 
"někdy": Prostě chvíli lezou normální data, pak začnou mít bordel z CLK a 
pak zas bordel zmizí. Někdy se objeví jen na jednu periodu hodin, jindy 
zůstává mnoho desítek taktů.




Začal jsem podrobněji pátrat po tom, jak by průběhy na MDIO měly vypadat a 
narazil jsem na zmatek:

- Podle Wikipedie, nebo např. tohoto appnotu NXP


http://www.nxp.com/documents/application_note/AN10859.pdf

se data mění někdy uprostřed času, kdy je CLK na 0.

- Podle Realtecu, nebo Cypressu

http://www.cypress.com/?docID=45851 fig. 7

se data mění při vzestupné hraně hodin.




Na osciloskopu vidím druhou variantu. V nastavení MDIO u ARMu jsem nenašel 
nic, čím by se fáze dala měnit.

- Je možné, že jsou prostě dvě varianty, vzájemně nekompatibilní? Nějak se 
mi to nezdá...

- Switchové IO mají obvykle dvoje MDIO: CPU a PHY Je možné, že by jedna 
varianta byla pro CPU a druhá pro PHY?





PH





Od: Pavel Hudeček <edizon na seznam.cz>

"

máme propojovací desku se sloty. V prvním je ARM+MAX24288+88E6152. Z ARMu 
jde MDIO na MAX (adr. 4), na 6152 (adr 31) a do propojovací desky. Z ARMu 
jde taky RGMII do MAXe a z něj SGMII do 6152. Funguje to, ale divně:

- Všechno na MDIO komunikuje, ale nedaří ze získat link na Eth.




88E6152 má 2 nohy na nastavení, zda se má inicializovat z EEPROM, nebo jak 
jinak. My máme 00, tedy nastavení z CPU. Při čtení z MDIO vše OK, ale:

- hodnotu zmíněných 2 nohou přečte 11.

- podle identifikace to není 6152, ale 6185 (na něm je napsáno 6152 a byl 
zaslán jako vzorek z Marwellu).

- podle port statusu má asi 10 portů, což souhlasí s 6185 (52 by měl 6).

- 85 má o dva global registry víc. Ty jsou taky přístupné.




Nyní zapojíme druhou desku, kde je 88E6182 (10 port, jinak stejný switch, 
jako 6152) a u něj fyzická vrstva a RJ45.

- přestane jít komunikovat s MDIO adresou 31 (4 stále funkční).

- objeví se adresa 6, nebo 7 (adresa toho 6182 podle toho, ve kterém je 
slotu).

- místo očekávaného 6182 je ale identifikován zase 6185 (na něm je napsáno 
6182 a byl zaslán jako vzorek z Marwellu).

- konfigurační nohy EEPROM jsou zas čteny 11 místo 00.




Switch, co má být 6152 je s tím co má být 6182 propojen přes SGMII, pokud je
v prvním slotu. Ve druhém spojeny nejsou (mají se spojit switchem v prvním).
Problém je stejný, nezávisle na použitém slotu.




Setkali jste se s podobnými problémy?

"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150224/5a8476d3/attachment.html>


Další informace o konferenci Hw-list