Kendi kendini düzelten network sorunu

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Renesas RA6M2 ve eclipe bazlı e2studio ile proje geliştiriyorum. Daha önce yanlış RJ45 konnektörün takılması nedeniyle Ethernet bağlantısı hiç çalışmıyordu, konnektörü değiştirince düzeldi. Bu sefer DHCP ile IP adres almıyor. Birkaç saat değişik şeyler denedim, yok, çalışmıyor.

Ben de sıfırdan yeni bir proje oluşturdum. FreeRTOS ve bunun TCP/IP stack entegrasyonu ile minimal bir proje hazırladım. Bunda denediğim zaman sorunsuz DHCP ile IP adres alıyor.

Ben de iteratif sürece başladım, çalışmayan projedeki unsurları adım adım çalışana ekliyorum. Amaç, neyi ekleyince çalışmayacağını görmek ve problemi bulmak. RTOS ayarlarını aktardım, basit olan hala çalışıyor. Clock ayarlarını aktardım, hala çalışıyor. Çevre birimlerini ekledim, hala çalışıyor. Kesmeleri ekledim, hala çalışıyor. GPIO pin tanımlarını aktardım, hala çalışıyor. Akşama kadar adım adım belki 30 tane unsur ekledim, hala çalışıyor.

İki proje arasındaki farkları bir diff programı incelemeye başladım. Beyond Compare kullanıyorum, şiddetle tavsiye ediyorum programlama ile uğraşan herkese. Aradaki farklar zaten beklenen şeyler, eclipse IDE, dosyalarda neredeyse her satıra bir "timestamp" koyuyor, ne faydası var bilmiyorum ama iki proje arasındaki yapılandırma dosyalarındaki farkların neredeyse tamamı bu timestamp.

Tabi çalışmayan projedeki tüm kaynak kodu çalışana aktarmadım. Ama ana döngüde yapılan iş, her iki program için de tam olarak aynı. Birisi (sıfırdan yapılan) IP alıyor diğeri IP almıyor. Derleyici ayarlarına baktım, çalışmayanda optimizasyon ve bazı warning'ler kapalı. Bir fark yaratacak şey değil, ama hadi deneyeyim dedim. Eşitledim, hala birisi IP alıyor diğeri almıyor.

configuration.xml dosyası var, bütün proje ayarlarını içeriyor. XML bazlı bir program ile aradaki farklara baktım, timestamp'ler dışında dosyalar aynı. Tabi XML bileşenlerin yerleri farklı, projenin adı farklı, birisinde olan bütün kaynak kodlar diğerinde yok, ama efektif olarak aynı. Kafayı yiyeceğim, iki proje efektif olarak aynı. Diğerinde ilave bir sürü kaynak kod var ama, onlar sadece derleniyor, herhangi bir şekilde fonksiyon falan çağrılmıyor. ana program tam olarak aynı işi yapıyor. Birisi IP alıyor diğeri almıyor.

XML diff belki bir sorun çıkarıyordur diye beyond compare ile iki xml dosyasını açtım. XML bileşenlerin sıralamasını da eşitledim. İki XML arasındaki fark, timestamp'ler, proje adı, ve çalışmayan projedeki ilave kaynak kodlar.

Tekrar test ettim ve artık basit projenin çalışmamasını umuyorum, çünkü bu ikisi aynı artık! Test edince tam şok yaşadım. Basit çalışmayacağına, daha önce IP almayan program çalışmaya başladı! Ulan ne oldu, o projede birşey değiştirmiyordum yav. Onun çalışmamaya devam etmesi lazımdı! Akşama kadar uğraştırdı beni, ve IP almama sorununu kendi kendine düzeltti.

İşte bu eclipse IDE den bu yüzden aşırı derecede nefret ediyorum. Onlarca yapılandırma dosyası oluşturuyor. Bir opsiyon değiştiriyorum, beş altı tane dosya değişiyor, birkaç tanesine değişen opsiyonu yazıyor, diğer birkaç tanesinin timestamp'ini değiştiriyor. Bazan da kafasına göre farklı farklı yeni yapılandırma dosyaları oluşturuyor. Bir ayar, birden fazla yapılandırma dosyasında yansıtılıyor. Velhasıl ne olduğunu anlamayadım. Herhalde düzgün çalışan proje ile uğraşırken IDE'nin kendisinde sakat olan bir ayar mı düzeldi ve bu düzelme diğerine de mi yaradı bilmiyorum.

