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

Následující verze
Předchozí verze
2016:ethernetwol [2016/11/22 14:47]
Lukáš Vykydal vytvořeno - draft
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: 
 +  * 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 B.Cu [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2016/​etherwol_b.cu.pdf]]
  
-Schéma ethernet shieldu (alpha) je na (TBD linlk), DPS (TBD link).+{{:​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:
- * Vyvrtána díra 2mm uprostřed Thermal padu +  ​* Vyvrtána díra 2mm uprostřed Thermal padu 
- * QFN24 pomocí horkého vzduchu připájeno na desku a zkontrolováno pro mezi vývodové skraty +  * QFN24 pomocí horkého vzduchu připájeno na desku a zkontrolováno pro mezi vývodové skraty 
- * 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 31: Řádek 32:
  
 Utility: Utility:
-* STCubeMX +  ​* STCubeMX 
-* gcc-arm-none-eabi toolkit +  * gcc-arm-none-eabi toolkit 
-* gdb-arm-none-eabi a openocd pro programování a debugging +  * gdb-arm-none-eabi a openocd pro programování a debugging 
-* gnu make +  * gnu make 
-* 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.1479822440.txt.gz · Poslední úprava: 2016/11/22 14:47 autor: Lukáš Vykydal