Merhabalar,
STM32F2 serisi ile free rtos üzerinde lwip ile uygulama geliştiriyorum.
DHCP açıkken bazen bağlı olduğum modemden ip almada gecikme yaşanırsa ve bu arada da client task ım çalışmaya başlayıp socket açmaya çalışırsa çakışma yaşanıyor. Bu durumu semaphore mekanizması ile çözmek mi mantıklıdır yoksa client task ta socket açma işlemlerine başlamadan bir süre gecikme vermek yeterli olur mu acaba ?
Cihazın Ip aldığını gösteren bir flag yok mu ? O flag set olana kadar client task'ının en başına return koyabilirsin.
O flag aslında semaphore mekanizması oluyor. DHCP taskından semaphore u alana kadar bekletebilirim. Doğru olanda bu gibi görünüyor galiba.
http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/API/FreeRTOS_IsNetworkUp.html
Bu api varmı sende
LWIP 2.0.3
Kablo bağlı mı diye kontrol etmek için;
bool link = false;
PHY_GetLinkStatus(ENET, ENET_PHY_ADDRESS, &link);
if (link)
IP alındı mı diye kontrol etmek için;
struct dhcp *dhcp = (struct dhcp *)netif_get_client_data(&fsl_netif0, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP);
if (dhcp->state== DHCP_STATE_BOUND)
Alıntı yapılan: OptimusPrime - 17 Ekim 2017, 09:38:34
http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/API/FreeRTOS_IsNetworkUp.html
Bu api varmı sende
Bu api maalesef yok.
Alıntı yapılan: ErsinErce - 17 Ekim 2017, 11:44:30
LWIP 2.0.3
Kablo bağlı mı diye kontrol etmek için;
bool link = false;
PHY_GetLinkStatus(ENET, ENET_PHY_ADDRESS, &link);
if (link)
IP alındı mı diye kontrol etmek için;
struct dhcp *dhcp = (struct dhcp *)netif_get_client_data(&fsl_netif0, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP);
if (dhcp->state== DHCP_STATE_BOUND)
Lwip versiyonu 1.3.2. ST nin STM32F2 serisi için free rtos/lwip örneklerinden yola çıktım. Socket Api kullanıyorum.
STM32CubeMX ile en azından 2.0.0 a geçin.
TCP ve DHCP kısımlarında önemli düzeltmeler var.
Haklısınız hocam. En azından 2.0.0 a geçmek lazım ama yazılımın diğer kısımlarını hal kütüphanelerine uygun hale getirmek lazım. O da ayrı bir iş yükü, maalesef.
Alıntı yapılan: quarko - 17 Ekim 2017, 14:30:21
Haklısınız hocam. En azından 2.0.0 a geçmek lazım ama yazılımın diğer kısımlarını hal kütüphanelerine uygun hale getirmek lazım. O da ayrı bir iş yükü, maalesef.
Merhabalar, hocam bende sizinle aynı durumdayım.
İçinde bulunduğum bir projede SPL bağımlılığı bulunmakta dolayısı ile (dahili mac olduğundan) STMF107VC veya STMF207VC (henüz karar aşamasındayız) + Freertos + lwip 'yi STM'in bir örneği üzerinden yürüterek bitirmeye çalışacağım.
Temel olarak projede IP ye webserver olarak çıkacağım ve cihaz konfigürasyonlarının yapıldığı basit bir arayüz sağlayacağım, yani cihaz kurulumunda kullanılacak olan IP sonraki sürekli zaman çalışmada aslında hiç kullanılmayacak. Bir de ip üzerinden firmware upgrade yapılabilir olacak.
Projenin henüz başındayken aynı durumları yaşamış olan sizden tecrübelerinizi duymak isterim.
- Lwip versiyon olarak ST'nin SPL örneklerine göre baya ilerledi buna karşın bir geliştirme yaptınız mı?
- SPL bağımlılığı kaldırıp HAL 'e geçmeye çalıştınız mı?
- Lwip tarafında burada bahsi geçmeyen herhangi başka bir problemle karşılaştınız mı?
- Lwip harici bir stack (örneğin uIP) kullandınız mı?
Freertos 'ta da yeniyim, araştırma aşamasındayım henüz. Siz nasıl bir sistem kullandınız task yapısında (semaphores, mutex, queues vb) kısaca açıklayabilirseniz çok sevinirim.
Şimdiden teşekkürler..