Renesas için Derleyici

Başlatan YARGICH, 15 Ocak 2006, 18:27:23

YARGICH

IAR Embedded Workbench programında ufak bir yazılım yazdım ve derledim. Yalnız derleme sonucunda Flasher prgramının anlayacağı bir dosya oluşmadı. Yani *.s, *.mot yada *.s2 uzatılarında hiç bir dosya oluşmadı, doğal olarak Flasher da derlediğim dosyayı açamadım. Yalnız duyduğuma göre IAR da yazılımı yazıp derledikten sonra başka bir programla bu Flasher'ın anlayacağı bir formata dönüştürülüyormuş. Acaba böyle bir program hakikatten var mı? yada bu Flasher'a yükleyebilmek için bu dosyayı nasıl oluşturacağız?
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

aYe

Alıntı yapılan: "YARGICH"IAR Embedded Workbench programında ufak bir yazılım yazdım ve derledim. Yalnız derleme sonucunda Flasher prgramının anlayacağı bir dosya oluşmadı. Yani *.s, *.mot yada *.s2 uzatılarında hiç bir dosya oluşmadı, doğal olarak Flasher da derlediğim dosyayı açamadım. Yalnız duyduğuma göre IAR da yazılımı yazıp derledikten sonra başka bir programla bu Flasher'ın anlayacağı bir formata dönüştürülüyormuş. Acaba böyle bir program hakikatten var mı? yada bu Flasher'a yükleyebilmek için bu dosyayı nasıl oluşturacağız?
Merhaba,

Sanirim senden başka kimse ilgilenmedi bu renesas ile zira bu soruyu bekliyodum :) Vakti zamanında elektro'dan selim bey baya bir uğraşmıştı saatlerce telefonda konuştuk yanıma geldiler beraber uğraştık felan. Yine bulan ben oldum da 1 aya maloldu çok ciddi ama bir o kadar da çözümü komik bir sorun. IAR'ın yeni derleyicilerinde böyle bir sorun yok sanırım sen eskisini kurdun. Test için debug kod için release kısmını seçmeye özen göster. Release şeçiliyken project option'a gir. Linker sekmesindeki format kismini other yap ve motorola output file'ı seç. Üst kısımdan overrite format yazan yere klick yap dosyanın uzantisini .mot şeklinde değiştir. Kodunu bir daha derle; release/exe/ içersinde mot uzantılı dosyan oluşur. İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

YARGICH

Hocam çok sağolasın. Evet galiba bir tek benim ilgimi çekti. Bu foruma gelmeniz en çok bana yaradı herhalde. Valla sürekli size işim düşüyo. İnşallah bir gün bende size bi şekilde yardımcı olurum. Tabi biraz zor, bi kere arada tecrübe farkı var :D

Hocam ben bide bu ID olayını anlamadım. Yani mot dosyasını yükledim. önce ID bulunamadı dedi. OK dedim geçti. Gelen penceren merak edip önce bi download yaptım bi şey çıkmadı karşıma :) Neyse tekrar Load yaptım ve Program dedim. Yükleme esnasında baktım çok yavaş durdurdum, ayarlarını değiştirdim. Şimdi hiç bi işlem yapamıyorum. ID tutmadı diyo. kapatıp açtım şimdi mot dosyasını bile yükleyemiyorum. Bu ID'yi benim yazılımın içerisinden belirlemem gerekiyor herhalde.

Bu ID tam olarak nedir ne işe yarar acaba?  Bi nevi güvenlik gibi bir şeymi. Çünkü hiç bi işleme izin vermiyor, okutmuyor, silmiyor bile.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

YARGICH

Hocam chipi falan iyice resetledim şimdi tekrar kullanabiliyorum. Ama genede bu ID olayını öğrenmek istiyorum.

Birde Program dediğim zaman iki tane adres soruyo Start ve End diye. Start adresine otomatik olarak 0A0000 atıyor, End adresine de 0FFFFF değerini atıyor. Bu şekilde programla dedim hata verdi. Start adresini 000000 yaptım, %70 gibi bi oran dolduktan sonra gene hata verdi. Bende 0A0000 değerine geldiğinden diye tahmin ettim ve start adresini 090000 atayarak denedim bu seferde daha kısa bir süre sonra hata verdi. Burda neden hata veriyor olabilir ve neden hata vereceği noktayı kendisi otomatik olarak atamış olabilir.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

