Nuvoton N76E003AT20

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
24,643
Elimde deek robot'un voltaj akım ölçen paneli var. Çok verimli ölçüm yaptığı söylenemez, ama üzerinde uzun zamandır ilgi duyduğum bir MCU var, Nuvoton'un N76E003AT20 işlemcisi. O yüzden bunun üzerindeki diğer komponentleri söktüm ve sadece işlemciyi bıraktım. Bunun üzerinde kod geliştirmek için ve hardware debug yapabilmek için gereken bileşenleri linux için oluşturmak istiyorum.

N76E003AT20, 8051 mimariye sahip. Bunun programlama ve debug adaptörü olan nulink2pro yu da uzun zaman önce almıştım. Ama Nuvoton'un bu işlemci için öne çıkardığı yazılım geliştirme araçları, sadece windows'da çalışan IAR Embedded Studio ve Keil uVision. Linux'ta çalışıyor olsalardı bile, sadece çok kısıtlı kod büyüklüğünü bedava destekliyor. İşlemcinin bütün kaynaklarını kullanan kod yazmak için binlerce dolar para vermek gerekiyor. Nuvoton bir de Eclipse bazlı bir IDE koymuş, ama o da linux altında çalışmadı, bir sorun var.

Bu konu başlığı altında, bu işlemci için linux bazlı, ve tamamen açık kaynak bileşenlerden oluşan kod geliştirme ve hardware debug ortamının hazırlanması ile uğraşacağım. LED blink kurulumu hazır :D

1731231489013.jpeg
 
Gene de öncelikle mevcut kartın devre şemasını çıkardım. Blink kodu çalıştıktan sonra belki daha iyi çalışan bir volt/amper ölçer yapabiliriz

1731965967296.png
 
Emülatörün doğru çalıştığını teyit etmek için Keil uVision ve driver'larını indirdim. Emülatör sorunsuz çalıştı. Artık bu noktada OpenOCD yi uygun bir şekilde yapılandırıp denemeler yapacağım. Nuvoton, özel olarak yapılandırdığı OpenOCD nin kaynak kodlarını da yayınlamış. Baya eski versiyon. Ama öncelikle bununla çalışır hale getirip ortamı iyice anladıktan sonra belki son versiyonu da çalışır hale getirebiliriz

 
Bugün konu ile ilgili vakit harcama imkanım oldu. Nuvoton'un özel olarak N76E003AT20 için modifiye ettiği OpenOCD ile denemeler yaptım, ama stabil çalışmadığını farkettim. Bazan bağlanabiliyor bazan bağlanamıyor, bağlanınca takılıyor ve öldürülmesi gerekiyor ...

Nuvoton'un github sayfasına biraz daha bakınca, Windows altında çalışan bir programlayıcı yazılımı yayınlamışlar. Yazılım ücretsiz.

1731948029703.png


Bu yazılımı indirip Windows makinaya kurdum. MCU ya bağlanmada bir sorunun olmadığını gördüm. Bu durumda eğer bedava derleyici ile program geliştirebilirsek, bu programlayıcıyı kullanarak işlemciye yazabileceğiz. O yüzden OpenOCD ile şimdilik uğraşmadım.
 
Nuvoton'un açık kaynak olarak kullanıma sunduğu ve Eclipse bazlı geliştirme ortamını dana önce denemiştim. Benim linux makina ile uyumsuzluk çıkarmıştı ve çalışmamıştı. Diğer desteklenen derleyiciler de zaten Keil ve IAR, ikisi de binlerce dolar. Ben de Eclipse geliştirme ortamı tarafından da kullanılan ve açık kaynak olan SDCC derleyicisine odaklandım.


Programı, sitesinden açıklandığı gibi linux makinaya kurdum.

Sonra dan Opennuvoton dan N76E003AT20 MCU nin "board support package" (BSP) ini indirdim. Ama BSP yi yazan bunu sadece windows altından test etmiş herhalde, linux altından dosya isimlerinde büyük/küçük harf ayrımı olduğu için doğru çalışmadı. Bu sorunu gidermek için Opennuvoton'un BSP sini fork ettim ve kendi fork'umda sorunu giderdim


Bu BSP yi de indirip linux'da uygun bir yere koymamız yeterli, herhangi bir kurulum prosedürü gerekmiyor.
 
Sonra da bir dizin altında minimal projemi oluşturdum. Fırsat bu fırsat, VSCode da kurdum benim linux makinaya ve C/C++ geliştirme için gereken eklentileri de kurdum. Minimal program Makefile bazlı ve aşağıdaki depoda


Programı "make clean all" ile derliyoruz ve bize bir çeşit hex formatı olan ihx dosyasını üretiyor

1731947697948.png
 
