Uzaktan yazılım güncelleme

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

kantirici

#15
http://ww1.microchip.com/downloads/en/AppNotes/Atmel-42141-SAM-AT02333-Safe-and-Secure-Bootloader-Implementation-for-SAM3-4_Application-Note.pdf

Yukarıdaki dokümanda tüm soruların cevapları var arkadaşlar. Fakat bu iş ilk başlarda karışık gelebilir. Bu yüzden en basit haliyle başlamak en iyisi.

Öncelikle bir led blink uygulamasını uygun şekilde geliştirip binary dosyayı direk bootloader yazılımında kullanabilmek için C array'e çevirip bootloader programına gömün. Ardından bootlader bu datayı yeni uygulama olarak flash'a yazıp bu kodu çalıştırsın. Gerisi kolayca gelir diye düşünüyorum.

gokhangokcen

Alıntı yapılan: JOKERAS - 27 Ekim 2020, 17:31:22Help 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.


Proton programının helpinde üstad. Zor bir devre değil klasik max232 tarzındaki rs232 ttl converter devresi. işlemciye önce bootloader yüklüyorsun programlayıcı ile sonra rs232'den bağlantı kuruyorsun oradan yazdırıyorsun programı.


@mufitsozen  üstad seri port ile değilde ethernet bootloader olsa benim işimi daha çok görecek gibi. Ya da bir fikir genelde W5500 kullanıyorum uygulamalarımda. ModbusTCP ile iletişim kuruyorum endüstriyel cihazlar ile. W5500 yerine Ethernet to RS232 bir cihaz kullansam işimi görür mü acaba= Hem ethernet iletişimi olacak hemde bootloader olacağı için tcp'den gelen paketler ile program güncelleyebilir miyiim? tecrübe eden var mıdır?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

tunayk

Olayın mantığı açısından ethernet veya seriport bişeyi değiştirmiyor. Bence siz önce mantık kısmını bi halledin. Sonrasında isterseniz bluetooth ile bile güncellersiniz.
Tüm haberleşme tipleri (burada konuştuklarımız) işlemciye bir Rx pininden seri olarak veri basar.

Siz seriyi halledin, hepsi halolur :D

JOKERAS

Alıntı yapılan: gokhangokcen - 28 Ekim 2020, 10:37:15Proton programının helpinde üstad. Zor bir devre değil klasik max232 tarzındaki rs232 ttl converter devresi. işlemciye önce bootloader yüklüyorsun programlayıcı ile sonra rs232'den bağlantı kuruyorsun oradan yazdırıyorsun programı.
Boot Loaderi nasıl yazacağız onu soruyorum.


 

power20

Boot Loader, mcu ya göre fark gösterir. Her defasında flash üzerine yazılacak paket boyutu değişebiliyor. 1 bayt değil de 64 veya 128 bayt gibi.

mufitsozen

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

#21
Bootloader yazmanin hic bir esprisi yok.

Dikkat edilmesi gereken bazi konular var. Aslinda bu bootloaderdan ziyade bootloader ile yukleyecegin uygulama programini nasil yazacagin ile ilgili.

Cunku ciplak bir mcu'ya kod yazmakta sorun yok.

Memory basi sonu belli, int vektorlerini tutan adres belli.

Fakat boot loader yazdiginda ramin bir kismini kullanmis oluyorsun ve uygulama programinin ram ofseti kayiyor. Boyle ofsetli mi kullanacaksin yoksa bootloader ram alanini uygulama programina devretmek uzere bosa mi cikartacaksin.

Ayni sekilde eger bootloader int vektoru kullaniyorsa int vektor tablosunun, ugulama programi isletilmeden once yeniden duzenlenmesi gerekecek.

Bootloader isin kolay kismi, herhangi bir iletisim kanalindan gelen verileri flashta uygun bir alana yazacaksin. Yani flash'a yazma programi sadece. Programi baslatmak icin de uygulama programinin start noktasina jump edeceksin.

Gozden kacirmamaniz gereken bir konu da uygulama programiniz guvenlimi degilmi?

1) Birileri sizin adiniza MCU'ya kendi kodunu yukleyebilsin mi yukleyemesin mi?

2) Uygulama programinizi mesela internete koydunuz ve musteriler kodu kendileri yuklesin istediniz. Rakipleriniz sizin kodunuzu alip inceleyebilsin mi inceleyemesin mi?

Asil trikler bunlar.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: z - 29 Ekim 2020, 01:19:02Bootloader yazmanin hic bir esprisi yok.


Gozden kacirmamaniz gereken bir konu da uygulama programiniz guvenlimi degilmi?

1) Birileri sizin adiniza MCU'ya kendi kodunu yukleyebilsin mi yukleyemesin mi?

2) Uygulama programinizi mesela internete koydunuz ve musteriler kodu kendileri yuklesin istediniz. Rakipleriniz sizin kodunuzu alip inceleyebilsin mi inceleyemesin mi?

