işlemcinin içerisinde koşan programı uzaktan değiştirebilmek

Başlatan jackal183, 05 Kasım 2012, 09:32:28

jackal183

merhaba, uzun süredir bu konu kafamı meşgul ediyor. şu sıralar büyük sıkıntı olmaya başladı. bir ürün geliştirip çıkardığımızda, işlemciye bir program yüklüyoruz. yükleme işini ICSP bağlantısı ile ya da işlemciyi devreden söküp direk programlayıcı üzerindeki sokete takıp programlıyoruz.  sahada çalışan 50 tane cihazım var varsayalım. kullanıcı bir değişiklik talep etti. gidip bütün cihazlar sökülüp, işlemcileri çıkartılıp tekrar programlama yapıyorum. peki bunun başka bir yolu yok mudur? rs232- rs485- usb- ethernet vs.. gibi iletişim yöntemleriyle işlemcinin içinde çalışan programı uzaktan değiştirme imkanı yok mudur?

f_machine

bootloader ile rs232,usb veya ethernet  üzerinden "kod güncellemesi" yapabilirsin.

jackal183


drmp

kendi bootloaderni yazabilirsin çoğu picin flash roma yazma komutu var  hatta artık sıradan bir şey

dikkat edilecek konu :derleyicinin oluşturduğu hex kodunu kullanamazsın   biraz sıkıntı çıkaracak  içinde bir sürü ıvır zıvır var  irdelemen gerekecek 

Maxim

böyle bir uygulamada yani bootloder ile yüklemede en önemli sorun güvenlik sanırım ?

jackal183

googlea bootloader diye yazdım da meğer bu konu ne kadar da bilinen ve kullanılan bir şeymiş de benim haberim yomuş, ben de amele gibi her seferinde cihazları yerinden söküp programlama ile uğraşıyorum. pic için konuşacak olursak, bütün piclerde bu bootloader aynı mıdır? yoksa 16f için farklı 18f için farklı 24f için farklı 30f 33f için farklı gibi şeyler var mıdır?

mesaj birleştirme:: 05 Kasım 2012, 09:47:29

hocam hiç bilmediğim işk kez duyduğum bir konu için olduğu için cahilliğimi mazur görünüz, ne demek yani en büyük sorun güvenlik? bu yöntemin dezavantajları da var sanırım

Maxim

bende bilmiyorum fazla

şimdi 2 farklı yapı düşünebiliriz sanırım
1- uzaktan sizin kendi cihazınıza bağlantı kurarak kodu yüklemeniz
2-kodu müşteriye göndererek, onun müşteri tarafından usb üzerinden yüklemesini sağlamanız

burada 2. şıkta kodun çalınması ve paylaşılması problemi var
kod, sadece sizin cihaza yüklenirse çalışmalı başka şekilde kullanılamamalı.

jackal183

uzaktan programı değiştirebiliyorsak eğer onu hallederiz maxim hocam, birden çocuklar gibi sevindim ya böyle birşey olduğunu öğrenince :) biraz araştırayım bakalım nedir nasıl yapılır

muhendisbey

Multi task yada multi thread denilen işle sağlanabiliyor. Nasıl çalıştığını biliyorum, ancak henüz böyle birşey yapamadım. Cihazı kapatmadan, yeniden programlamadan bu iş uzaktan erişimle de yapılabiliyor.

Mantık olarak işlemleri sırayla yapmak var Paralel olarak

şimdi pic te bir kodu düşün uzun uzuna cycle ile dönüyor. Seri olarak komutlar birbirine bağlı. Değiştirilemezler...
İşlemi paralel yaparsan istediğinde ekleme ve çıkarma yapabilirsin.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

serhat1990

Şunu belirtelimki her kontrolör'de bootloader özelliği yok . Kullandığınız işlemcide olması önemli . Şöyle birşey olması iyi olur güvenlik açısından bir bilgisayar programı yazılabilir. Bu programda upgrade seçeneği ile internetten program yüklenebilir. Bu sayede elinizdeki hex' i karşı tarafa vermezsiniz .
Bu bilgisayar programı sayesinde yazılım güncellenir.

