/i/Yazılım

Umuyoruz ki geleceğin yazılımcıları bu altinciden çıkacak!
    başlık yok! burası bom boş!
  1. 1.
    +21 -5
    Biliyorsunuz ki AVR mikrodenetleyiciler Harvard mimarisini temel alıyor, yani programın çalıştığı bellek ile değişkenlerin tutulduğu bellek farklı. Bu yüzden SD kart gibi dış bir ortamdan program çalıştırılamıyor. bootloader çözümleriyle program belleğine HEX dosyası yazılabilse bile benim yaptığım sistem kadar özgür değil ve yüklenebilecek dosyanın boyutu program belleğiyle kısıtlı.

    Ben ise AVR mikrodenetleyiciler için basit bir bytecode interpreted dil geliştiriyorum. Java ve .NET dillerinin çalışma mantığıyla aynı yani.

    Bytecode interpreted dillerin Python gibi interpreted dillerden farkı ise yazılmış kodun doğrudan interpreter tarafından okutulmaması, bunun yerine bir derleyici tarafından bytecode'a (sanal makinenin anlayacağı özel bir tür makine dili) derlenmesi ve runtime esnasında bir sanal makine vasıtasıyla çalıştırıldığı işlemcinin makine dili komutlarına dönüştürülerek uygulanmasıdır. Dolayısıyla normal interpreted dillerden daha az yer kaplar ve daha performanslıdır.

    SD karttan, RAM'den hatta belki program belleğinden yüklenecek bir dosyayı yazdığım sanal makine ile yorumlayıp anlık olarak çalıştıracak. Bu sayede çalıştırılacak dosya boyutunun herhangi bir bir sınırı olmayacak.

    Dahası istenilen dilden benim bytecode dilime dönüşüm yapacak basit bir derleyici yazılabilir, bu sayede teorik olarak her dil ile AVR'lara program yazılabilir.

    Dilin adı UBL. Şimdilik yalnızca basit bir assembler yazdım, bytecode komutlarının mnemonic bir karşılığından ibaret yani. Bildiğimiz assembly gibi kısacası.

    Yakında C syntax'ine sahip bir derleyici yazmayı düşünüyorum, bu sayede çok daha kolay bir şekilde bytecode dilime uygun programlar yazılabilir.






    Şimdilik komutlar bunlar. AVR portlarına doğrudan erişim sağlayacak komutların üzerinde çalışıyorum. Elle tutulur bir hale geldiğinde derleyiciyi ve yorumlayıcıyı (AVR üzerinde çalışacak) paylaşırım.

    Ha unutmadan, AVR mikrodenetleyiciler Arduino tarafından kullanılıyor, yani bu proje Arduino ile %100 uyumlu.






    Son olarak şimdilik sadece 8-bit AVR mikrodenetleyicileri desteklemeyi düşünüyorum, 16 bit ve 32 bit AVR'lar üzerinde pek çalışmadım.

    Desteklerinizi bekliyorum, geliştirilirse çok güzel bir proje ortaya çıkabilir.

    Edit 1: Komut listesini güncelledim, özellikle register ve pin giriş çıkışları için komutlar ekledim. Onun haricinde Assembler'daki bug'ları gidermeye devam ediyorum.

    Edit 2: Assembler ve sanal makine hazır olmak üzere, çarşamba günü Assembler'ı cuma günü ise sanal makineyi paylaşmayı düşünüyorum.

    Edit 3: Bazı sağlık sorunları nedeniyle yayınlanma tarihi gecikecek muhtemelen:
    (bkz: panpalarım gözüm konusunda acil)
    Tümünü Göster
    ···