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/30 19:13]
Lukáš Vykydal [Hardware] 3D model of PCB
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]]
Řádek 28: Řá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 42: Řá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 === === Semihosting ===
Řádek 64: Řádek 61:
 <​code>​ <​code>​
 HTTP/1.1 200 OK HTTP/1.1 200 OK
-Content-Type:​ text/html; charset=UTF-8 
-Content-Encoding:​ UTF-8 
-Content-Length:​ (length) 
  
 (content...) (content...)
Řádek 73: Řádek 67:
 <​code>​ <​code>​
 HTTP/1.1 404 Not found HTTP/1.1 404 Not found
-Content-Type:​ text/html; charset=UTF-8 
-Content-Encoding:​ UTF-8 
-Content-Length:​ (length) 
  
 (content...) (content...)
 </​code>​ </​code>​
  
-<​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.
-HTTP/1.1 500 Internal server error +
-Content-Type:​ text/html; charset=UTF-8 +
-Content-Encoding:​ UTF-8 +
-Content-Length:​ (length) +
- +
-(content...) +
-</​code>​ +
- +
-Pro parsing requestů bude použita knihovna SLRE (Regex parser) (https://​github.com/​cesanta/​slre).+
  
 === Wake on lan === === Wake on lan ===
Řádek 99: Řádek 81:
 </​code>​ </​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.1480529596.txt.gz · Poslední úprava: 2016/11/30 19:13 autor: Lukáš Vykydal