Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: Erol YILMAZ - 29 Ocak 2006, 03:41:56

Başlık: CCS ve TINY BOOTLOADER
Gönderen: Erol YILMAZ - 29 Ocak 2006, 03:41:56
Burada TINY Bootloader in kullanimi hakkinda fikir alis-verisinde bulunacagiz.
Bir cok bootloader ozellikleri itibabari ile birbirine benziyor.
TINY B.L. kend'ne ozgu ozellikleri ile bunlardan bir derece ayriliyor.

1. Otomatik Reset [Yukleme icin boot yuklu PIC e dokunmaniz gerekmiyor]
2. Yuksek Hiz  [deneme kodlarini yaklasik 300 mS de yukledi]
3. Yaziliminin pratik olmasi

Bircogu bootloader da RS232 portundan RX ve TX bus i kullaniliyor.
TINY B.L. da Otomatik Reset icin ayrica  RTS pini de kullanıldığından
pratikligi kesinlikle artiran bir ozellik.
TINY BOOTLOADER (http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm)  Sitenin adresinde bizim baktigimiz siralarda 1.91 versiyonu vardi.

Devre semasi digerlerinde oldugu gibi
(http://www.etc.ugal.ro/cchiculita/software/max232.png)

Ayrica otomatik reset icin su devrede eklenmelidir.
(http://www.etc.ugal.ro/cchiculita/software/resetpic.gif)

Devreyi yaptiniz ama calismiyor !!!
Incelersek MCLR pinine uygun gerilim gelmedigini farkediyoruz.

(http://www.etc.ugal.ro/cchiculita/software/tbld02.png)

Onun için buradaki Reset PIC Using RTS Line i  seciyor ve kullanmaya başlıyoruz. Ben bunu 18F452 ile denedim.

CCS te reset adresi ile ilgili h.h. bir değişiklik yapmıyorsunuz sadece ve sadece bootloader için işlemcinin flash alanının son 100 word unu bootloader a ayırıyorsunuz o kadar.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: oyhan - 29 Ocak 2006, 23:00:16
Merhaba
Ben kullandım tiny bootloader'ı. Çok güzel bir program. Dediğiniz gibi çokda HIZLI ÇALIŞIYOR. Kullanımıda kolay. Ayrıca diğer bootloader lara göre picde daha az yer kaplıyor. Aslında pek  tartışacak da bir yanı yok hani. İyi çalışmalar.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: mustafacan - 30 Ocak 2006, 04:21:48
merak ettim en kısa zamanda yapacağım
Başlık: ??
Gönderen: taytis - 30 Ocak 2006, 17:36:45
hocam nedir bu biraz yardımcı olurmsunuz !
Başlık: CCS ve TINY BOOTLOADER
Gönderen: oyhan - 31 Ocak 2006, 21:57:48
Merhaba
Pic'in program hafızasının ilk adreslerine küçük bir programcık normal bir pic programlayıcı ile yükleniyor. Hafızada birazcık yer kaplıyor. Bu nedenle duruma göre genellikle program hafızası yüksek olan işlemciler (8k ve üstü gibi ) için kullanımı düşünülmelidir. Daha sonra pc de çalışan bir program vasıtası ile pice 115200Bps gibi hızlarda rs232 arayüzlü bir devre ile ( yukarıda en başta arkadaşımız anlatmış linkleri vermiş.) çok hızlı bir şekilde yazılım yüklenebiliyor. Genellikle bootloaderlar ile yükleme yapılırken işlemcinin resetlenmesi gerekiyorki program hafızasındaki bootloader programı yeniden başlatılsın ve pc ile senkronize olan pice program yüklenebilsin. Tiny bootloader ile resetlemeyi pc rs232 arayüzündeki rts sinyalini kullanarak yapmışlar. İsteğe bağlı kullanabilirsiniz. Devre üzerinde programlama yapmak ve üretimide bootloaderın avantajlarını göz önüne alarak yapmakta fayda var derim. Saygılarımla ...
Başlık: CCS ve TINY BOOTLOADER
Gönderen: taytis - 01 Şubat 2006, 08:12:44
bilgi için sağolun
Başlık: Re: CCS ve TINY BOOTLOADER
Gönderen: mp3dragon - 01 Şubat 2006, 09:19:52
Alıntı yapılan: "Erol"
CCS te reset adresi ile ilgili h.h. bir değişiklik yapmıyorsunuz sadece ve sadece bootloader için işlemcinin flash alanının son 100 word unu bootloader a ayırıyorsunuz o kadar.

Erol, ben de uygulamalarımda bootloader kullanıyorum. Bootloader Flashın ilk veya son birkaç yüz byte ını kullandığı malum. Ancak son 100 byte nı kullansa bile pic resetlediğinde ilk birkaç byte da sıçrama komutu bulunması ve bunun kendi programımız tarafından silinmemesine dikkat etmemiz gerekmez mi?Yoksa bootloader bir daha çalışmaz.CCs kullanmadığım için bilmiyorum belki de CCs bunu kendi hallediyordur. Ancak o zaman bile derleyiciye bunu bildirmemiz gerekiyor gibi geliyor bana. Yoksa nasıl bootloader programına dallanacak? Ya da başka bir derleyici kullanıyorsak?
Başlık: CCS ve TINY BOOTLOADER
Gönderen: Erol YILMAZ - 01 Şubat 2006, 12:21:44
Iste TINY bu noktada birşeyler yapıyor.
TINY senin bu ilk baştaki GOTO ifadene bakıp programı yuklerken modifiyeli olarak yukluyor.

Niye Goto ?
Çünkü 4. word de kesme programı başlıyor. Ve buradan zıplayarak gecmek zorundasın.
Boot donusu de yine o adresten devam ediyor...
Tabi bu nokta biraz tahmini. Çok açık bir şekilde bir yerde yazdığını görmedim. Yorumlarım yanlış ta olabilir...
CCS de reset vektörünü değiştirdiğimizde TINY ilk 4 word te GOTO yok diye uyarı veriyor...
Başlık: nedir bu bootloader?
Gönderen: seferuzan - 02 Şubat 2006, 23:55:01
arkadaslar bu bootloaderlar nedir ne işe yarar.ilk bir kaçyüz baytı kaplıyormus,en başta normal bir programmer ile yukleniyormus falan.ama kimse tam olarak bootloderin ne oldugunu anlatmamıs.nedir bu bootloader.nerede neden kullanılır.intel 8088 de falan ilk baytlar kesme vektör aderslerini belirtmek için kullanılıyor.bu da böyle bir sey mi.anlatır yardımcı olursanız sevinirim.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: CaFFeiNe - 03 Şubat 2006, 22:18:27
mesela en basitinden uydu receiverlara yazılım atmak için sadece RS232 üzerinden pc ye bağlayıp programı atıveriyorsun değilmi? receiverı söküp mikroişlemciyi çıkarıp (yada flashı) programlamıyorsun
işte bootloader bu işi yapıyor programlayıcı cihaz olmadan mikroişlemciyi programlamaya yarıyor tabiiki sadece birkez bootloader programını mikroişlemciye yüklemek için programlayıcı (propic, epic, K128 vs.vs) kullanman gerekiyor
Başlık: CCS ve TINY BOOTLOADER
Gönderen: mustafacan - 06 Mart 2006, 10:52:03
boot hexini normal bir pic programmer ile atmamız mümkün değilmi? illaki bir boot loadermi lazım arkadaşlar?
Başlık: CCS ve TINY BOOTLOADER
Gönderen: mp3dragon - 06 Mart 2006, 11:44:37
@mustafacan,

Tabii öncelikle boot hex'sini normal proglamlayıcı ile atman gerekir. Ondan sonra artık programlamayı çipi söküp takmadan devre üzerinde yapabilirsin.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: mustafacan - 28 Mart 2006, 20:51:19
Arkadaşlar, Tiny Boot loaderin pcb sini isteyen alabilir.
Ares 6.7 sp3 ile çizdim. Malzeme listeside ekindedir.
Tiny Boot Loader Pcb si (http://rapidshare.de/files/16707966/tiny_bootloader.rar.html)
Başlık: CCS ve TINY BOOTLOADER
Gönderen: Erol YILMAZ - 14 Mayıs 2006, 10:20:49
PL2303 lu bu USB-RS232 cevirici TINY bootloader ile calisiyor, haberiniz olsun.

(http://img169.imageshack.us/img169/875/img12869rg.jpg)

Beyazimsi RS232 kablosu WIN 3.1 zamanindan kalma bir fare ye ait oldugundan idare edin, cok temiz değil... :D
Başlık: CCS ve TINY BOOTLOADER
Gönderen: aster - 11 Ekim 2006, 11:37:14
@mustafacan, çizdiğin devreyi yeniden yükliyebilirmisin?

mümkünse buraya yükle
http://picproje.org/upload/
Başlık: CCS ve TINY BOOTLOADER
Gönderen: silmon - 26 Mart 2007, 21:27:49
selamlar,

pic16f877a için 4mhz bootloader arıyorum ama bulamadım bir türlü. bu içinden çıkan kodu nasıl değiştirmeliyim de 4mhzde çalışır hale gelsin. ya da bunu yapmış olupta paylaşmak isteyen var mı?
Başlık: CCS ve TINY BOOTLOADER
Gönderen: cmmkmh - 16 Ocak 2009, 17:03:35
MErhaba Arkadaşlar,
Ben dsPIC 30f4013 kullanıyorum. TINY 'nin sitesinde listeye baktım. orada 4013'ü göremedim. acaba desteklemiyor mu?
bir sorum daha olacak. Şimdi öncelikle dsPIC'e herhangi bir development board kullanarak bootloader'ı yüklüyoruz. daha sonra da TINY ile istediğimiz programı seçip seri porttan yolluyorum.

Peki Yaptığım programda bellek kıssımı için yer ayırması nasıl yapılmakta. özel bir komutu mu var?
saygılar..
Başlık: CCS ve TINY BOOTLOADER
Gönderen: ahmet2004 - 16 Ocak 2009, 19:12:33
Bellek ayırma işlemini bootloader kendisi yapıyor.

Soldaki şekil normal program işleyişi...

Sağdaki resim bootloader program işleyişi...

(http://www.etc.ugal.ro/cchiculita/software/bootloader.png)

ds30f4013  hex'i var içinde.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: birkan - 14 Mayıs 2009, 21:22:02
Tiny bootloader ile program yüklemeyi isis te simüle etmenin bir yolu varmı acaba. Ben denedim ama yapamadım. Program yükleniyor gibi oluyor ama sonunda ERROR yazıyor.
Başlık: CCS ve TINY BOOTLOADER
Gönderen: airforce - 15 Mayıs 2009, 02:19:32
Bootloader hex dosyası nereden bulunabilir acaba?
Başlık: CCS ve TINY BOOTLOADER
Gönderen: buiba - 15 Mayıs 2009, 12:35:34
bırcok ıslemcıde ıcsp ozellıgı var .bootloader kullanmak anladıgım kadarıyla  uzerınde rs232 modulu bulunduran devrelerde pratık olur,bırde uzaktan yazılım guncellemede.bunların dısında avantajları var mıdır?
Başlık: Ynt:TINY BOOTLOADER
Gönderen: aakiph - 12 Temmuz 2010, 13:44:47
merhabalar,

pic18f458 için tiny bootloader üzerinde calişma yapıyorum .hex dosyasını buldum fakat tiny'in kendi interface'i ile pc den pice baglantı kuramıyorum acaba sorun nedir?? yardımcı olursanız memnun olurum .....
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: alidurmus - 20 Ekim 2010, 13:09:15
arkadaşlar 18f4620 de bootloader yüklemek istiyorum.

    LIST      P=18F4620    ; change also: Configure->SelectDevice from Mplab
xtal EQU 20000000       
baud EQU 19200           


 


buna göre configurasyon ayarları nasıl yaparım yardımcı olurmusunuz?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 17 Kasım 2010, 10:36:44
CCS ve Proteus ile denemeler yapıyorum, proteusta içinde bootloader olan pic'e sanal seri port vasıtasıyla kendi hex'imi atabiliyorum  ama sorun şu ki bu işlemi otomatik reset devresini bağladığımda yapamıyorum çünkü RTS(sanal port olduğundan karşılığı CTS oluyor) pini pici sürekli resette tuttuğundan gelen komuta cevap veremiyor dolayısıyla pic bulunamıyor... reset devresini kaldırdığımda içinde bootloader olan devreye direkt bağlanıp hex atabiliyorum, reset devresi benim için pek de önemli değil(ki bu sorunun aslında sanal seri portla bir alakası var gibi), zira reset olayını yazılımla halletmem gerekiyor zaten, şimdi asıl soruna gelecek olursam bootloder'ın flash'a yazdığı hex dosyam bootloader'ın üzerine yazılıyor veya goto ifadesini v.s değiştiriyor olacak ki bir daha bootloader başlamıyor, ccs de fuse ifadelerinden sonra #define  flash_max getenv("PROGRAM_MEMORY")
#org     flash_max-200,flash_max-1

void bootloader()
{
}

şeklinde son 199luk flash kısmını bootloader'a ayırdım oysa. reset devresini kaldırdın, peki nasıl reset atıyorsun derseniz "Check PIC" sırasında 5-6 snlik süre içinde manuel reset atıyorum ama kendi programım yeniden başlıyor, bootloader devreye girmiyor... bootloader için PIC18F.asm dosyasından birkaç satırı değiştirip 18F452(p=) ve 19200(baud eq) baud olarak yeniden derledim. Şimdi sorun nerede kestiremedim, CCS de mi birşeyler atlıyorum, asm dosyasında değiştirmem gereken başka birşeyler de mi var yoksa sorun reset devresinin şart olması(?)yla mı alakalı...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 18 Kasım 2010, 11:28:59
Options sekmesinden Remote Reset signals kutucuğuna RTS high for 20ms yazınca sürekli reset sorununu düzelttim ve düşündüğüm gibi 2. kez yükleyememe sorunuyla alakası yokmuş reset olayının...

Bu konuda dün denemeler yaparken birşey keşfettim, windows tarafının 1.95 sürümü ile yükleme yapınca herşey olması gibi çalışıyor ta ki 1.97 ve sonraki sürümlerle yükleme yapıncaya kadar, bu sürümlerde ne gibi bir sorun oluyorsa "WARNING: GOTO not found in first 4 words" ifadesinden de anlaşılacağı gibi ilk 4 worddeki goto ifademiz kayboluyor, dolayısıyla program flashın başından başlayıp çalışınca da bizim flashın sonunda yer alan bootloaderımız yalan oluyor, şimdi neden 1.95 sürümünden sonra bu böyle, sorunu düzeltmek için ne yapmam gerekiyor anlayamadım ilk 4 wordü de mi #ORG ile ayırmamız gerekiyor diyeceğim 1.95 de sorun olmadığından öyle de değil gibi, ne yapmalı acaba...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: neural - 18 Kasım 2010, 21:02:46
Bende uzun zamandır güzel bir bootloader arıyordum. Microchip 'in AN851 ve Petr Kolomaznik arkadışın bootloader uygulamalarını denedim ancak bir çok sorun ile karşılaştım. Bunların başında benim programlarımı yazarken kullandığım yazılımın başlangıç adresleriydi.
Assembly 'den gelen bir alışkanlık olarak ben ;

org   0x00
goto init

org   0x04
goto $

gibi bir kod her program için kullanıyorum, kesme kullanmasam bile oraya yazıyorum.
Tiny bootloader ise bu yazımı uygun olarak çalıştı ve şu an bunu kullanıyorum. Anladığım kadarı ile ccs ile derlenen kodlarda #org ile ayırıp programınızın main bloğuna dallandırmak gerekiyor, sanırım.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: bybik - 19 Haziran 2011, 18:43:04
18f4550 nin içine yüklememiz gerek hexi bulamadım acaba elinde olan atabilrmi?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 22 Haziran 2011, 13:31:08
18F4585 için hangi hexi atıcam bulamadım. Siteden dosyaları indirdim ama orada 18F4585 için hex bulamadım. Ne yapmam gerekiyor?
16F887 ile denediğimde PIC not found hatası alıyorum, nerde yanlış yapıyorum sizce?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 22 Haziran 2011, 21:19:12
Arkadaşlar kurduğum devre bu, 16F887 için "tinybld16F887.hex" dosyasını attım PICe öncelikle.
Devreyle seri port bağlantısını yapıyorum, programı açıp "CheckPIC"e tıklıyorum ama
Connected to \\.\COM1 at 115200
  Searching for PIC ...Not found,
  ERROR!
hatasını alıyorum. İletişim hızını değiştiripte denedim yine aynı şey oldu.
16F887 için diğer hex dosyalarını da attım ama yine aynı şey oldu. Sizce nerede yanlış yapıyorum?
[IMG]http://img385.yukle.tc/images/377rs232.png[/img] (http://www.yukle.tc)
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 23 Haziran 2011, 21:57:52
Devrede biraz değişiklik yaptım.
İlk devre bu. Ama çalışmadı.
http://img849.imageshack.us/img849/5728/61171796.png

Daha sonra aşağıdaki gibi değiştirdim ama yine çalışmadı devre.
http://img43.imageshack.us/img43/7082/97677464.png

Aldığım hata şu: search PIC diyorum, PIC not found hatası alıyorum.
Devrede mi yanlışlık var yoksa bootloader hex'inde mi anlamadım.
Aklıma takılan soru var,
-8MHZ kristal kullanıyorum devrede, 8MHZ için 9600 baud rate destekliyor en son(datasheete göre),
acaba bootloader hex dosyası farklı baud rate hızı ve osilatör frekansı için de ondan mı olmuyor?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 23 Haziran 2011, 23:04:48
Alıntı yapılan: healme - 22 Haziran 2011, 21:19:12
Arkadaşlar kurduğum devre bu, 16F887 için "tinybld16F887.hex" dosyasını attım PICe öncelikle.
Devreyle seri port bağlantısını yapıyorum, programı açıp "CheckPIC"e tıklıyorum ama
Connected to \\.\COM1 at 115200
  Searching for PIC ...Not found,
  ERROR!
hatasını alıyorum. İletişim hızını değiştiripte denedim yine aynı şey oldu.
16F887 için diğer hex dosyalarını da attım ama yine aynı şey oldu. Sizce nerede yanlış yapıyorum?
[IMG]http://img385.yukle.tc/images/377rs232.png[/img] (http://www.yukle.tc)

daha önce attığım mesajlarda bu cümleye denk gelmiş olmalısınız
Alıntı yapılan: RcALTIN
Options sekmesinden Remote Reset signals kutucuğuna RTS high for 20ms yazınca sürekli reset sorununu düzelttim

kısaca pic sürekli reset atarsa(RTS pininin sürekli high kalmasından dolayı) bootloader hiç başlayamaz, RTS pininin sürekli high kalmamasına dikkat edin, sorun buysa çözümünü de yazmışım zaten.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 23 Haziran 2011, 23:13:55
Tamam hocam yarın sabah deneyip buraya sonucu yazarım, inşallah dediğiniz gibidir de kurtulurum artık şu sorunlardan :)
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 24 Haziran 2011, 10:05:37
Sonunda çalıştırabildim devreyi, programı gönderdim başarıyla :)
Bir  sorum daha olacak. Bu RTS ile resetleme işlemini donanımsal değil de yazılımsal yapabilir miyiz(sadece RX TX pinlerini kullanmak istiyorum)?
Bir de MAX232 entegresi 3.3V ile çalışır mı?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 24 Haziran 2011, 14:39:29
Alıntı yapılan: healme - 24 Haziran 2011, 10:05:37
Sonunda çalıştırabildim devreyi, programı gönderdim başarıyla :)
Bir  sorum daha olacak. Bu RTS ile resetleme işlemini donanımsal değil de yazılımsal yapabilir miyiz(sadece RX TX pinlerini kullanmak istiyorum)?
Bir de MAX232 entegresi 3.3V ile çalışır mı?

Yazılımınızda USART kullanıp, RS232 hattından sürekli komut beklemesini sağlarsınız. Loader uyugulamasındaki terminal sekmesinden yararlanarak, önce yazılımın pic'e reset attırması için gereken komutları gönderip ardından yükleme yaptırırsınız. CCS için reset_cpu(); metodu pici resetlemek için yeterli, bootloader ı kaçırmamak için belki resetleme öncesi delay koymak gerekebilir.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 28 Haziran 2011, 10:05:06
16F887 için 9600baud ratelik bootloader hex dosyası lazım, 115200 ile programlama yapamıyorum :(
Ben assembly bilmiyorum değiştiremiyorum o yüzden bilen biri 9600 baud rate için kodu değiştirip ekleyebilir mi?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 28 Haziran 2011, 15:07:42
Az önce bir fransız sitesinden çok güzel bir kod buldum tinybootloaderın üstüne yazmış sanırım. Kod aşağıda, anlamadığım yer şu while'ın içine kodu biz mi yazıcaz yoksa bu halde hex'e çevirip PIC'e atsak çalışır mı?
While'in içine "// votre code ici" yazmış. Kodunuz buraya demek sanırım fransızcada.

// Programme de base pour utilisation avec TinyBootLoader

// Sélection du PIC
#include <18f2520.h>
//#include <16f876.h>
#device adc=8  *=16
#device ICD=TRUE

// Fusibles pour PIC18F
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT,CCP2C1,NOSTVREN,NODEBUG

// Fusibles pour PIC16F
//#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT

// Fréquence d'horloge à ajuster
#use delay(clock=20000000)

// Vitesse de l'interface RS232 à ajuster
#use rs232(baud=115200, parity=N, xmit=PIN_C6, rcv=PIN_C7, STOP=1, BITS=8)


// Interruption réception d'un caractère dans le buffer voie série
#int_RDA       // Reset avant reprogrammation par TinyBootLoader
void RDA_isr()
{
   if (getchar() == 0xFF && getchar()==0xFA && getchar()==0xFA) reset_cpu();
}

void main()
{

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while (TRUE) {
      // votre code ici
   }

}
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 28 Haziran 2011, 15:43:39
Alıntı yapılan: healme - 28 Haziran 2011, 15:07:42
Az önce bir fransız sitesinden çok güzel bir kod buldum tinybootloaderın üstüne yazmış sanırım. Kod aşağıda, anlamadığım yer şu while'ın içine kodu biz mi yazıcaz yoksa bu halde hex'e çevirip PIC'e atsak çalışır mı?
While'in içine "// votre code ici" yazmış. Kodunuz buraya demek sanırım fransızcada.

// Programme de base pour utilisation avec TinyBootLoader

// Sélection du PIC
#include <18f2520.h>
//#include <16f876.h>
#device adc=8  *=16
#device ICD=TRUE

// Fusibles pour PIC18F
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT,CCP2C1,NOSTVREN,NODEBUG

// Fusibles pour PIC16F
//#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT

// Fréquence d'horloge à ajuster
#use delay(clock=20000000)

// Vitesse de l'interface RS232 à ajuster
#use rs232(baud=115200, parity=N, xmit=PIN_C6, rcv=PIN_C7, STOP=1, BITS=8)


// Interruption réception d'un caractère dans le buffer voie série
#int_RDA       // Reset avant reprogrammation par TinyBootLoader
void RDA_isr()
{
   if (getchar() == 0xFF && getchar()==0xFA && getchar()==0xFA) reset_cpu();
}

void main()
{

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while (TRUE) {
      // votre code ici
   }

}


bu kodda bootloader v.s içeren birşey yok, bootloaderdan bağımsız yazılmış, hatta sadece rs232 kesmesi eklenmiş boş bir program(üzerine yazılmıştan kastınız tinyle birlikte kullanmak için yazılmış ise o doğru). gördüğüm tek şey var, RS232den ard arda FF, FA, FA geldiğinde pic resetleniyor(açlış sırasında bootloader çalışacak tabi), başka da bir işlevi yok. bu da bir önceki mesajımda bahsettiğim resetlettirme olayının koda dökülmüş hali zaten. while kısmına kendi programınızı yazacaksınız, yukarıdaki header dosyalarını kullandığınız pic'e göre düzenleyeceksiniz.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 28 Haziran 2011, 16:15:17
Hocam ben bu tinybootloader'ı kablosuz olarak yapmak istiyorum.
Kendi hex'i 115200 baud rate için. Benim modüller o kadar desteklemiyor, 9600'a düşürmem lazım.
Ve reset olayını da yazılımla halletem lazım. Bootloader hex'inde bu programdaki gibi reset olması lazım.
Bu yüzden hep sorup duruyorum.
Reset olayını bu şekilde yapabiliriz tamam onu hallettik. Ama baud rate'i kendim değiştirip denemem lazım.
Assembly bilmediğim için tinybootloader'ın kendi programında oynama yapamıyorum. Sadece baud rate kısmını değiştirdim 9600 yaptım ama hala 115200'de çalışıyor.
CCS ile yazılmış bir kod bulabilirsem belki değiştirebilirim istediğim gibi.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 28 Haziran 2011, 18:09:19
tiny bootloader asm üzerinde değişiklik yapılmamışsa baudrate'i değiştirmek için en üst kısmında bulunan baud EQU değerini değiştirip derlemeniz yeterli.

benim önceden kullandığım versiyon bu, rs485(rs232nin endüstriyel versiyonu) ile uyumlu sürüm. derlemek için mplab veya mpasm kullanabilirsin. fakat rf modül işlerinden pek anlamam, sağlıklı çalışabileceğini sanmıyorum kablosuz şekilde, önce kablolu deneme yapın çalıştırdıktan sonra uğraşın rf ile...

radix DEC
   LIST      P=PIC18F452 ; change also: Configure->SelectDevice from Mplab
   xtal EQU 20000000 ; you may want to change: _XT_OSC_1H  _HS_OSC_1H  _HSPLL_OSC_1H
   baud EQU 9600 ; standard TinyBld baud rates: 115200 or 19200
   ; The above 3 lines can be changed and buid a bootloader for the desired frequency (and PIC type)
   
   ;********************************************************************
   ;   Tiny Bootloader
   ;     
   ;   18F series
   ;
   ;   RS485 Compatible Version
   ;
   ;   RE-DE Transmission = PIN RC5
   ;
   ;   Size = 132words
   ;
   ;   claudiu.chiculita@ugal.ro
   ;   http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
   ;********************************************************************
   

   #include "icdpictypes.inc"   ;takes care of: #include "p18fxxx.inc",  max_flash, IdTypePIC
   #include "spbrgselect.inc"   ; RoundResult and baud_rate

      #define first_address max_flash-264      ;132 words


      __CONFIG   _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
      __CONFIG   _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_ON_2L
      __CONFIG   _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
      __CONFIG   _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
       
;----------------------------- PROGRAM ---------------------------------
      cblock 0
      crc
      i
      cnt1
      cnt2
      cnt3
      counter_hi
      counter_lo
      flag
      endc
      cblock 10
      buffer:64
      dummy4crc
      sendb ;byte to send
      d1 ;for delay routine
      endc

   
;0000000000000000000000000 RESET 00000000000000000000000000

      ORG     0x0000
      GOTO    IntrareBootloader

;view with TabSize=4
;&&&&&&&&&&&&&&&&&&&&&&&   START     &&&&&&&&&&&&&&&&&&&&&&
;----------------------  Bootloader  ----------------------
;PC_flash:      C1h       U            H         L         x  ...  <64>   ...  crc   
;PC_eeprom:     C1h     40h         EEADR    EEDATA    0      crc               
;PC_cfg         C1h     U OR 80h      H         L         1      byte   crc
;PIC_response:      type `K`
   
      ORG first_address ;space to deposit first 4 instr. of user prog.
      nop
      nop
      nop
      nop
      org first_address+8
IntrareBootloader   
      movlw b'10011111'
      movwf TRISC ;init serial port
      bcf PORTC,5 ;RS485 receive
      movlw b'00100100'
      movwf TXSTA
      movlw spbrg_value
      movwf SPBRG
      movlw b'10010000'
      movwf RCSTA
;wait for computer
      rcall Receive         
      sublw 0xC1 ;Expect C1h = 'K'
      bnz way_to_exit
      movlw IdTypePIC
      rcall SendW               ;send PIC type
MainLoop
      movlw 'K'
      rcall SendW               ;"-Everything OK, ready and waiting."
mainl
      clrf crc
      rcall Receive ;Upper
      movwf TBLPTRU
    movwf flag ;(for EEPROM and CFG cases)
      rcall Receive ;Hi
      movwf TBLPTRH
    movwf EEADR ;(for EEPROM case)
      rcall Receive ;Lo
      movwf TBLPTRL
    movwf EEDATA ;(for EEPROM case)

      rcall Receive ;count
      movwf i
      incf i
      lfsr FSR0, (buffer-1)
rcvoct ;read 64+1 bytes
    movwf TABLAT ;prepare for cfg; => store byte before crc
      rcall Receive
      movwf PREINC0
      decfsz i
      bra rcvoct
   
      tstfsz crc ;check crc
      bra ziieroare
    btfss flag,6 ;is EEPROM data?
    bra noeeprom
    movlw b'00000100' ;Setup eeprom
    rcall Write
    bra waitwre
noeeprom
    btfss flag,7 ;is CFG data?
    bra noconfig
    tblwt* ;write TABLAT(byte before crc) to TBLPTR***
    movlw b'11000100' ;Setup cfg
    rcall Write
    bra waitwre
noconfig
                     ;write
eraseloop
      movlw   b'10010100' ;Setup erase
      rcall Write
      TBLRD*- ;point to adr-1
   
writebigloop   
      movlw 8 ;8groups
      movwf counter_hi
      lfsr FSR0,buffer
writesloop
      movlw 8 ;8bytes = 4instr
      movwf counter_lo
writebyte
      movf POSTINC0,w ;put 1 byte
      movwf TABLAT
      tblwt+*
      decfsz counter_lo
      bra writebyte
   
      movlw   b'10000100' ;Setup writes
      rcall Write
      decfsz counter_hi
      bra writesloop
waitwre   
      ;btfsc EECON1,WR ;for eeprom writes (wait to finish write)
      ;bra waitwre ;no need: round trip time with PC bigger than 4ms
   
      bcf EECON1,WREN ;disable writes
      bra MainLoop
   
ziieroare ;CRC failed
      movlw 'N'
      rcall SendW
      bra mainl
     
;******** procedures ******************
SendW
    movwf sendb
     bsf PORTC,5 ;RS485 transmit
      btfss PIR1,TXIF
      goto $-2
      movff sendb,TXREG
      nop
      btfss TXSTA,TRMT
      goto $-2
      bcf PORTC,5 ;RS485 receive
      return

Write
      clrwdt
      movwf EECON1
      movlw 0x55
      movwf EECON2
      movlw 0xAA
      movwf EECON2
      bsf EECON1,WR ;WRITE
      nop
   ;nop
      return


Receive
    clrwdt
      movlw xtal/2000000+1 ;for 20MHz => 11 => 1second delay
      movwf cnt1
rpt2                   
      clrf cnt2
rpt3
      clrf cnt3
rptc
    btfss PIR1,RCIF ;test RX
    bra notrcv
    movf RCREG,w ;return read data in W
    addwf crc,f ;compute crc
    return
notrcv
      decfsz cnt3
      bra rptc
      decfsz cnt2
      bra rpt3
      decfsz cnt1
      bra rpt2
      ;timeout:
way_to_exit
      bcf   RCSTA,   SPEN ;deactivate UART
    movlw b'11111111'
    movwf TRISC
      bra first_address
;*************************************************************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.
END
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 28 Haziran 2011, 21:16:16
Kablolu olarak denedim zaten çalıştırıyorum bu şekilde.
Sorunum modüllerin baud rate'inden kaynaklı o yüzden.
Asm dosyasında "baud EQU 9600" olarak değiştirip derledim, tinybootloader programında ve serip portta 9600 baud rate seçtim ama PIC'i görmedi, 115200 yaptım o zaman gördü. Değiştirmeme rağmen 115200'de çalışıyor hala. Acaba başka yerlerde de değişiklik yapmak mı gerekiyor?
Bir de osilatör frekansını değiştirmek için en üstteki "xtal EQU 8000000" satırını değiştirmek yeterli mi?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: VFR - 30 Haziran 2011, 09:21:10
RcALTIN hocam, şimdi de şöyle bir sorun çıktı ortaya. Nasıl çözebilirim bunu? Bu sorunu da halletsem çalışacak ama takıldım kaldım burada.

Connected to \\.\COM12 at 115200
  HEX: 22 hours old, INHX8M,16Fcode+cfg, total=148 bytes.
  Searching for PIC ...
Wait 200 ms
Wait 200 ms
Rcv:type=36h=6
K found
  Found:16F 886/887
Also found:
EEprom: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
Config: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
Prepare16FPre - check HEX and GOTO
  Reallocate to [03F38h..03F3Fh] (byte addr)
Prepare16FAfter - 0>+Goto 1FA0
Addr(words)=000000h,  3+64+1 bytes:
00 00 40 1F 30 8A 00 A0 2F 00 00 22 30 84 00 83 13 00 08 03 19 17 28 02 30 F8 00 F7 01 F7 0B 0D 28 F8 0B 0C 28 97 30 F7 00 F7 0B 13 28 80 0B 0A 28 00 34 84 01 83 13 1F 30 83 05 83 16 03 17 09 08 C0 39 1E
    Sent:68
    wait for a byte max 350 ms
timeout
timeout 1, trying to catch up
    Sent:68
    wait for a byte max 350 ms
Received "N": crc fail
purge(  hex): 4E 4E 4E
purge(ascii): NNN
    Sent:68
    wait for a byte max 350 ms
Received "N": crc fail
  Could not write
  ERROR!
Could not write
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: jozzef - 29 Eylül 2011, 23:31:39
Microchip'in bootloaderından buna geçmeyi denedim.
16f877A kullanıyorum. Check PIC dediğimde buluyor. Hex dosyasınıda istediğim kadar başarılı şekilde yazıyor; ancak program execute edilmiyor. PIC hiçbir işlem yapmıyor! Programladığım dosyanın başına:
#define MAX_FLASH getenv("PROGRAM_MEMORY")
#define LOADER_SIZE   0xFF
#org MAX_FLASH-LOADER_SIZE , MAX_FLASH-1 void boot_loader(void) {}

ekliyorum.
Sorun nedir?
Teşekkürler
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 29 Eylül 2011, 23:49:02
Alıntı yapılan: jozzef - 29 Eylül 2011, 23:31:39
Microchip'in bootloaderından buna geçmeyi denedim.
16f877A kullanıyorum. Check PIC dediğimde buluyor. Hex dosyasınıda istediğim kadar başarılı şekilde yazıyor; ancak program execute edilmiyor. PIC hiçbir işlem yapmıyor! Programladığım dosyanın başına:
#define MAX_FLASH getenv("PROGRAM_MEMORY")
#define LOADER_SIZE   0xFF
#org MAX_FLASH-LOADER_SIZE , MAX_FLASH-1 void boot_loader(void) {}

ekliyorum.
Sorun nedir?
Teşekkürler

loader_size için 0xFF değil 0xC8 atayın veya değişkeni komple silin #org satırını max_flash-200,max_flash-1 şeklinde düzenleyin. bir de böyle deneyin...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: jozzef - 30 Eylül 2011, 00:02:08
#define max_flash getenv("PROGRAM_MEMORY")
#org  max_flash-200,max_flash-1 void boot_loader(void) {}

şeklinde denedim olmadı hocam. Diğer önerinizde de olumsuz sonuç aldım.

Connected to \\.\COM4 at 115200
  HEX: 0 min old, INHX8M,16Fcode+cfg, total=278 bytes.
  Searching for PIC ...
  Found:16F 876A/877A
  WRITE OK  at 23:56,   time:1.017 sec

Yukarıdaki gibi yüklüyor. WDT kapalı. Yalnız ilginç bir durum var ki ( aslında ilginç midir bilemiyorum) "write flash" dedikten sonra direk yazıyor. Reset atmama gerek kalmıyor ancak otomatik reset içinde bir devre kurmadım, sadece MEMCLR bacağı 10k ile +5V ye bağlı
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 30 Eylül 2011, 00:22:35
Alıntı yapılan: jozzef - 30 Eylül 2011, 00:02:08
#define max_flash getenv("PROGRAM_MEMORY")
#org  max_flash-200,max_flash-1 void boot_loader(void) {}

şeklinde denedim olmadı hocam. Diğer önerinizde de olumsuz sonuç aldım.

Connected to \\.\COM4 at 115200
  HEX: 0 min old, INHX8M,16Fcode+cfg, total=278 bytes.
  Searching for PIC ...
  Found:16F 876A/877A
  WRITE OK  at 23:56,   time:1.017 sec

Yukarıdaki gibi yüklüyor. WDT kapalı. Yalnız ilginç bir durum var ki ( aslında ilginç midir bilemiyorum) "write flash" dedikten sonra direk yazıyor. Reset atmama gerek kalmıyor ancak otomatik reset içinde bir devre kurmadım, sadece MEMCLR bacağı 10k ile +5V ye bağlı

mcu içinde sadece bootloader varken reset atmaya gerek yok, user programdan çıkıp bootloader'ın başlamasını sağlamak için gerekiyor o devre; normal o yani. sorun kullandığınız loader yazılımıyla alakalı olabilir, forumda bir başka konuda belirttiğimi hatırlıyorum yeni sürüm loader ile bende başarılı olamamıştım(hatta aynı sıkıntı vardı yanlış hatırlamıyorsam, sorun mcu tarafındaki sürümün eski olması olabilir). kendim de eski sürümlerden birini kullanıyordum, onda sorun çıkmıyordu, o konuyu bulup okumanızı tavsiye ederim...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: jozzef - 30 Eylül 2011, 00:31:08
Daha eski sürümlerden birini denedim de, sonuç değişmedi. Tiny Bootloader'ın sayfasında şöyle bir bilgi var:
If you write your software in assembler the program must have in the first 4 words of memory a GOTO to the start of the main program. This is how most of the ASM programs look anyway. So in assembler it should look something like this:
org 0
;clrf STATUS
clrf PCLATH
goto Main

Assemblerda yazmıyorum; yine de main'e gidemiyor. Durumum bununla alakalı olabilir mi?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: fryrmnd - 04 Kasım 2011, 11:34:40
(http://a1111.hizliresim.com/r/4/b8yh.jpg)
16f887 4mhz için yu7kardaki reset devresi ile denem yaptım. 

"Connected to \\.\COM4 at 19200
  Searching for PIC ...
  pic sending unknown data:  "K" <>  0h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
  ERROR!"

hatası alıyorum. böyle bir hata  neden olabilir.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: RcALTIN - 04 Kasım 2011, 11:55:36
Alıntı yapılan: fryrmnd - 04 Kasım 2011, 11:34:40
(http://a1111.hizliresim.com/r/4/b8yh.jpg)
16f887 4mhz için yu7kardaki reset devresi ile denem yaptım. 

"Connected to \\.\COM4 at 19200
  Searching for PIC ...
  pic sending unknown data:  "K" <>  0h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
  ERROR!"

hatası alıyorum. böyle bir hata  neden olabilir.

pic ve loaderiniz farklı baudrate değerine sahip olabilir mi? picden yanlış hello char geliyormuş(K veya 0h değilmiş gelen) sanırsam...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: fryrmnd - 04 Kasım 2011, 16:20:54
versiyon 198 deki  887.asm dosyası

radix DEC
LIST      P=16F887, F=INHX8M ; change also: Configure->SelectDevice from Mplab

                        ; [u]auto-start at 4MHz internal osc     [/u]
xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200
;xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
;baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200


anladığım baud 19200 ve kristal de 4MHz. Yanlış yapmıyorum değil mi.

IG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & [u]_INTRC_OSC_NOCLKOUT[/u]
__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V


; auto-start at 4MHz internal osc   ,      _INTRC_OSC_NOCLKOUT

altı çizili açıklama ve sigorta ayarlarındaki  altı çizili ifade... dahili osc mi kullanılıyor acaba. biliyormusunuz. eğer öyle ise kristal bağlamam bu hataya sebep olabilir mi.
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: Extreme - 19 Şubat 2013, 12:52:50
Üzerinde baya bir zaman geçmiş. bu işte ustalaşmış forum üyelerimiz olmuştur muhakak.. ben bir kaç soru sormak istiyorum..

1.usb bağlantısıyla yapılabilir mi??

2.rs232 to usb kabloları performans açısından iyimidir ? dezavantaj yaratırmı ? bu uygulamada veya başka uygulamalarda??

Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: mur@t - 19 Şubat 2013, 17:32:06
Alıntı yapılan: Extreme - 19 Şubat 2013, 12:52:50
Üzerinde baya bir zaman geçmiş. bu işte ustalaşmış forum üyelerimiz olmuştur muhakak.. ben bir kaç soru sormak istiyorum..

1.usb bağlantısıyla yapılabilir mi??

2.rs232 to usb kabloları performans açısından iyimidir ? dezavantaj yaratırmı ? bu uygulamada veya başka uygulamalarda??

TinyBootloader'ı usb/rs232 çevirici ile kullanabilirsiniz.
Kaliteli ve bilinen bir marka konvertör kullanmanızı tavsiye ederim.  rts/cts uçları çalışmayan konvertörler de mevcut piyasada...
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: Extreme - 23 Şubat 2013, 18:20:32
yapacağım çalışma için rs232 to usb kablo hoş olmaz diye düşündüm

tiny bootloader sitesini inceliyorumda sanırım tiny bootloaderda usb bağlantılı bir şema anlatılmamış.

usb ile tiny bootloader programı kullanılabilir mi ?
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: mur@t - 25 Şubat 2013, 17:58:51
Alıntı yapılan: Extreme - 23 Şubat 2013, 18:20:32
yapacağım çalışma için rs232 to usb kablo hoş olmaz diye düşündüm

tiny bootloader sitesini inceliyorumda sanırım tiny bootloaderda usb bağlantılı bir şema anlatılmamış.

usb ile tiny bootloader programı kullanılabilir mi ?

Bilgisayarınızda seri port yoksa, usb kullanacaksınız. tinybld yazılımı seri port üzerinden çalışıyor. Yani konvertör kullanmak zorundasınız.
arada çevirici görünmesin istiyorsanız, usb-ttl çeviriciler var, biraz değişiklik yaparak kullanabilirsiniz.
http://dx.com/p/cp2102-usb-to-ttl-converter-module-red-146141 (http://dx.com/p/cp2102-usb-to-ttl-converter-module-red-146141)
Başlık: Ynt: CCS ve TINY BOOTLOADER
Gönderen: Extreme - 25 Şubat 2013, 18:54:58
hocam bu iş eski teknoloji olur gibi geliyor .. tiny bootloaderı askıya alıyorum.

şu an iki tane bootloader yapabiliyorum basit bir devre üzerinde

ikisinden biri umarım bitirme projemde çalışır.