STM32F4 assert_failed kısmı ??

Başlatan b3nQ, 19 Mayıs 2014, 15:59:07

b3nQ

merhaba arkadaşlar STM32F4'e yeni başladım ve şu aralar boşum tek uğraşım o :) buraya daha çok konu açacağım gibi geliyor umarım sizden de sorularıma cevap gelir :))

STM32F4 Cube indirdim ve orda examples ları incelelerken main.c dosyasının içinde genelde kodların en aşağısında şmyle bir asser_failed fonksiyonu oluyor.Bu ne anlama geliyor ? ayrıca bunu koymanın mantığı nedir ?? biz kendi projemizi oluşturduğumuzda böyle birkısım koymalı mıyız ??
içeriğndeki ingilizce açıklamayı okudum ne demek istediğini anladım ama bi mantığını anlamadım yani..

resmi burada.

[IMG]http://i62.tinypic.com/mj4a9u.jpg[/img]

magnetron

STM nin  kendi peripheral library ' sini kullanırken
kütüphanedeki fonksiyonlara hatalı parametre girilince
bu fonksiyon çağrılıyor diye biliyorum


fgokcegoz

ST nin library lerindeki fonksiyonlara geçirilen parametreler assert kontrolünden geçirilir. Eğer hata varsa bu assert_failed fonksiyonu çağrılır ve hata durumunda bu fonksiyon içindeki sonsuz döngüde beklemesi sağlanır.
"Vicdanın ziyası, ulûm-u diniyedir. Aklın nuru, fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder." (Bediüzzaman Said Nursi)

X-Fi

Ayırıca bu fonksiyonu her zaman kullanmanıza ihtiyaç olmayacak define tanımıyla debug versiyonunuzda çalışır hale getirip kontrolü yaptırırsınız hata yok iken release versiyonda bu tanımı kaldırmazsanız her fonksiyonda karşılaştırma işlemleri yapılacağı için işlemciye gereksiz yük bindirmiş olursunuz.

Amaç geliştirme aşamasında geri bildirim alıp hatayı aza indirmek. CM3 için hemen hemen tüm std librarileri kullanmış biri olarak bana soracak olursanız gereksiz bir güvenlik. Kritik noktalarınız var ise orada kendi test kodlarınızı zaten yazmakta üşenmiyorsunuz. library ler bu kritik işlere dahil bile olmuyor.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

magnetron

#4
X-Fi hocam siz söyleyince uyandım

her library fonksiyonunda assert_param fonksiyonunu çağırıyor
bu da assert_failed fonksiyonunu çağırıyor herhalde 

bunu release için nasıl devre dışı bırakırız ?



X-Fi

Kod içerisine #define ile ya da target dan processors symbols kısmına USE_FULL_ASSERT yazmazsanız çalışmaz hocam.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)