aYe

Selam,

Renesas mcu'lar içinde bootloader ile birlikte gelir ve ilk programlama sirasinda kullandigin id daima geçerlidir. Bootloaderi silebilirsin ama o zaman da sadece paralel programlayiciyla programlayabilirsin. Ve lockbit atabilirsin. Ar-ge sirasinda 00-00-00-00-00-00-00 (kaç adetse net hatirlamiyorum) şeklinde kullan, ürün olucagı zaman uğurlu bir sayı seçersin. Adres olayina gelince; m30624 için başlangıç adresi 0xC0000'dür 0xFFFFF'e kadar gider ilk üç 64k'lik blok tek parça son 64'lük blok 32-16-8-8 gibi biraz daha daginiktir, detaylari datasheet'den görebilirsin. Reset ve interrupt vectorleri 0xFFFFF'den geriye dogru gider yani mcs51 avr pic gibi çoğu mcu'lardaki alışıla gelmiş 0'dan başlayan tip gibi değil. Bunun sebebi geriye dönük bir adrese start vector verebilmen dolayısıylada 2k yazdigin kod için her defasinda 256k'nin tekrar tekrar programlanmasini engellemektir. Bu iki açıdan faydalidir; boş yerlere gereksiz yere sil yaz yaparak eeprom'un ömrünün kısaltılmasini engellemek, programlama süresini hizlandirmak. Eger yazdigin kod 4k civariysa start adresi 0xFF000 yap. Bu ayarlar IAR'icin xcl yada benzer isimli bir dosyada bulunuyor. Su anki pc de yüklü değil uzun zamandir bakmadigim icin aklimda kalanlari aktariyorum. Uygun xcl i secip icersinden adreslerle oynamalisin. Altium'un renesas derleyicisi bunu otomatik yapiyor, inanilmaz güzel bir derleyici ama 4k limit var ve crack malesef yok. İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

aYe

Alıntı yapılan: "YARGICH"Hocam çok sağolasın. Evet galiba bir tek benim ilgimi çekti. Bu foruma gelmeniz en çok bana yaradı herhalde. Valla sürekli size işim düşüyo. İnşallah bir gün bende size bi şekilde yardımcı olurum. Tabi biraz zor, bi kere arada tecrübe farkı var :D
Caniniz sağolsun...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

engin_

Mikrodenetleyicilerle ilgili herşey ilgimi çeker ama şuan sınavlar nedeniyle gerekli ilgiyi gösteremiyorum.

Paylaşımlarınız için sağolun.

YARGICH

Hocam Memory olayını anladım Çok Teşekkür ederim.
Chipe göre başlangıç adresinin ayarladıktan sonra sorun çıkarmadı. Peki hocam bu yazılımı yükledikten hemen sonra Yazılım devre üzerinde çalışmaya başlayacak mı yoksa donanım üzerinde bir değişiklik yapıldıktan sonra mı çalışacak. Yani bu programlama PIC'lerde ki gibi In-Circuit-Serial-Program gibi mi.

Bide hocam ben burda programlayıcı şeması vemiştim. O şemada CNVss ucu 5K ile Pull-down yapılmış ve bir tane jumper ile 5V a verilmiş. Bu jumperi takıp CNVss ucunu 5V seviyesine çakmezsem Porgramlayamıyorum ve bunuda burda uyarı niteliğinde belirttmiştim. Ama gerçekten neden sadece bu ucu 5V a çekince flasher'ı çalıştırabiliyorum anlamadım çünkü o zaman mikroprocessor modunu seçmiş oluyorum. Ayrıca bu modda iken harici bir hafıza kullanmam gerekmiyor mu? yani programı nereye yazıyor?

