Uzaktan yazılım güncelleme

Başlatan gokhangokcen, 26 Ekim 2020, 13:55:48

gokhangokcen

Merhabalar, günümüzün gelişen teknolojisi ile artık yaptığımız kartlar, ürünler yeri geliyor dünyanın öbür ucuna kadar ulaşıyor. Merak ettiğim konu sizin de başınıza gelmiştir muhakkak. Yaptığınız bir üründe hata/sıkıntılı bir durum sezdiniz ya da kullanıcı farklı bir değişiklik istedi. Bu durumun üstesinden gelmek için neler yapıyorsunuz?

Son zamanlarda benimde oldukça ihtiyaç duyduğum konu biraz bu konu üzerine eğilmek istiyorum. Ethernet üzerinden mi yoksa bir sd kart ile mi ya da rs232 bağla bir bilgisayara uzaktan bağlanıp yazılım mı güncelliyorsunuz? Neler yapılabilir? Fikirlerinizi bekliyorum.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

triyak

Artık birçok işlemcinin usb desteği var, biz usb kullanıyoruz. Cihaz ilk açılışta usb bellekteki yazılımı kontrol ediyor eğer usbde daha yüksek versiyonlu yazılım varsa onu yükleyip öyle çalışmaya başlıyor.

bsenguler

OTA(Over The Air)'yı araştırınız, 21.yüzyıldayız artık tüm cihazlar internete bağlı eğer kapalı bir sistem kullanıyorsanız usb-sd kart gibi ortamlardan başka çareniz yok.

JOKERAS

gokhangokcen hangi yol ile (OTA,RS232,USB vs) Update yapıldığını değil,
bunun işlemci tarafını,nasıl yapıldığını Yani Boot mantığını soruyor sanırım.

RS232'den işlemci programlayan arkadaş varmı?Varsa o bize bunun mantığını anlatabilirmi?



gokhangokcen

#4
Alıntı yapılan: wanted0035 - 26 Ekim 2020, 14:14:28Artık birçok işlemcinin usb desteği var, biz usb kullanıyoruz. Cihaz ilk açılışta usb bellekteki yazılımı kontrol ediyor eğer usbde daha yüksek versiyonlu yazılım varsa onu yükleyip öyle çalışmaya başlıyor.
hocam flash disk ile program güvenliğini nasıl sağlıyorsunuz? O programın size ait olup olmadığını belirleyen ne gibi tedbirler alıyorsunuz? biraz açıklama şansınız mümkün mü? Örneğin Pakistandaki adama bir dosya göndermeliyim tek tek cihazları gezecek mi? Bazen makine üzerindeki cihazlarımda sök tak işlemi çok meşakatli bir işlem oluyor.

Rs232 ile zamanında çok program yükledim (önceden bootloader olan işlemcilere). Örneğin, şu an genelde kullandığım STM32F103 serisi işlemci var. Bu işlemciye fiziki olarak orada bulunmadan program atmam gerekiyor. Buda internet olan ortamda olacak. ESP serisi olur ya da türevleri ya da kartımda bulunan ethernet/spi dönüştürücüler ile kart bir şekilde internete bağlı. Bunu uzaktan nasıl güncelleyebilirim? Veyahut bir işletmede aynı ağda bulunan 10 cihazım var diyelim ip ve mac'leri birbirinden farklı ve ben bunları biliyorum. Orada bulunan ağa bağlandığımda oturduğum yerden 10 cihazıda nasıl güncelleyebilirim? Cihazın içerisine nasıl bir bootloader yazmam gerekir? internette biraz araştırma yaptım genelde arduino ile ilgili döküman var. STM mimarisine çok hakim değilim yeni yeni tanıştım projeler geliştiriyorum. Öncesinde pic ve atmega kullandım yeterli bilgiye sahibim. Stm için ethernetten güncelleme ile ilgili örnek olan ya da nasıl yapılacağına dair bir şeylerin anlatıldığı döküman web sitesi olan var mıdır?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

tunayk

Eğer yeni yapacağın kartlar ile ilgili bir planın varsa, yapman gereken Uzaktan göndereceğin yeni firmware'i alıp bir kenarda tutacak bir hafıza alanı eklemen ve kodlarına, uzak bağlantı ile ilgili komutları gönderip boot moda soktuktan sonra yeni dosyayı alacak rutinleri eklemen olacaktır.  Bundan sonrası zaten kolay.

