GÖMÜLÜ SİSTEMLERDE RESETLEME TEKNİKLERİ

Uğur TARLACI
6 min readMay 10, 2020

Gömülü sistemlerde yazılımsal veya donanımsal olarak kurgulanması çok kritik RESET YÖNETİMİ konusu üzerinde nedense çok durulmaz veya özensizce kurgulanır. Ürün geliştirme sürecinde çok da kendini belli etmeyen bu eksiklik, ürünlerin sahaya sürülmesi sonrasında belirgin hale gelir ve can sıkıcı sonuçlar doğurabilir. Ayrıca henüz sahaya sürmeden sistem üzerinde EMI/EMC testleri yapacaksanız bu eksiklik daha erken görülür hale gelir. Sistemi resetlemenin pek çok nedeni olabilir. Gerilim seviyesinin ideal değere ulaşma anı, gerilim seviyesinin ideal değerin altına düşmesi anı, anlık gerilim çökmeleri, MCU içinde koşan kodun bir bug veya elektriksel gürültü (noise) sebebiyle kontrolden çıkması, çevre birimlerinden beklenen geri dönüşlerin zamanında alınamaması, bir kod bloku içinde umulandan daha uzun süre vakit harcanması, bellek hataları veya taşmalar, stack taşmaları, manuel yeniden başlatma isteği gibi.

Detaylara geçmeden önce Bir MCU’ nun temel Reset devresine kısaca göz atalım. Aşağıda bir MCU içinde bulunan temel bir reset devresi çizimi görülüyor. Bu çizimde NRST pininden alınan harici reset devresini ve yine bu pine bağlı dahili reset devresini görebilirsiniz. Dahili reset, çizimde görüleceği üzere WDT, Software Reset, POR, BOR gibi farklı reset kaynaklarından ortak bir sinyal olarak oluşturulmaktadır.

MCU Reset Devresi

Gömülü Sistemlerde Reset Yönetimi dendiğinde şu kavramlar bilinmelidir.

POR (Power-On Reset)

Sisteme güç verildiğinde, sistemin ihtiyacı olan besleme geriliminin doğru değere yerleştiği anda sistemin çalışmasını sağlayan reset tekniğidir.

Osilaskopta POR Dalga Formu

Gömülü sistemlere güç verilirken, güç kaynağının ideal değerine ulaşması için belirli bir süre gereklidir. Bu geçiş süresi boyunca reset durumu sağlanamaz ise, registerler, analog entegratörler ve bellek elemanlarının başlangıç durumları tanımlanamaz ve dolayısıyla devredeki davranışları kestirilemez.

Bu nedenle, ideal gerilim değerine ulaşma süresince bu bileşenlerin reset durumunda tutulması gerekir. POR, güç kaynağı tüm devrelerin doğru bir şekilde çalışabileceği sabit değer seviyesine ulaşıncaya kadar tüm devreleri reset durumunda tutmalıdır.

POR — PDR Dalga Formu

PDR (Power Down Reset)

Sistemi besleyen güç kesildiğinde, gerilim değerinin tüm sistemin sağlıklı çalışabileceği eşiğin(POR) altına düşmesi durumunda sistemin resete götürülmesi işlemidir. Gömülü sistemlerde güç kesildiğinde, gerilim değerinin sıfır değerine ulaşması için belirli bir süre gerekir. Bu süre zarfında gerilim bir anda sıfır olmaz, yavaş yavaş düşer. Sistemin kararlı çalıştığı gerilim seviyesinin altına düşüldüğünde kararsız çalışmalar olabilir. Bu nedenle güç kapatıldığında, gerilim sıfıra düşmeden belirlenen POR değerinde sistem sıfırlanır ve kararsız çalışmanın önüne geçilir.

PVD (Programmable Voltage Detector)

Supply Voltage Supervisors