Hocam bu chipin mikrodenetleyici modunda iken çalışması gereken minimum donanım için, benim verdiğim programlayıcıdaki şema yeterli olur mu? yoksa ekstra bir eklenti veya farklı bir konfigurasyon var mı? Eğer doğru programlıyorsam, çalıştıramamamın sebebinin donanım eksikliği yada konfigurasyon ayarlarından olabileceğini tahmin ediyorum da?

Ayrıca bu IAR konusunda neden bu kadar karışık yardım dosyaları var anlamadım. Daha basit en azından CCS gibi sadece komut setinin anlatıldığı bir yardım dosyası var mı acaba?
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

aYe

Selam,

Öncelikle rica ederim. Sırasıyla sorularına cevap vermeye çalışıyım. Programlama bittikten sonra CNVss pin'indeki jumper'i kaldir, ilgili pin pulldown üzerinden gnd olduktan sonra reset atarsan mcu çalışacaktır. Pic programla ile bir çok farklılıkları var. Mukayese etmemek lazim. Bu bilgileri senin yazina bakarak veriyorum zira 1 yildan fazladir renesas'lara dokunmadim. Ki çalıştığım zamanlarda bunlarla uğraşmıyodum. Kendi geliştirdiğim bir kaç analog eklentiyle; kod yeniden derlendiginde ve hex kod değiştiği anda bootloader bunu algılayarak program akışını kesip yeni programı yüklüyor sonrada tekrar reset atip çalıştırıyordu. Yani ben pc de kodu degiştirip derle dedikten sonra devrenin olduğu tarafa dönene kadar yeni kod çoktan çalışmış oluyordu. Ne bootloader'a ne de bir jumper'a buton'a dokunmadığım için programlamayla ilgili pek detay hatirlamiyorum.

Programlama esnasında CNVss'i high yapman microprosessor mod + program counter'in 256K haricindeki 4K lik özel bootloader blok'unu seçmesi içindir. Zira bu bir programlayici değil bootloader. Normal programlama mantiginda sadece paralel olarak programlayabilirsin.

Microprosessor modu ise kodun çalışırken ilgili control reg'leri ile seçebilirsin. Microprosessor modun program hafizasi ram'de olabilir dıştan hafiza da olabilir. Ör: dahili 20K lik ram'e daha önceden program hafizadan kopyaladigin bir program parçası da olabilir. Ram üzerindeki kodu işletirken de kaynak kod'u istedigin gibi degiştire bilirsin. Hatta bir ara kendisini geliştiren, kaynak kodunu degiştirebilen bir programcık yazmaya heves etmiş ama vakit darliğindan firsat bulamamıştım.

Programmer programlandi diyorsa programlanmistir. Güvenlik için kod 16CRC ile check edilir hata olsa uyari alirdin. Eger yazdigin kod çalişmadiysa kesin bazi pinleri yanlis bagladin yada kodun da bir hata var.

IAR'da komut seti diye bişey yok, o ansi c derleyici, komut setlerin için herhangi bir C kitabina bakacaksin. Bir tek "intrinsics" diye adlandirilan IAR'a has C eklentileri vardir ki bunları da sadece ilgili header dosyasını include ederek kullanabilirsin. "__no_operation();" gibi yerine asm("nop") da yazabilirsin. Opsiyonel seçeneklerdir ve bunlara ait bilgiler IAR help'lerinde vardir. Eğerki asm yazicaksan o zaman da renesas'in helplerine bakicaksin ama böyle bir mcu'ya asm yazmak çılgınlık olur. CCS'i ise ben bir derleyici olarak kabul etmiyorum. CCS'de nasıl helpildiğini bilmiyorum. Pc'me bilgisayar oyunlari, CCS vb. oyunlar kurmama konusunda ciddi prensiplerim var. Umarım yardımcı olabilmişimdir. İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

aYe

Az önce unutmuşum, eklemek istedim. P8.5 NMI girişidir, hatirladiğim kadariyla renesas'lardaki tek maskelenemez interrupttir. Başka bir amaç için tahsis edilemez. Output olarak kullanılamaz. Bu pinin 10k ile pull-up olmasına dikkat et. Ayrica Byte pin'i ni de 10k ile pull-down yap. Sorun bunlardan da kaynaklanmış olabilir. Tekrar iyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

