Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Ynt: Program Memory İle ilgili

Başlatan serhat1990, 23 Temmuz 2012, 13:41:12

serhat1990

Arkadaşlar bir projede kullandığım işlemcinin program memory doldu. Artık içine yazamıyorum . Sizce programda ne tür kısaltmalara gitmek bellek açısından tasarruf sağlar . Hangi fonksiyonlardan kaçınmalıyım. Önerilerinizi bekliyorum ... İyi çalışmalar...

serhat1990

Alıntı yapılan: gerbay - 23 Temmuz 2012, 13:57:01
kodunuz çok özel değilse görme imkanımız var mı? hangi MCU kullanıyorsunuz?

Hocam bir firma için proje o yüzden açık kaynak kodu veremiyorum yanlış anlamayın lütfen . İşlemci olarak 16f1827 kullanıyorum ... Programda eklenmesi gereken bir kaç özellik kaldı fakat onları eklemeye çalşırsam program memory hatası alıyorum ... İşlemci değiştirmek gibi bir şansımda yok. Tıkandım kaldım...

serdararikan

neden işlemci değiştiremiyorsun ki? hazır bir sistemin üzerinde değişiklik mi yapıyorsun?

serhat1990

Alıntı yapılan: serdararikan - 23 Temmuz 2012, 14:43:09
neden işlemci değiştiremiyorsun ki? hazır bir sistemin üzerinde değişiklik mi yapıyorsun?

Hocam Sistemi baştan yaptım onda değil sıkıntı . Firmanın çabucak istemesi nedeniyle ve pcblerin montajlarının yapılması nedeniyle sorun... Ondan dolayı diyorum. Benim uyarılarıma rağmen sıkıntı olmaz demeleri işlemcinin yazılımı tamamıyla bitmeden böyle bir işe kalkışmaları sorun. Diğer türlü daha büyük program memory'li bir chip'e geçerek sorun çok kolaya indirgenebilirdi ama sizde bilirsinizki bazı firmalar bu konuda çok ama çok aceleci ...


Alıntı yapılan: gerbay - 23 Temmuz 2012, 14:51:53
7 KB flash, 384 byte RAM var, yer çok dar..

eğer biten ROM değil de RAM ise read-only datalarınızı static const yapın, RAM kullanan hesaplama varsa mümkün olduğunca lookup-table oluşturarak çözmeye çalışın olayı.. 384 byte çok az..


Hocam dolan program memory , ram'in  durumuda pek iç açıcı değil ama program memory doldu...

Yazılı metinlerde azaltmaya gidecem . Bakalım gerekli yer açılacakmı. Bu arada aklınıza gelebilecek program memory'den tasarruf yapabileceğim yönler varsa dinlemedeyim hocam...

serdararikan

muhtemelen LCD kullanıyorsun.LCD deki metinler çok fazla yer kaplıyor olabilir.

serhat1990

Lcd kullanmıyorım Hocam. Ama seri porttan veri gönderiyorum. Bu verilerin ne oldugunu belli eden metinler yer kaplıyor tahminimce.

Ayrıca matematiksel işlemler var. Bunlarda baya bir yer kaplıyor...

yamak

Hocam derleyiciniz kod optimizasyon seviyesini eğer en üst seviyede değilse en üst seviyeye çıkarmayı deneyin. Belki daha fazla optimizasyon yapılırsa kodlarınız daha az yer kaplayabilir.

serdararikan

Alıntı yapılan: serhat1990 - 23 Temmuz 2012, 15:19:23
Lcd kullanmıyorım Hocam. Ama seri porttan veri gönderiyorum. Bu verilerin ne oldugunu belli eden metinler yer kaplıyor tahminimce.

Ayrıca matematiksel işlemler var. Bunlarda baya bir yer kaplıyor...

sanırım sisteminiz PC ile seri porttan haberleşiyor.öyle ise hesaplamaların bir kısmını PC ye yaptırabilirsiniz.ayrıca bilgilerin ne olduğunu belirtmek için metin kullanmanıza gerek yok.bilgileri belirli bir sıra ile gönderebilirsiniz veya her bilginin başına 1-2 karakter ekleyerek bilgilerin ne olduğunu tesbit edebilirsin.