Doğrudan makefile ile çalışmak isterdim ama ona da vaktim yok. İşlemci çok karmaşık, çevre birimi yapılandırmasını mecbur IDE nin ekranlarından yapmam gerekiyor. Ama bu işlemci ile çalışmaya devam edersek, mutlaka bir IDE'den kurtulmam lazım. Tam bir baş belası.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,735
Böyle giderse Timur abinin pencerenin altında beklemek lazım :)

Benim owon'un bilgisayar uygulamasını'da Eclipse IDE kullanarak yazmışlar saçma sapan hataları var dediğini bende yaşıyorum sanırım.
Eğer bilgisayar'da daha önce okuduğu com-porta başka bir cihaz takılıp-çıkarıldıysa kesinlikle o com'a bağlantı kuramıyor bilgisayar ilk çalıştığından beri hiçbir cihaz takılmamış bir com olması gerekiyor.
Hele birde kendiyle benzer bir driver kurulduysa bi küfür etmediği kalıyor owona mail atıyorsun çözüyorlar ama güncelleme falan yok hep o dosyayı değiştirin bunu silin bunu yükleyin diyerek çözdürüyorlar bugların yarısını ben söyledim zaten:katil2:
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Çok gıcık gerçekten bu eclipse. Kaynak kodlarındaki çalışma geçmişini takip etmek için git kullanıyorum, ama eclipse ile çalışırken neyin git'e eklenmesi lazım neyin eklenmemesi lazım, bu konuda hiçbir faydalı kaynak bulamadım. Her şirket eclipse'i özelleştiriyor ve her birisi farklı yapılandırma dosyaları üretiyor. Mesela kaynak kodda bir bug düzeltiyorum, sonra da git ile bakıyorum ne değişmiş diye. Benim kaynak kod değişmiş, tamam, ama onun dışında 5 tane de eclipse yapılandırma dosyası değişmiş! Neden?!? Artık ne yapayım, onları da commit ediyorum, açıklama olarak da "eclipse ıvır zıvırlarını ekle" gibi birşey yazıyorum.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,735
Çok gıcık gerçekten bu eclipse. Kaynak kodlarındaki çalışma geçmişini takip etmek için git kullanıyorum, ama eclipse ile çalışırken neyin git'e eklenmesi lazım neyin eklenmemesi lazım, bu konuda hiçbir faydalı kaynak bulamadım. Her şirket eclipse'i özelleştiriyor ve her birisi farklı yapılandırma dosyaları üretiyor. Mesela kaynak kodda bir bug düzeltiyorum, sonra da git ile bakıyorum ne değişmiş diye. Benim kaynak kod değişmiş, tamam, ama onun dışında 5 tane de eclipse yapılandırma dosyası değişmiş! Neden?!? Artık ne yapayım, onları da commit ediyorum, açıklama olarak da "eclipse ıvır zıvırlarını ekle" gibi birşey yazıyorum.
Abi tam olarak kesitremesem'de programı yanlızca sen yazıyorsan.
Biraz köklü bir değişikliğe gidip başka işlemciye geçmek gibi bir şansın yokmu atıyorum bu renesas performansında daha önce üstünde tecrübe ettiğin bir işlemciye geçme şansın varsa daha rahat ilerlersin.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Abi tam olarak kesitremesem'de programı yanlızca sen yazıyorsan.
Biraz köklü bir değişikliğe gidip başka işlemciye geçmek gibi bir şansın yokmu atıyorum bu renesas performansında daha önce üstünde tecrübe ettiğin bir işlemciye geçme şansın varsa daha rahat ilerlersin.

Çip krizi var Ahmet o yüzden buna geçtik. Yoksa biz uzun süredir Freescale (şimdi NXP) nin ARM işlemcilerini kullanıyorduk. Bunu da linux altında yaptığımız için eclipse'e ihtiyacım olmuyordu. Ama NXP işlemci istiyorsan 10 hafta lead time var, Renesas hazır stokta var.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Bir de Linux, işlemcinin neredeyse tamamını uygun bir şekilde yapılandırıyor. Geriye kalan şeyleri de "device tree" sistemi ile kolayca belirliyorsun. Eclipse dehşetini yaşaman hiç gerekmiyor :)