YARGICH

Hocam Teşekkürler. Pin konfigurasyonu doğru. Sorun büyük ihtimalle Konfigurasyon ayarlarında. Onlara bakıp tekrar deneyeyim. Gerçi bir sürü SFR registerleri var. İnşallah beni fazla uğraştırmaz :)

CCS hakikatten biraz sinir bozucu. Ben bayağı kullandım ve önce sinirlendiğim daha sonrada böyle de hata olurmu diye güldüğim bir sürü eksiklikleri var.

IAR daki ANSI C olayını anladım. Aslında böyle olması daha iyiymiş. Bazı derleyicilere göre daha evrensel olmuş.

Hocam hayırdır Renesas'ı neden bıraktınız. Pahalı olduğu için mi yoksa sizin gözünüzde başka eksiklikleri mi var.

Kolay Gelsin...
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

aYe

Selam YARGICH

Ben teşekkür ederim. Yazdigim bir kodda aşağıdaki init blokunu kullanmışım, i/o vs. de var içinde temizlemedim. Ama burdaki ayarlar mcu'nun çalismasi için fazlasiyla yeterli. Umarım faydası olur.
/*------------------------------*/
void    Mcu_Start_Initialize (void){
        PD1=B11111000;
        PD0=B11111111;
        PD4=B11111111;
        PD5=B11111111;
        PUR0=B11110111;
        PUR1=0XFF;
        PUR2=0XFF;
        PRCR.1=1;
        PM0.6=1;
        PM0.0=0;
        PM0.1=0;
        PM1=0X08;
        PRCR.1=0;
        PRCR.1 = 1;
        CM0 = 0x08;
        CM1 = 0x20;
        PRCR.1 = 0;
        PCR.0=0;
}
/*------------------------------*/


Renesas'i bırakmış değilim zaten daha önce de sahiplenmemiştim, lazim oldu kullandim, yine lazim olsun yine kullanirim. Elindeki projeye uygun mcu seçmekte fayda olduğu kanısındayım. Fiyat, I/O sayisi, hafiza kapasiteleri, mcu'nun donanım yetenekleri, hızı vs. bir çok etken projeden projeye önem seviyelerini değiştiriyor. Ör: en son uğraştığım işte devreyi kismen gizlemem gerekiyordu, analog ve digital çözümlerin kısmen içine gömülebildiği cypress PSoC'lari tercih ettim. 2-3 farkli işlemciden sonra zaten alışıyosun. Mcu'lar artik boş kaset gibi oldu marka sadece marka, kaset özünde hep kaset... İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

YARGICH

Aman hocam Renesas'ı bırakmayın ben yoksa kimle Renesas'ı tartışacam başka :D  Zaten bu PSoC'larada ilgim çok falza. önce güvenli bir chip seçeneğim olsun, PSoC'lar da da başınızı ağrıtacağım :)

Hocam ben şimdi deneyeyim şu kurulum değerlerini inşallah olur.

Projeye göre MCU seçme fikrine katılıyorum. Zaten elimde seçebilecek bir MCU olsun istiyorum. sadece programlamayı biliyor olmak değil üzerinde tecrübede kazanmak istiyorum ki onunla daha güzel işler yapabileyim.

Yardımlarınız için Teşekkürler....
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

YARGICH

Hocam verdiğin koddaki bit atamalarını kabul etmiyor. Noktalı virgül bekleniyordu diye bir hata veriyor  (  Expected a ";"  )
PRCR.1=1;


Üstteki kodda da noktalı virgül var. Sadece bütün bit değişimi yapılan yerlerde aynı hatadan var. Acaba derleyicimin ayarlarında bir farklılık mı var diye düşünmeye başladım.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

aYe

Selam,
Sectigin mcu'nun ilgili include dosyasindan bunlara ulasabilirsin. Kodunu;
PRCR_bit.PRC1=1;

örneğindeki gibi düzeltmelisin. Ben kendi include dosyalarimi yazip kullandigimi unutmusum. İyi çalışmalar....
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)