İyi Çalışmalar.

f_machine

bazı işlemciler (örnek stm32,stm 8 serileri ) dahili bootloader içeriyor.Onlara direk uart tan bağlanıp bu birimi kullanarak kod atabiliyorsun.
eğer bu birim yoksa işlemcinin kendi flashına yazabilmesi grerekiyor.Bu şekilde uart,spi,i2c vb. işlemci nereden data alırsa alsın kendini güncelleyebiliyor.
Bu pdf stm32 uart boot ile ilgili  bir örnek.
http://www.stm32f0.com.cn/pdfs/application_note/01_AN3155%20USART%20protocol%20used%20in%20the%20STM32%20bootloader.pdf
Ayrıca bu işlerin diğer adı da IAP (In Application Programming).

XX_CİHAN_XX

Alıntı yapılan: Maxim - 05 Kasım 2012, 09:54:15
bende bilmiyorum fazla

şimdi 2 farklı yapı düşünebiliriz sanırım
1- uzaktan sizin kendi cihazınıza bağlantı kurarak kodu yüklemeniz
2-kodu müşteriye göndererek, onun müşteri tarafından usb üzerinden yüklemesini sağlamanız

burada 2. şıkta kodun çalınması ve paylaşılması problemi var
kod, sadece sizin cihaza yüklenirse çalışmalı başka şekilde kullanılamamalı.

2. şık önemli ve aynı sorun benimde karşımda. Bu güvenlik sorununun nasıl aşılacağı konusunu hala netleştiremedim.

Daha öncede sordum ama tatmin edici yanıtlar bulamadım bu konuda nasıl yöntemler kullanılıyor?
Ben güncel yazılımı web siteme yükleyip müşterilerime bunu indirin ve cihazınıza yükleyin dediğimde bu kodun çalınmaması için başka cihazda çalışmayacağını garanti altına almam gerekir.
hex yada bin her neyse ilgili dosyayı bir şekilde ya kripto edicem yada sadece tanımlı id lerde çalışacak şekilde kodlayacam ama bunu nasıl yapabilirim.
Bu iş için STM32F4 lerde kullanmak üzere hazır ticari programlar aradım ancak aramalarım sonuçsuz kaldı. Bu kadar önemli ve ihtiyaç duyulan bir konu hakkında nasıl olur da ticari bir yazılım bulamam hala anlamış değilim.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

camby

18f ıle bu ıs kabaca nasıl yapılabılır.

Mesela resetten sonra ılk 10 sn bootloader ı mı dınlesın. Ilk 10 herhangı bır boot ıslemı yapılmaz ıse normal calısmaya baslasın gıbı ?

Bootloader ıslemınde de aldıgı her paketı sırayla flasha yazacak tabı,yukleyıcıden ıstekler bıtene kadar. Arada bır prtokol fln kullanan yazan var mı?

Master: sana 123456 paket verı yollayacam , her 64 pakette bır bana onay ver gıbı.
Slave: her 64 pakette cevap verecek , en son da verify olacak hepslı ...gıbı

z

Kullandığınız işlemcinin flashını parça parça silmek mümkünse kendi yazacağınız  programlama, iletişim ve kripto çözme programlarını asla silmeyeceğiniz flash segmentlerden birinde tutarsınız.

Kullanıcı son versiyonunuzu yüklemek istediğinizde kriptolanmış dosyayı internet üzerinden indirir. Cihazını bir tuş ile programlama moduna geçirir ve dosyayı okutur. Senin yazılımın dosyayı deşifre edip flasha yükler.

Dosyanın başkalarının eline geçmesinin önemi kalmaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

kriptolama ' ya basit bir örnek verebılır mısınız?


Alternatif olarak CHIP ıd ler de kullanılabılır. Atılan programda CHIP'e aıt ID bulunur , program basladıgında ID ' ler uyusmuyorsa program ıslemeye devam etmez. Dolayısıyla baska bıyerde program koşamaz.

Hex dosyasının cozulmesı gıbı bır korku var mı ?