Yani NXP bile kullansak gene Eclipse olacaktı çünkü çevre birimlerini başka türlü yapılandırmak için işlemcinin ilgili çevre birimlerini çok ayrıntılı olarak bilmen lazım. Ama Eclipse ile ne yapıyorsun? UART mı lazım, ekliyorsun UART'ı, baud rate belirliyorsun, kesme için callback fonksiyonu koyuyorsun, Eclipse de ilgili kaynak kodunu üretiyor ve UART'tan mesaj gelince senin callback fonksiyonu çağrılıyor.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,735
Çip krizi var Ahmet o yüzden buna geçtik. Yoksa biz uzun süredir Freescale (şimdi NXP) nin ARM işlemcilerini kullanıyorduk. Bunu da linux altında yaptığımız için eclipse'e ihtiyacım olmuyordu. Ama NXP işlemci istiyorsan 10 hafta lead time var, Renesas hazır stokta var.
Ben bireysel düşündüm tabii birde bu üründen edilecek kâr ürün maliyetine koyulan sınırlar vs. var birde bunlara uzun bir bekleyiş eklenemez.

Bir de Linux, işlemcinin neredeyse tamamını uygun bir şekilde yapılandırıyor. Geriye kalan şeyleri de "device tree" sistemi ile kolayca belirliyorsun. Eclipse dehşetini yaşaman hiç gerekmiyor :)

Yani NXP bile kullansak gene Eclipse olacaktı çünkü çevre birimlerini başka türlü yapılandırmak için işlemcinin ilgili çevre birimlerini çok ayrıntılı olarak bilmen lazım. Ama Eclipse ile ne yapıyorsun? UART mı lazım, ekliyorsun UART'ı, baud rate belirliyorsun, kesme için callback fonksiyonu koyuyorsun, Eclipse de ilgili kaynak kodunu üretiyor ve UART'tan mesaj gelince senin callback fonksiyonu çağrılıyor.
Eclipse senin istemediğin bir kısım ekleyince onu ne kadar düzenleyebiliyorsun?
Mesela UART'ı yapılandırırken 8N1 olarak tanımladık diyelim START bitin'de fazla zaman kaybetti(atıyorum 5us) sen buna ne kadar müdahale edebiliyorsun.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Renesas'ın eclipse IDE sinin adı e2studio. Her çevre birimi için kaynak kod üretiyor. Kaynak kodu görüyorsun ama müdahale etmemen gerekiyor, çünkü e2studio komple rebuild yapınca kaynak kodlarını da tekrar üretiyor. Eğer e2studio yapılandırma sisteminde istediğin değişikliği elde edemiyorsan, mecbur o kodu kendin yazacaksın.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
e2studio çevre birimleri yapılandırmak ekranı. Java'da yazıldığı için inanılmaz yavaş çalışıyor. Mesela 16 bit external bus olan BUS0 yapılandırması yapıyorum. Bir botunun drop down menüsünü indirmek 20 saniye sürüyor, değişikliği yapmak ve diğer pine geçmek de her birisi 20 şer saniye sürüyor. Tam saç baş yolmalık.

1657966271136.png
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,735
e2studio çevre birimleri yapılandırmak ekranı. Java'da yazıldığı için inanılmaz yavaş çalışıyor. Mesela 16 bit external bus olan BUS0 yapılandırması yapıyorum. Bir botunun drop down menüsünü indirmek 20 saniye sürüyor, değişikliği yapmak ve diğer pine geçmek de her birisi 20 şer saniye sürüyor. Tam saç baş yolmalık.

18418 eklentisine bak
Bunun için oluşturulmuş bir gcc derleyicisi yokmu acaba.
RL78 Family için arduino komutları kullanılabiliyormus Fiyatını görünce :dusun1:böyle oldum.
Birde ben kampımı kurdum artık arduino ide'ye başka yere gitmek zor geliyor.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
14,371
Derleyici GCC zaten :)
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,735
Sen hiç hızlı çalışan bir Java programı gördün mü?
benim owonun programını eclipse java ide ile yazmışlar.

Nispteden hızlı çalışıyor mesela automatic skop tanıma özelliğini açınca skobu taktıktan 10 saniye sonra diyor ki aha buldum senin skobu.

Benim C# form ile yazdığım bir basit seri haberleşme uygulaması bile takar takmaz buluyor.
Artık owon mu beceremedi yazmayı java'dan mıdır bilmem o kadarını ama biraz yavaş işte.
 
Top