Program aslında bir LED blink edecek, ama ilk başta daha temel olarak test edebilmek için şu anda P1 portunun bütün pinlerinde kare dalga ürettiriyorum.

Bir süre buglar ve MCU nun datasheet'indeki bilgilerle boğuştuktan sonra çalışan bir IHX dosyası elde ettim. Şu anda 30 kHz lik bir kare dalga alıyorum pinlerden.

1731947940006.png
 
Sonrasında loop değişkenini unsigned long yapıp 10 bin kat daha büyük bir count seçince frekans 30 kHz de 3 Hz e düştü

Kod:
#include "numicro_8051.h"

void main(void)
{
    unsigned long i;

    P1M1 = 0x00;
    P1M2 = 0xFF;

    while (1)
    {
        P1 = 0xFF;
        for (i = 0; i < 200000; ++i)
        {
            ;
        }

        P1 = 0x00;
        for (i = 0; i < 200000; ++i)
        {
            ;
        }
    }
}

 
Evet artık 2 KByte kod limiti olmadan, işlemcinin bütün kaynaklarını kullanarak kod yazabilirim. İlk fırsatta bu panelmetre için yeni firmware yazıp çalışır hale getireceğim.
 
Talep etmiş olduğum Nuvoton board ve programlayıcım elime ulaştı.
Windows kullanıcısı olarak ilk iş olarak nerden başlamalıyım.

IDE olarak NuEclipse_8051_V1.02.028r kurup burdan mı başlamalıyım
yoksa VSCode ile SDCC yi entegre edip ordan mı devam etmeliyim. VSCode tecrubemde yok.

Keil de ayrı bir secenek ama keilde Pack Installer kısmında nuvoton sectiğimde Hep Nuvotona ait olan ARM serisi işlemciler gozukuyor.
Sanırım zamanında kurarken keil klasorde bir takım temizlik yapmişta olabilirim.

Sipariş ettiğim ürünlerim.
Nuvoton Board.jpeg

Nuvoton PRG.jpeg


Keil Pack Installer goruntusu
Keil.jpeg
 
Ben Eclipse kullanmadım. Keil'i de sadece debugger'in doğru çalıştığını doğrulamak için kurdum ve sonra kaldırdım. Bunlarla bir hello world blink yapma prosedürünü ayrı bir konuda anlatabilirsin istersen. Ama asıl değerli olan bence doğrudan SDCC ve Makefile kullanarak kod derlemek, çünkü bu çok daha temel bir süreç ve IDE'lerin kattığı bir sürü bilinmeyen ve risk faktörü tamamen ortadan kalkıyor.
 
Hocam SDCC yi hatta makefile kullanmayı bende isterim hepte merak etmişimdir.
Bu ikili icin nasıl bir yol izlemem lazım.
Anahtar kelimeler nelerdir. Ona göre araştırma yapayım.

Teşekkürler.

Not:
Hocam Nu-link2-pro programlayıcımın hiç bir yerinde etiket yok. Acaba klon mu satın alınmış.
 
Sanırım sizde keilin mdk-arm lisansı var. Nuvoton (elinizdeki geliştirme kartı) için 8051 lisansını içeren C51 i kurmanız gerekir.
 
Benim bir blink kodu var github'da. Onunla başlayabilirsin. vscode şu anda olmasa da olur.


Ama öncelikle SDCC ve GNU Make kurman lazım. SDCC nin kurulum prosedürü anlatılıyordur dokümanlarında. GNU Make için de msys2 ye bakabilirsin. msys2, windows altında linux benzeri bir çalışma ortamı sunuyor ve isviçre çakısı gibi çok kullanışlı olan birçok linux programına erişim sağlıyor.
 
taydin hocam,
SDCC ve msys2 win olan makineme kurdum.
msys2 kurulum yaptığım link
MSYS2 MINGW64 Çalıştırdığımda
user@DESKTOP-2LUJOBP MINGW64 ~
terminali karşıma geliyor. Bu kısımda linux komutları iş goruyor test ettim.

Şimdi verdiğiniz linkteki uygulamayı nasıl derleme yapaçağım.

https://github.com/timaydin/N76E003_BSP
linkinden de kutuphaneyi indirdim.

makefile icine baktğımda şu an için bir şey anlayamadım. Klasor konumunu , Proje klasor yapısını nereye nasıl yapacağım.
Biraz ilerleyim yeni bir konuda sıfırdan nasıl yapılıyor diye konu açaçağım.
 
make komutu çalışıyor mu komut satırından?
 
Makefile bir text dosyası, ama sen onu bir script gibi çalıştırmışsın ve onlarca hata almışsın tabi :)

make programı çalışıyor mu?
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,242
Mesajlar
122,552
Üyeler
2,925
Son üye
YusufAbali

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top