Güncelleme yapılacağı zaman sahadaki kullanıcı çevre güvenliğini alır, cihazı belirleyeceğin duruma sokar. Sonrasında sen bağlanıp gerekli komutları ve dosyayı gönderirsin.

Cihazın dosyayı aldıktan sonra CRC vb. kontrolü yapar. Dosya sağlam ve kendisine ait ise, hafızasına kaydeder, reset atar iş biter.

JOKERAS

Sorum havada kaldı galiba.
PC arayüzü,yükleyici Programmer olmadan Sadece RS232 ve Terminal ile İşlemciye yazılım yükleyebilen varmı?
Deneyen,uğraşan oldumu?

Örnek çok basit bir Pgm olabilir.İşlemcide hali hazırdaki yüklü olan yazılım,Mesela Matrix süren bir
bir yazılım olsun.Matrix'te "Ahmet" yazıyor olsun.Yeni Update yazılımında ise "Mehmet" yazacağımızı varsayalım.Veya başkaca herhangi basit bir örnekte olabilir.
Bunu RS232 ile nasıl Yükleriz?Boot Loaderini nasıl yazarız mantık silsilesi nedir?

fide

Alıntı yapılan: JOKERAS - 27 Ekim 2020, 15:22:20Sorum havada kaldı galiba.
PC arayüzü,yükleyici Programmer olmadan Sadece RS232 ve Terminal ile İşlemciye yazılım yükleyebilen varmı?
Deneyen,uğraşan oldumu?

Örnek çok basit bir Pgm olabilir.İşlemcide hali hazırdaki yüklü olan yazılım,Mesela Matrix süren bir
bir yazılım olsun.Matrix'te "Ahmet" yazıyor olsun.Yeni Update yazılımında ise "Mehmet" yazacağımızı varsayalım.Veya başkaca herhangi basit bir örnekte olabilir.
Bunu RS232 ile nasıl Yükleriz?Boot Loaderini nasıl yazarız mantık silsilesi nedir?
Arduino kartların tamamına yakını (bildiğim kadarıyla due ve leonardo hariç) hepsi önce seri port dtr hattı üzerinden reset atıp sonra işlemci hazır olana kadar bekliyor. Arada birkaç karakter karşılıklı alıp verdikten sonra programlama moduna geçip programı atmel çip üzerine yazıyor. Sonra reset atıp çalışmaya başlıyor.
Seri port bootloader örneği arıyorsanız arduino kartlara bakabilirsiniz.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

magnetron

STM32 de seri porttan kod yüklenebiliyor

flash loader demo diye bir program var ben onunla yüklüyorum

JOKERAS

Anlamaya çalıştığım Boot Loader mantığı.Mesela herhangi bir işlemciyle devre tasarladınız,bunu sattınız.
Gün oldu Devran döndü Takke düştü Kel göründü vs.Bu sattığınız Devrelerdeki yazılımları güncellemeniz gerekti.
Bunlara tek tek Üreticinin uğraşması mümkün değil.Ürünü kullanan vatandaş Sitenize koyduğunuz güncel hex'i
indirip RS232,USB vs ile bunu İşlemciye yükleyebilmeli.
İşlemciye Kodu yazarken içine Boot Loaderini de yazmamız ve gömmemiz gerekki bunu yapabilelim.
Bunu nasıl yaparız?

Hali hazırda ilgili özel işlemcilere göre yapılmış Boot Loaderler olabilir.Ama biz onu kendimiz her hangi bir işlemciye yazmamız gerek.Bunu nasıl yaparız?

aslında gökhangökçen'de bunu soruyor diye anladım.

tunayk

Alıntı yapılan: JOKERAS - 27 Ekim 2020, 15:51:01Anlamaya çalıştığım Boot Loader mantığı.Mesela herhangi bir işlemciyle devre tasarladınız,bunu sattınız.
Gün oldu Devran döndü Takke düştü Kel göründü vs.Bu sattığınız Devrelerdeki yazılımları güncellemeniz gerekti.
Bunlara tek tek Üreticinin uğraşması mümkün değil.Ürünü kullanan vatandaş Sitenize koyduğunuz güncel hex'i
indirip RS232,USB vs ile bunu İşlemciye yükleyebilmeli.
İşlemciye Kodu yazarken içine Boot Loaderini de yazmamız ve gömmemiz gerekki bunu yapabilelim.
Bunu nasıl yaparız?