POR ve PDR nin threshold değerlerini belirleyen bir voltaj dedektörü bu süreci yönetir. MCU içinde dahili veya MCU dışında harici olabilir. (PVD- Programmable voltage detector) MCU içinde ise ilgili registerler ile bu aralık belirlenir. Harici olanlara ise Supply Voltage Supervisor adı verilir ve farklı markaların sisteminize uygun modellerinden seçilir. Supervisorler tek bir sistem gerilimini referans alabileceği gibi birden fazla gerilim değerini de referans alabilir. Sisteminiz farklı gerilimlerle beslenen bileşenlerden oluşabilir. Bu durum, sisteminizin ayağa kalkması (Power ON) ve durdurulması (Power OFF) aşamalarında daha dikkatli olmayı gerektirir. Örneğin, sisteminizde 3V3, 5V ve 1V8 beslemeye sahip bileşenler olsun.

Bu durumda boardun üzerindeki tüm bileşenlerin aynı anda başlatılması idealdir ve ana yonganızın da bu aşamadan sonra start alması gerekir. Bu tip dedektörler birden fazla seviyedeki gerilimin istenilen seviyeye ulaşmasını denetler ve ulaşıldığında MCU veya MPU’ yu tetikler.

BOR (Brown Out Reset)

POR & BOR

Çalışma sırasında bastırılamayan ve kabul edilebilir zamandan uzun süren gerilim çökmelerinde sistemin kararlılığı için resetlemenin yapılması tekniğidir. Sistem çalışmakta iken besleme geriliminin yandaki dalga formunda görülen Tint süresi boyunca Vıow değerine düşmesi durumunda Tbor süresince BOR aktif olur ve MCU’ yu resetler. Daha kısa sürelerde veya da yüksek gerilim değerlerinde oluşan gerelim çökmelerinde reset işlemi gerçekleşmez. Bu Vıow değerini MCU registerlerinden set edebilirsiniz.

BOD (Brown-Out Detect)

Brown Out Reset gerilim seviyesini ve süresini algılayan dedektördür.

Osilaskopta BOR Dalga Formu

WDT (Watch Dog Timer)

WDT (Watch Dog Timer)

MCU ‘nun süreçleri doğru biçimde yönetip yönetemediğini, kodun işleyişinin sağlıklı olup olmadığını denetleyen bir tür puantör gibi çalışır. Türkçe’ ye “Güvenlik Zamanlayıcısı” olarak çevirebiliriz. Kod işleyişi süresince WDT isimli zamanlayıcıyı periyodik olarak sıfırlanır. WDT, belirli sürelerde MCU tarafından sıfırlanmak ister. Eğer bu zaman zarfında MCU, WDT zamanlayıcısını sıfırlayamaz ise bu kez WDT, MCU’ yu sıfırlamaya zorlar. Bu sayede her şeyin sağlıklı olduğunu gösteren bu WDT sıfırlama işlemi yapılamadığında tüm sistemi otomatik olarak yeniden başlatma imkanı oluşur. WDT, eğer siz bunu MCU içinde aktif ederseniz devrededir. MCU içinde bulunan WDT’ ler genelde Core dışında yer alır. Bunun sebebi, Core da bir kilitlenme olduğunda WDT ‘nin sistemi bağımsız olarak resetleyebilmesidir. WDT, MCU içinde dahili olabileceği gibi harici olarak ta kullanılabilir. Bu durumda harici WDT için donanımsal olarak reset süresi belirlenir. WDT Reset çıkışı MCU ‘nun RESET pinine bağlanır, WDT’yi resetlemek için de MCU’ dan bir tetikleme girişi WDT çipine bağlanır. Temel uygulama şemasını yukarıda görebilirsiniz. WDT ve Voltage Supervisor özelliğini aynı anda sunan malzemeler bulunabilmektedir. PCB üzerinde yer tasarrufu sağlamak adına bu tip ürünleri de tercih edebilirsiniz.

Soft Reset

MCU veya diğer akıllı yongalarda yolunda gitmeyen ve telafisi mümkün olmayan bir durum gerçekleştiğinde veya periyodik olarak sistemin yazılımsal olarak yeniden başlatılması işlemine Soft Reset adı verilir. Çevre birimlerin yazılımsal olarak resetlenebilmesi işlemi MCU tarafından gönderilecek komutlar ile gerçekleşebilir. Bu da MCU ve Çevresel Birimler arasında bir haberleşme bağlantısının olmasını gerektirir. Soft Reset ‘in en önemli farkı kontrollü bir sıfırlama olmasıdır.

Hard Reset

