Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2016:ethernetwol

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2016:ethernetwol [2016/11/22 14:59]
Lukáš Vykydal draft - DPS diagrams
2016:ethernetwol [2017/01/14 13:45] (aktuální)
Lukáš Vykydal
Řádek 5: Řádek 5:
 ====== Úvod ====== ====== Úvod ======
  
-Cílem tohoto projektu je navrhnou vlastní ethernet modul pro STM32F4DISCOVERY desku. Tento ethernet modul musí být kompatibilní s oficiálním STM32F4-BB deskou. STM32F4 procesor ​bude prosloucht ​pro přeušení od tlačitka USER a po přijetí události odešle nastavený počet Magic paketů na broadcast dané počitačové síté ( nebo globální bradcast).+Cílem tohoto projektu je navrhnou vlastní ethernet modul pro STM32F4DISCOVERY desku. Tento ethernet modul musí být kompatibilní s oficiálním STM32F4-BB deskou. STM32F4 procesor pro stisk tlačitka USER a po přijetí události odešle nastavený počet Magic paketů na broadcast dané počitačové síté ( nebo globální bradcast).
  
 Pro konfiguraci bude FW obsahovat primitivní HTTP server s jedinou stránkou. Parametry budou předány metodou GET. Pro konfiguraci bude FW obsahovat primitivní HTTP server s jedinou stránkou. Parametry budou předány metodou GET.
- 
-====== DRAFT  ======= 
  
 ====== Hardware ===== ====== Hardware =====
  
  - Vývojový kit STM32F4DISCOVERY  - Vývojový kit STM32F4DISCOVERY
-  + Vlastní LAN 8720A ethernet shield:
- +
-Vlastní LAN 8720A ethernet shield:+
   * Schematic [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_stm32f4_ethernet.pdf ]]   * Schematic [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_stm32f4_ethernet.pdf ]]
   * DPS F.Cu [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_f.cu.pdf]]   * DPS F.Cu [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_f.cu.pdf]]
   * DPS B.Cu [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_b.cu.pdf]]   * DPS B.Cu [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_b.cu.pdf]]
 +
 +{{:​2016:​etherwol_3dpcb.png?​300|}}
  
 Ethernet shield je zhotoven v domácích podnínkách na FR4 desku. QFN24 je zapájeno následujícím způsobem: Ethernet shield je zhotoven v domácích podnínkách na FR4 desku. QFN24 je zapájeno následujícím způsobem:
Řádek 26: Řádek 24:
   * Z druhé strany je ocínován Thermal pad a celá 2mm díra je postupně zalita cínem   * Z druhé strany je ocínován Thermal pad a celá 2mm díra je postupně zalita cínem
  
-(TBD foto)+Finální verze desky je {{ :​2016:​etherwol_gerber.7z |zde}}. Jde o vygenerované gerber data. Oproti předchozí verzi je ořezaná o nepotřebnou plochu.
  
 ======= Firmware ======== ======= Firmware ========
Řádek 40: Řádek 38:
   * vim   * vim
  
 +Jako API pro síťovou komunikaci byly zvoleny UNIX sockety. Práce se scokety se značně podobá práci se soubory a dokumentace je jednoduše dostupná. Není však možné ji použít bez kooperativního multitaskingu (volání jsou blokující).
 +
 +=== Semihosting ===
 +Pro zprovoznění semihostingu je třeba mít OpenOCD verze alespň 0.10.0-dev-00419-gbcaf775.
 +
 +=== HTTP server ===
 +Zařízení bude poslouchat na portu 80 a reagovat na následující dotazy:
 +
 +<​code>​
 +GET / HTTP/1.1
 +(Ignore all nonempty lines)
 +
 +</​code>​
 +
 +<​code>​
 +GET /​save?​target=(MAC) HTTP/1.1
 +(Ignore all nonempty lines)
 +
 +</​code>​
 +
 +Příklad odpovědí:
 +<​code>​
 +HTTP/1.1 200 OK
 +
 +(content...)
 +</​code>​
 +
 +<​code>​
 +HTTP/1.1 404 Not found
 +
 +(content...)
 +</​code>​
 +
 +HTTP odpovědi stačí poslat bez hlaviček a následně ukončit spojení. Jedná se o odpověď dle staršího HTTP standardu ale prohlížeče ji dokáží pochopit.
 +
 +=== Wake on lan ===
 +
 +Magic packet typicky posílaný jako UDP na port 0,7 nebo 9. Struktura není pevně daná, paket musí obsahovat následující data (kdekoli v těle):
 +<​code>​
 +FF FF FF FF FF FF
 +(target MAC)*16
 +</​code>​
 +
 +==== Debugging LwIP stacku ====
 +
 +Pro potřeby ladění je vhodné zapnout debug výpisy z LwIP stacku. Pro jejich povolení je třeba:
 +  * Nadefinovat symbol LWIP_DEBUG
 +  * Změnit definici LWIP_PLATFORM_DEBUG v Middlewares/​Third_Party/​LwIP/​system/​arch/​cc.h na "​do{printf message;​}while(0)"​ (ano bez zavorek za printf)
 +  * V souboru Middlewares/​Third_Party/​LwIP/​src/​include/​lwip/​debug.h změnit LWIP_DEBUG_ON a LWIP_DEBUG_OFF na 0xF0
 +
 +Pro první testování je vhodné zařízení připojit přímo k počítači bez switche v cestě. Switche typu store-forward zahodí poškozené pakety.
 +
 +FreeRTOS: pokud aplikace padá na assertion v port.c:752 přidat následující řádek před spuštěním Sheduleru: HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); ​
 +
 +=== Zdrojové kódy===
 +Zdrojové kódy jsou k dispozici {{ :​2016:​ethernetwol.7z | zde}}.
 +
 +=== Video ===
 +
 +{{ youtube>​c4wfqEg0cyQ?​medium }} 
 +
 +=== Závěr ===
 +
 +Návrh modulu byl poměrně přímočarý. Výroba prototypu nebyla problém i přez velmi malé pouzdor čipu LAN8720A. Oživení modulu bylo lehce komplikovanější,​ kvůli chybně zapájenému vývodu na desce. Chyba nebyla přímo viditelná kvůli použitému switchi store-and-forward. Při přímém propojení zařízení a PC byla tato chyba vyditelná v Wiresharku. Po prozkoumání dat byla oprava triviální. ​
 +
 +Návrh na rozšíření:​
 +  * detekce MAC adresy na základě zadané IP
 +  * vlastní HW bez nutnosti použití DISCOVERY kitu
 +  * vyhledání zařízení na lokální síti
2016/ethernetwol.1479823157.txt.gz · Poslední úprava: 2016/11/22 14:59 autor: Lukáš Vykydal