Hali hazırda ilgili özel işlemcilere göre yapılmış Boot Loaderler olabilir.Ama biz onu kendimiz her hangi bir işlemciye yazmamız gerek.Bunu nasıl yaparız?

aslında gökhangökçen'de bunu soruyor diye anladım.

Bootloader yazmanız için öncelikle işlemcinizin içerden kendi flash belleğine / program alanına yazabilmesi gerekiyor. İkincisi, code protect ayarlarının bu alana yazmaya izin vermesi gerekiyor veya içeriden değiştirilebiliyor olması gerekiyor.  Bunları yapabiliyor ise, bundan sonrası yapılan tasarıma göre planlanabilir. Standart bir bootloader işlemcinin reset vektörü denen ilk çalışma kısmına yerleştirilir. Kalan kısma da programın kendisi yazılır. Boot modda gelen haberleşmeden gelen program parçacıkları doğrudan program hafıasına yazılır. İşlem yarıda kesilirse hafızadaki program çöp olmuş olabilir.  Bootloader sağlam kalacağı için yeniden yükleme yapılabilir.

Lakin programda oluşturulacak farklı bir mekanizma ile boot moda geçip uzaktan gelen veriyi doğrudan veya harici bir hafıza alanına da yazılabilir. Sonrasında da harici alandan program hafızasına transfer edilir.

 

JOKERAS

tunayk,Teşekkürler.Şimdiki işlemcilerin çoğunda Self Flash Write-Read özelliği var.
Ram alanları eskiye nazaran nispeten daha geniş.
Aslında basit bir iş yapan yazılımla işlemciye bunun nasıl yapıldığını anlamak lazım.

Şöyle bir yol izlesek.
Run Time'da Kullanılamasa bile...

*Donanımsal veya yazılımsal yapılmış RS232 kodumuz her halukarda var.
*İnterrupt kodumuz her halukarda var.
*CRC,Check Sum Hata denetim kodumuz her halukarda var.
*Falsh Read/write her halukarda var.
*Boot Moduna soktuğumuz Kod parçacığımız da var.
*İşlemcinin Ram Rom Bellek haritasını,yüklediğimiz İlk Programın Bellekte hangi adreslerden
başladığı,bittiği veya Taştığı noktaları biliyoruz.
*Boot moduna sokulan işlemciye yazılımı ne yapacağını söylediğimiz Kodumuzda var diyelim.

iş sadece dışardan gelen veriyi Ram'e kopyalayıp Flash Write işlemi Flash'a yazmak yer değiştirmek değilmidir?Bayağı karışık bir iş olduğu aşikar.

El birliğiyle bu işi çözelim!Bu güzel bir şey:)

gokhangokcen

@JOKERAS üstad basic programlama dili kullanırken tıpkı bahsettiğin gibi bir program yapmıştım kayan yazı uygulaması. Proton derleyici kullanıyordum. Kendi içinde olan bootloader dosyasını bir kere programlayıcı vasıtası ile yazdıktan sonra direkt derleyiciden rs232 ile gönder gibi bir seçenek vardı programlayıcı ile uğraşmadan direkt proton üzerinden programı güncelleyip denemelerimi yapıyordum. Hatta help kısmında devrenin nasıl olacağına ilişkin kısımda vardı. Helpindeki sayfa 28'de.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

JOKERAS

Alıntı yapılan: gokhangokcen - 27 Ekim 2020, 17:03:32@JOKERAS üstad basic programlama dili kullanırken tıpkı bahsettiğin gibi bir program yapmıştım kayan yazı uygulaması. Proton derleyici kullanıyordum. Kendi içinde olan bootloader dosyasını bir kere programlayıcı vasıtası ile yazdıktan sonra direkt derleyiciden rs232 ile gönder gibi bir seçenek vardı programlayıcı ile uğraşmadan direkt proton üzerinden programı güncelleyip denemelerimi yapıyordum. Hatta help kısmında devrenin nasıl olacağına ilişkin kısımda vardı. Helpindeki sayfa 28'de.
Help hangi help?
Madem böyle bir uygulama yaptınız bunun mantığını anlatırmısınız?
Bu işi öğrenmemiz lazım.Bu iş gerçekten çok önemli ve gerekli diye düşünüyorum.

mufitsozen

AN4657 Application note
STM32 in-application programming (IAP) using the USART
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.