Asil trikler bunlar.


Burada bir ekleme yzapmak isterim. @z'nin bahsettigi konularin dogru bir sekilde tasarlanarak cozulmesi urununuzun clonelarinin yapilmasini da engelleyecektir.

en basitinden mcu-id kullanarak ytapilan bir sifreleme islemi ile bootloder'a gonderilen bilginin her mcuya farkli olmasini saglar. Boylece hwi kopyalayan birisi calusan sistemin bootload datasini baska bir mcuda kullanamaz.

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

#23
Uygulama programinizin kesinlikle kriptolanmis olmasi gerekiyor.

Boylece internete cirilciplak koydugunuz uygulama programi disassembler ile incelenmeye kalkildiginda asla programiniz makine kodu gibi gorulmemeli.

Bir ara forumun asagidaki linkinde acik kaynak programlara aykiri bir baslik acmistim. Orda detaylar hakkinda fikir cimlastigi yapmistik.

https://www.picproje.org/index.php/topic,52838.msg400327.html#msg400327

Eger kriptolama kullanmayacaksaniz bu kez PC'lerdeki BIOS fonksiyonlari gibi bazi fonksiyonlar yazip bunu bootloader programina gommek, uygulama programinizda da bios fonksiyonlarini kullanmak bir miktar guvenligi artiracaktir. Cunku uygulama programi debug edilse bile zirt pirt ortalikta olmayan bazi fonksiyonlarin calgriliyor olmasi programin anlasilmasini zorlastiracaktir.

Ote yandan MCU'ya hic bir sekilde trojan ati sokulmamasini da garanti altina almaniz gerekiyor.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

Siz aşmışsınız.Hele bir Boot edelimde Şifrelemeyi sonra düşünürüz:)

gokhangokcen

Alıntı yapılan: JOKERAS - 28 Ekim 2020, 13:30:46Boot Loaderi nasıl yazacağız onu soruyorum.


 
protonun içerisinde gömülü geliyor üstad. dosyalarının içerisinde var hazır olarak. Yazma konusunu bende öğrenmeye çalışıyorum şu an
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

#26
Alıntı yapılan: kantirici - 27 Ekim 2020, 23:12:15http://ww1.microchip.com/downloads/en/AppNotes/Atmel-42141-SAM-AT02333-Safe-and-Secure-Bootloader-Implementation-for-SAM3-4_Application-Note.pdf

Yukarıdaki dokümanda tüm soruların cevapları var arkadaşlar. Fakat bu iş ilk başlarda karışık gelebilir. Bu yüzden en basit haliyle başlamak en iyisi.

Öncelikle bir led blink uygulamasını uygun şekilde geliştirip binary dosyayı direk bootloader yazılımında kullanabilmek için C array'e çevirip bootloader programına gömün. Ardından bootlader bu datayı yeni uygulama olarak flash'a yazıp bu kodu çalıştırsın. Gerisi kolayca gelir diye düşünüyorum.

@kantirici üstad binary dosyasını nasıl açarım array yaparım?

@z hocam bir elimizden tut, yol göster şu işi bitirelim.
Olayın mantığı bahsi geçtiği gibi çok zor bir işlem değil. Verilen kaynakları araştırdım. Sanırım işleyiş şu şekilde. -*Hex/Bin dosyasını bir array haline getiriyoruz (bunu nasıl yaparız bilgim yok).
*Ardından işlemciye bu array dosyasını x alanından itibaren yaz diyoruz.
*Restart ederek yeni kodların çalışmasını sağlıyoruz.

kodların kripto vs olaylarına hiç girmiyorum. Şu an yapmak istediğim aşina olduğum için ve elimde stm32f103c8 kartı olduğu için bir ethernet ile güncelleme yapan bootloader yazmak. Örneğin işlemciye bir bootloader yükleyeyim. Ardından ethernet arayüzünden attığım kod ile led yakıp söndüreyim. Bana bu konuda yol gösterir misiniz?

İlk takıldığım nokta binary dosyasını nasıl array yaparız? (bin dosyasını herhangi bir program ya da notpad ile anlamlı olarak açamadım) belli ki bir program vs ihtiyacımız var.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

z

Forumda STM32 icin flash write flash delete gibi C fonksiyonlari vardi.

Asagidaki linkteki Flash dokumani da isine yarayacaktir.

http://www.cncdesigner.com/wordpress/?page_id=4096
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

z, Boot Loader yazmak bu kadar kolaymı?Yani Flash Read/Write yaptığımız zaman olay bitiyormu?

Basit bir kaç Örnek C kodu versen mesela bir 1 Saniyede led yak söndür.
Update yazılımında 3 saniye yak söndür vs gibi.
 

z

Hemen hemen flasha write kadar basit.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com