Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 31.10.2011 08:10 |
Předmět: | Re: Unikarta FW rev.60 |
Ahoj Martine, podivam se do tveho zdrojaku, zalozim v svn dalsi adresar a pokusim se to dat cele dohromady tak, aby bylo mozne vyrobit kompilovanec pro oba systemy - kdyz tak detaily jeste doresime mimo konferu. S tim CRC jsem se taky natrapil uz kdyz jsem prepisoval Xmodem pro Z80, protoze mi nesedely moje soucty s temi, ktere posilal na konci packetu protokol z minicomu. Nakonec jsem prisel na to, ze ty prenosove protokoly zrejme pouzivaji trochu jine CRC16 a CRC32, nez jake jake je bezne zvykem. Do unikarty jsem pouzil CRC z baliku protokolu lrzsz, ktere v Linuxu pouziva minicom. Co se tyka toho malloc, tak mas pravdu - mel bych to osetrit a nebo jeste lepe bych to mel zacit stahovat data do PC nejakym jinym zpusobem ... Trochu se bojim, ze ty potize, ktere jsi zaznamenal s prenosem do unikarty by mohly mit co docineni s manualnim vystavovanim RTS :( Pri svych experimentech s RS232 na unikarte jsem zjistil, ze i kdyz unikarta nastavi RTS = 1, tak PC jeste chvilku posila data. Tohle mi delalo problemy, kdyz jsem ponechal nastavovani RTS ciste na STM32 - procesor ihned po prijeti jednoho bajtu nastavil RTS = 1 a drzel ho v teto urovni dokud jsem si ten bajt neprevzal. To fungovalo pekne do doby, nez nastal cas pro ulozeni dat z bufferu na SD. Prave tehdy jsem zjistil, ze PC ze setrvacnosti poslalo dalsi bajt navzdory tomu, ze uz mu to uroven RTS zakazovala. V STM32 pak prijeti tohoto bajtu zpusobilo to, ze se RTS opet nastavilo do urovne 0. Proto jsem ten semafor zacal ridit rucne tak, ze vystavuju RTS=1 ve chvili, kdy mi zbyvaji posledni 2 volne bajty v bufferu a RTS = 0 ve chvili, kdy mam volne alespon 3 bajty. Mozna mas ukecanejsi RS232 a 2 bajty pak nestaci. Na tohle si budu muset najit trochu vic casu. Pichnu to na analyzer a zkusim si s tim RS232 pohrat v nejakem samostatnem kodu mimo unikartu, protoze to chovani je akosi divne a to rucni rizeni asi nebude uplne idealni zpusob jak to resit :( > Podle toho, jak se vypisuji ty tecky pri cteni a zapisu je videt, ze > se cteni bufferuje cca po 2 kB, kdyzto zapis se hned a plynule odesila. > S temi buffery v PC je to docela legracni. Kdyz experimentalne na unikarte ignoruju CTS a snazim se poslat vse najednou, tak v PC samozrejme nepochytam vsechny bajty. Proto jsem prave zacal pouzivat ten malloc() se kterym jsem si nejprve udelal dostatecne misto pro prijem dat. Kdyz jsem pak chtel v PC precist vse pres read ( pd, memory, kompletni_delka ), tak jsem odchytil jen prvnich 24 bajtu. Kdyz jsem to vsak dal cist po jednom bajtu, ktery se hned ulozil do te alokovane pameti, tak jsem precetl prvni 4kB a zbytek sel nekam do haje. Experimentoval jsem potom i s tim, ze se unikarta snazila davkovat data pro PC, ale to uz jsou takove docela obskurni metody pro rizeni komunikace :) > Taky mne napadlo jedno drobne vylepseni UShellu. Nechces tam dodelat > VER prikaz? Ja si to obcas testuju pres Putty, idealne po nahrani > noveho fw a tak bych hned vedel, ze je > > to ok. Monza by stacilo jen prihodit verzi do hlasky po resetu. > Pridal bych to asi jako dalsi parametr za hlasku OK:RESET txt_verze_firmware > kraje desky, takze mi tam nejde poradne zastrcit kabel s koncovkami. Tak jsem to pres redukce prodlouzil, ale ani tak mi to neslape. Mozna mam blby kabel, budu to muset > > premerit. Taky muzu mit nejakou zradu na portu v PC. Nejlepsi co se mi > podarilo dostat je pri resetu Unikarty par paznaku. Zkousel nekdo > normalni serial na Unikarte? > Konektor pro RS232 je na unikarte trochu utopeny, takze jsem musel z konektoru na kabelu sundat krytky, abych ho tam dokazal natlacit. Pro komunikaci mezi PC a unikartou je potreba krizeny kabel ve kterem jsou piny propojeny nasledovne: Rx - Tx Tx - Rx RTS - CTS CTS - RTS GND - GND Pak je samozrejme potreba prepojit oba switche, ktere jsou mezi RS232 a miniUSB tak, aby se propojil krajni a stredni pin pobliz toho konektoru, ktery chces pouzivat - bez prehozeni switche nelze posilat data z portu do unikarty. Michal
Ostatní příspěvky vlákna:
[2011/1 (52)] [2011/2 (9)] [2011/3 (2)] [2011/4 (9)] [2011/5 (8)] [2011/7 (1)] [2011/8 (40)] [2011/9 (146)] [2011/10 (116)] [2011/11 (29)] [2011/12 (110)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]