serhat1990

Alıntı yapılan: yamak - 23 Temmuz 2012, 15:27:15
Hocam derleyiciniz kod optimizasyon seviyesini eğer en üst seviyede değilse en üst seviyeye çıkarmayı deneyin. Belki daha fazla optimizasyon yapılırsa kodlarınız daha az yer kaplayabilir.

En üst seviyede Hocam ... Yanıt için teşekkür ederim...


Alıntı yapılan: serdararikan - 23 Temmuz 2012, 15:31:22
sanırım sisteminiz PC ile seri porttan haberleşiyor.öyle ise hesaplamaların bir kısmını PC ye yaptırabilirsiniz.ayrıca bilgilerin ne olduğunu belirtmek için metin kullanmanıza gerek yok.bilgileri belirli bir sıra ile gönderebilirsiniz veya her bilginin başına 1-2 karakter ekleyerek bilgilerin ne olduğunu tesbit edebilirsin.

Şimdi o şekilde düzenliyorum Hocam. Umarım açılan yer bana ekleyeceğim işlemler için yeterli gelecektir.

Tagli

PIC içinde floating point sayılar üzerinde işlem yapılıyorsa bunların fonksiyonları hafızada baya yer kaplıyor. Sadece bunları bilgisayara hesaplatmak bile ciddi yer tasarrufu sağlayacaktır.
Gökçe Tağlıoğlu

ArGeMaNiA

Fonksiyonların mümkün olduğunca daha küçük parçalara ayrılmasının
tasarruf sağlayacağını okumuştum.
Yani uzun bir fonksiyonu iki-üç parça tasarlayabilirsen tasarruf
sağlayabileceksin diye biliyorum, tecrübe etmedim.
Haydi göreyim sizi, vazife-i ubudiyetinizi unutmamak şartıyla öyle çalışınız ki,  rûy-i zemini, her tarafı herbirinize görülen ve her köşesindeki sesleri size işittiren bir bahçeye çeviriniz.

serhat1990

#11
Alıntı yapılan: Tagli - 23 Temmuz 2012, 15:42:49
PIC içinde floating point sayılar üzerinde işlem yapılıyorsa bunların fonksiyonları hafızada baya yer kaplıyor. Sadece bunları bilgisayara hesaplatmak bile ciddi yer tasarrufu sağlayacaktır.

Hocam bu tip işlemler var fazlasıyla , mümkün olduğunca azaltmaya çalışıyorum bilgi için çok teşekkür ederim...

Alıntı yapılan: ArGeMaNiA - 23 Temmuz 2012, 15:51:19
Fonksiyonların mümkün olduğunca daha küçük parçalara ayrılmasının
tasarruf sağlayacağını okumuştum.
Yani uzun bir fonksiyonu iki-üç parça tasarlayabilirsen tasarruf
sağlayabileceksin diye biliyorum, tecrübe etmedim.

Öneriniz için teşekkür ederim Hocam. Fonksiyon çok fazla fakat pek fazla uzun değil. Yinede kontrol edecem teşekkürler...

Pyrodigy

#12
Kullandığın PIC 16K program memory li 32 Banklı bir PIC, bende kullanıyorum aynısından. Hangi dil ile yazıyorsun? Bankları, Pageleri düzgün kullanıyormusun?
Nasıl anladın dolduğunu? MPLab programında View kısmının en altında Memory usage var ona bas bi screenshot yap gönder bakalım nasıl doldurmuşsun:)
Edit: Kusura bakma 16f1527 ile karıştırdım.Bunun hafızası küçükmüş gerçekten.
Persistance is the name of the game in this business....

serhat1990

Hocam Hi-Tech dilinde yazıyorum...

Hafızası gerçekten küçük hocam . Doldu :) :)Dediğiniz yerden görüntülüyorum zaten...

z

Yazdığın fonksiyonlardan bir yada iki tanesini yayınlarsan alternatif yazım şekilleri oluşturulabilir belki.

Bazı rutinler asm yazılabilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com