Gömülü Sistemler için Grafik Kütüphanesi - U8G2

Başlatan bymrz, 11 Şubat 2021, 13:47:18

bymrz

Herkese Merhabalar,

Bir konuda yardımlarınıza ihtiyacım var, şimdiden herkese teşekkür ederim. Şöyle ki:

STM32 işlemcili bir kartımda 512KB(512Kx8) harici SRAM bağlı. Bu Sram içerisinde örneğin 640 x 5000 pixel boyutunda(tek renk monochrome) bir grafik oluşturmak istiyorum. Bu grafiğin içerisinde bazı yerlerde çeşitli basit geometrik şekiller ve yazılar yazmak istiyorum. Daha sonra ramdaki bu alanı farklı şekillerde kullanacağım. Fakat LCD vs. gibi bir şey yok sistemde. Olan biten her şey RAM alanı içerisinde olacak.

İnternette araştırdığım kadarı ile gömülü sistemlerde en çok kullanılan U8G2 kütüphanesi gözüme çarptı.

Fakat kendi sistemime nasıl entegre edebileceğimi anlayamadım. Yani herhangi bir LCD ye değil de benim ram alanıma nasıl kaydedebilirim, bu konu karışık geldi.


Bir de şu kütüphaneyi buldum
https://www.codeproject.com/Articles/363908/Simple-two-file-graphics-library-for-C-Cplusplus


Fakat bu kütüphanede pixel i "1 bit" şeklinde bile ayarlasam, 1 pixel için 2 byte gibi bir alan kullanıyor. Yani benim istediğim gibi 8 pixel 1 byte (1bit:1pixel) değil...

Kısacası, oluşturduğum şekilleri ve yazıları direkt olarak RAM a kaydettirebileceğim bir kütüphane önerisi olan veya U8G2 yi nasıl entegre edebileceğim hakkında fikir sahibi olan varsa çok memnun olurum...


Kolay gelsin..


Mucit23

U8G2 ile ilgili bilgim yok ama bu kütüphaneler genellikle katman katman çalışır. Kütüphane uyumluluğu için haberleşme katmanlarının yazılması gerekir. Baştan sona kütüphaneye hakim olmak gerekiyor.

Bunun yerine TouchGFX veya STemWin gibi ST nin doğrudan desteklediği kütüphaneleri kullanamanızda fayda var. Dökümantasyon konusunda sorun yaşamazsınız.

Fakat Özel Custom Tek Renk LCD ler için yine Haberleşme katmanlarını yeniden yazmanız gerekebilir.

bymrz

Alıntı yapılan: Mucit23 - 11 Şubat 2021, 14:19:43U8G2 ile ilgili bilgim yok ama bu kütüphaneler genellikle katman katman çalışır. Kütüphane uyumluluğu için haberleşme katmanlarının yazılması gerekir. Baştan sona kütüphaneye hakim olmak gerekiyor.

Bunun yerine TouchGFX veya STemWin gibi ST nin doğrudan desteklediği kütüphaneleri kullanamanızda fayda var. Dökümantasyon konusunda sorun yaşamazsınız.

Fakat Özel Custom Tek Renk LCD ler için yine Haberleşme katmanlarını yeniden yazmanız gerekebilir.

Hocam bu kütüphaneyi de inceledim fakat çok kapsamlı ve basit bir mikrodenetleyiciye kolay bir şekilde entegre edilemiyor. CubeMx ten de baktım OS ve LCD arabirimi olması gerekiyor.


brandice5

uGUI deneyebilirsin.

http://embeddedlightning.com/ugui/
https://github.com/achimdoebler/UGUI

Aslında senin ihtiyacın olandan çok çok daha fazlasını içeriyor ama entegrasyonu kolay olduğu için kullanabilirsin. Sadece 2 dosyadan oluşuyor, ugui.c ve ugui.h
Yapman gereken UG_Init fonksiyonuna setPixel fonksiyon pointerı geçmek.

kantirici

Ug8 için aşağıdaki örneği inceleyebilirsiniz. Port işlemi basit.

https://github.com/fozc/BluePill_st7920

RaMu

Kütüphaneye vs. ihtiyacın yok harici sram i [512k] byte tek boyutlu bir array olarak düşünecek
ve bu arraydeki her bir bite [640][5000] index iyle erişecek şekilde bir fonksiyon yazacaksın.
Bu fonksiyonun görevi put_pixel ve lazımsa get_pixel olacak.

Hızlı olması ve yazılıp silinme kolaylığı için sram in özelliklerine dikkat etmen gerekecek.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

brandice5

@RaMu ilk mesajdan anlaşıldığı kadarıyla arkadaşın ihtiyacı sadece bir framebuffer değil. Bu framebuffer üzerinde çizim yapmak ve yazı yazmak istiyor.
Dolayısıyla bir grafik kütüphanesi şart. Sadece grafik çizmek için komple bir GUI kütüphanesi kullanmaya tabiki gerek yok, ama bu kütüphaneler genelde bu şekilde bundle olarak geliyor.

Benim eskilerden hatırladığım CCS PICC kütüphaneleri içinde "graphics.c" dosyası vardı. Bunun içinde sadece line, circle, 5x7 text yazdırma gibi fonksiyonlar vardı. Bunlar yeterli ise komple GUI kütüphanesi kullanmak yerine sadece bu "graphics.c" kullanılabilir.

bymrz

Alıntı yapılan: brandice5 - 11 Şubat 2021, 21:04:49uGUI deneyebilirsin.

http://embeddedlightning.com/ugui/
https://github.com/achimdoebler/UGUI

Aslında senin ihtiyacın olandan çok çok daha fazlasını içeriyor ama entegrasyonu kolay olduğu için kullanabilirsin. Sadece 2 dosyadan oluşuyor, ugui.c ve ugui.h
Yapman gereken UG_Init fonksiyonuna setPixel fonksiyon pointerı geçmek.



Hocam bu işimi görecek gibi. Dediğin gibi SetPixel için kendi fonksiyonumu yazdıktan sonra gerisi hallolacak gibi. Yarın hemen deneyeceğim.

@kantirici hocam ug8 i de detaylı inceleyip çözebilirsem onu da kullanırım muhtemelen.


Teşekkürler...