MCU veya diğer akıllı yongalarda bulunan Reset Pini üzerinden haricen veya dahili reset üreteçleri ile yapılan müdahaleler ile sistemin sıfırlanması işlemine Hard Reset (Donanımsal Reset) adı verilir. Hard Reset durumunda akıllı yonga kontrolsüz olarak sıfırlanacağından sistemin bütününü etkileyecek sonuçlar doğurmamasına dikkat edilmelidir.

Sistem Reset

Çevre birimlerinin kararlılığının geri beslemeler ile denetlenmesi ve kararsız birimlerin MCU tarafından sıfırlanması işlemidir. Sistemde bulunan diğer akıllı yongalar, MCU tarafından donanımsal olarak resetlenmek üzere gerekli bağlantılar oluşturulur ve kararlı çalışmayan yongalar MCU dan gelecek olan bir reset sinyali ile donanımsal olarak resetlenebilir. Ayrıca çevre birimler MCU ile yazılımsal olarak ta resetlenebilmektedir ve sağlıklı olan da budur. Eğer çevre birimler yazılımsal (Soft Reset) olarak resetlenemiyorsa donanımsal olarak resetlenme (Hard Reset) yoluna gidilmelidir.

Enerjinin Sıfırlanması

Enerjinin Sıfırlanması yöntemi ile yeniden başlatma işlemi de diğer bir resetleme yöntemidir. Ancak zorunlu haller dışında kesinlikle önerilmez. Özellikle Dosyalama Sistemi kullanılan gömülü sistemlerde ölümcül sonuçları olabilir. En son başvurulacak resetleme tekniğidir.

RC Devresi ile Harici Reset Pin Bağlantısı ( POR)

Eğer tasarımınızda bir Voltage Supervisor kullanmayacaksanız aşağıda görülen RC Reset devresini mutlaka tasarımınıza ekleyin. Bu devrede bulunan RC değerine göre MCU’ nuzun sisteme güç verilmesinden itibaren ne kadar süre sonra başlayacağını belirleyebilirsiniz.

RC Reset Devresi

Burada bulunan R1 değeri ne kadar yüksek olursa doğal olarak C1 kapasitörünün şarj süresi uzayacaktır. Bu süre zarfında ise RESET noktasında lojik “0” değeri görülecektir. C1 kapasitörünün dolması ile birlikte RESET noktasında lojik “1” görülecek ve MCU çalışmaya başlayacaktır. R1 değeri sabit tutulup C1 değeri artırılarak ta aynı sonuca ulaşılabilir. Bu defa kapasitör değeri büyük olduğundan tam dolum süresi daha uzun olacaktır. D1 diyodu ise güç kesimi anında hızlı deşarj için gereklidir. Aksi durumda anlık enerji kesintilerinde kurmuş olduğunuz bu RC Reset devresi görev yapmayacaktır. Bu durumu anlatan osilaskop dalga formu aşağıda görülmektedir.

Reset İşleminde Dikkat Edilmesi Gereken Noktalar

Özellikle hard reset sırasında gerek işlemci gerekse çevre birimler tarafında dikkatli olunmalıdır. Örneğin sisteminizde bir belirli bir konfigürasyona sahip RF Modül olsun. RF performansının düştüğünü belirlediniz ve modülü resetlemek istediğiniz. İşte bu gibi durumlarda öncelikle Soft Reset ‘i denemelisiniz, neden ? Soft reset komutları ile modülü resetlemek istediğinizde, modül kendi işleyişini etkilemeyecek şekilde süreçleri sonlandıracak ve resete gidecektir. Ancak Hard Reset yaparsanız, modül bu sonlandırma süreçlerini tamamlayamadan kapanacağından sonuç kestirilemez olacaktır. Bu bir olasılıktır ve ne kadar sık hard reset yaparsanız bu olasılığı arttırmış olursunuz. Yine sisteminizde bir bellek kullandığınızı ve bu bellek yönetimini bir dosya sistemi ile yaptığınızı varsayalım. Bu sırada oluşacak bir hard reset veya enerji kesintisi durumu dosya sisteminizin bozulmasına yol açabilir. Bu nedenle tüm reset işlemlerine soft reset ile başlamanızı, sorun çözülemiyorsa hard reset işlemine geçilmesini öneririm.

Uğur TARLACI // 2020

ugurtarlaci@yahoo.com

--

--