Pokusavam da napravim programator i dibager MCU familije MC9S08. On koristi BDM (pozadinski dibag mod) za komunikaciju sa prototipom. Postupak je sledeci:
Komunikacija mastera i prototipa se vrsi preko jedne veze, BDMIO, u poludupleksu (jedan pin na MCU). Veza je na strani prototipskog MCU-a open drein sa pulap otpornikom od oko 4K7.
1. Prototipski MCU se resetom uvede u BDM. To je jednostavno i necu opisivati.
2. Master (programator i dibager MCU-a) izaziva sink sekvencu drzanjem desetak ms BDMIO na nuli. Prototipski MCU mu potom salje log. 0 u trajanju 128 BDM ciklusa. Na osnovu toga master meri frekvenciju BDM kloka prototipskog MCU-a. Ova frekvencija se krece od 3.5MHz do 17MHz, zavisno od tipa prototipskog MCU-a.
3.Slanje i prijem jednog bita se vrsi za 16 BDM kloka. Referentni klok je deseti.
4.Slanje pocinje tako sto 4 BDM kloka master drzi 0 na BDMIO, a onda ako salje 1 on dize nivo na log 1 u trajanju do 16-tog BDM kloka. Ako salje 0, onda dize signal BDMIO na log. 1 na 14-tom kloku BDM ciklusa. Prototipski MCU detektuje nivo BDMIO na 10-tom kloku i tako zna sta prima.
5. Prijem bita se inicira od mastera drzanjem log. 0 2 do 4 BDM kloka, a potom master drzi BDMIO na visokoj ompedansi. Tada prototipski MCU salje signal log. 0 ili log. 1 po istom principu, samo sto ovoga puta master detektuje stanje BDMIO linije na 10-tom kloku BDM-a.
Sobzirom da maksimalna frekvencija BDM-a moze biti 17MHz, onda 16 BDM kloka potrebnih za slanje jednog bita traje manje od 1us. Ovo zahteva ili vrlo brz mikrokontroler, ili mnogo dosetljivosti da bi se realizovalo. Kako na forumu ima onih koji rade sa razlicitim mikrokontrolerima, mozda vide resenje sa nekim od njih. Takodje i bilo koja ideja bi bila korisna.
Da stvar bude komplikovanija prototipski MCU se moze napajati naponom od 1.8V do 5.5V (zavisno od tipa), pa su potrebni i translatori nivoa.
U prilogu saljem oblik signala koje sam opisao.
Komunikacija mastera i prototipa se vrsi preko jedne veze, BDMIO, u poludupleksu (jedan pin na MCU). Veza je na strani prototipskog MCU-a open drein sa pulap otpornikom od oko 4K7.
1. Prototipski MCU se resetom uvede u BDM. To je jednostavno i necu opisivati.
2. Master (programator i dibager MCU-a) izaziva sink sekvencu drzanjem desetak ms BDMIO na nuli. Prototipski MCU mu potom salje log. 0 u trajanju 128 BDM ciklusa. Na osnovu toga master meri frekvenciju BDM kloka prototipskog MCU-a. Ova frekvencija se krece od 3.5MHz do 17MHz, zavisno od tipa prototipskog MCU-a.
3.Slanje i prijem jednog bita se vrsi za 16 BDM kloka. Referentni klok je deseti.
4.Slanje pocinje tako sto 4 BDM kloka master drzi 0 na BDMIO, a onda ako salje 1 on dize nivo na log 1 u trajanju do 16-tog BDM kloka. Ako salje 0, onda dize signal BDMIO na log. 1 na 14-tom kloku BDM ciklusa. Prototipski MCU detektuje nivo BDMIO na 10-tom kloku i tako zna sta prima.
5. Prijem bita se inicira od mastera drzanjem log. 0 2 do 4 BDM kloka, a potom master drzi BDMIO na visokoj ompedansi. Tada prototipski MCU salje signal log. 0 ili log. 1 po istom principu, samo sto ovoga puta master detektuje stanje BDMIO linije na 10-tom kloku BDM-a.
Sobzirom da maksimalna frekvencija BDM-a moze biti 17MHz, onda 16 BDM kloka potrebnih za slanje jednog bita traje manje od 1us. Ovo zahteva ili vrlo brz mikrokontroler, ili mnogo dosetljivosti da bi se realizovalo. Kako na forumu ima onih koji rade sa razlicitim mikrokontrolerima, mozda vide resenje sa nekim od njih. Takodje i bilo koja ideja bi bila korisna.
Da stvar bude komplikovanija prototipski MCU se moze napajati naponom od 1.8V do 5.5V (zavisno od tipa), pa su potrebni i translatori nivoa.
U prilogu saljem oblik signala koje sam opisao.