Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

xprog xp motorola

31 Sie 2007 17:49 16140 21
  • Poziom 17  
    Witam wszystkich
    Pogrzebałem trochę w xpr i 'zadziałałem' go na xp
    Eepromki i2c zjada całkiem ładnie
    Niestety nie mam motorolki do pobawienia się
    Prosiłbym bardzo o sprawdzenie działania tej poprawki i odesłanie uwag
    no i jeśli komuś się przyda, to o darowiznę punktową(u mnie bida az piszczy)
    Chętnym przyślę objaśnienie rozwiązania, pliki źródłowe i swoje zdjęcie ;)
    Pozdrawiam
    kac
    ==========================
    paczka usunięta
    wrzucona nizej
  • Poziom 36  
    Lepiej by było, byś zamieścił to objaśnienie, a nie wysyłał "na żądanie".
    Z tej "notki.txt" niewiele wynika - opisz to konkretniej.
  • Poziom 17  
    Po pierwsze dzięki za punkty
    Xpr wykorzystuje do komunikacji zarówno WINAPI( funkcje windows'a, te działają pod xp) jak i bezpośrednie programowanie UART'u( out dx, al ; in ...)
    które pod xp nie działa. procesor w trybie chronionym nie zezwala na wykonywanie instrukcji bezpośredniego dostępu do portów i pamięci-wyrzuca wyjątek(exception-privileged instruction).programy, czy raczej sterowniki takie jak 'giveio' 'porttalk' 'winio' wykorzystują nieudokumentowane funkcje jądra NT, dokładniej Ke386IoSetAccessProcess Ke386SetIoAccessMap, aby zezwolić aplikacji na taki dostęp, na wykonywanie tych instrukcji. Mogą dać dostęp do wszystkiego(ehm :) ).Takie rozwiązanie jest dobre przy korzystaniu z programatorów pod lpt. ale z serialem może być już problem.
    Wszystkie płyty główne od jakiegoś czasu mają zaimplementowany interfejs ACPI http://pl.wikipedia.org/wiki/ACPI. Za jego pomocą system może dynamicznie sterować właczaniem/wyłączaniem/trybem użądzeń w blaszaku( oczywiście także tych zintegrowanych w chipset'ach płyty głównej).
    No i tu taki myk... Mamy pootwierane porty np. 'porttalk'iem a tu nic nie chce gadać. Dlaczego? Ano dlatego, że nie 'posiadamy' urządzenia( w takim sensie jak posiada je sterownik portu.. np. serial.sys) i jest ono wyłączone(inaczej z lpt.u mnie i przypuszczam że w większości płyt głównych lpt jest ciągle zasilone, lub ciągle przygotowane przez swój sterownik). Choć mamy dostęp do portów to i tak wszystkie odczytujemy jako 0xFF bo nie ma prądu :)( także dla innych programów niż xpr. Wszystko się zmienia gdy za pomocą funkcji WINAPI otworzymy port, tzn. poprosimy sterownik aby zasilił urządzenie, zainicjował je i dał nam zestaw podstawowych metod wysyłania i odbierania danych z urządzenia. Dzieje się to przy CreateFile("COM1",....).
    Po takiej operacji porty świecą magicznymi numerkami i można z nich korzystać za pomocą porttalk'a. Można byłoby otworzyć port np. w windowsowym 'hyper terminal'u a potem spokojnie xprog'ować. Niestety xprog uzywa na przemian( dokładniej na początku) WINAPI-tzn CreateFile.. a potem bezpośredniego dostępu do portów. W momęcie gdy xprog chciałby otworzyć port otworzony uprzednio przez 'hyperterminal' nie dostałby na to pozwolenia( tylko jedno otworzenie com'a dozwolone) i wyskoczyłby błąd 'Cannot open comm port'. Czyli trzeba samemu otwierać port gdy xprog chce korzystać z bezpośredniego dostępu(aby zasilić) a potem szybko zamykać go by xpr mógł skorzystać z funkcji WINAPI i nie wyrzucić błędu. Byłoby to możliwe ale już używanie usb-rs232 odpada bo jako takie nie posiada ono jako fizycznych portów dostępnych dla procesora. Wybrałem więc komunikację w całości po WINAPI.
    No i tu przyszło pozmieniać xpr.exe. Trzeba było 'podmienić' procedury bezpośredniego InOut na funkcje WINAPI. Procedury wysyłania w xpr to ok. 15 instrukcji w assemblerze(odbieranie podobnie). Zamieniłem te instrukcje na swoje, wywołujące w standardowym stylu 'C' moje funkcje z parametrami zawierającymi numer portu i wartość wysyłane na port( w przypadku odbioru tylko adres)(tutaj nieoceniony darmowy program OllyDbg ale on to temat rzeka).Potem trzeba było jakoś 'podłączyć' moje funkcje. Praktycznie jedynym ładnym wyjściem jest zrobienie dynamicznie ładowanej biblioteki(DLL) i podłączenie jej do xpr. Tutaj zadziałał(również darmowy) 'pe editor'. On dołożył wpisy mojej dll'ki do xpr i sprawił że jest ładowana przy każdym starcie programu. Mogłem odbierać numery portów i wysyłane wartości oraz czytać z którego portu xpr chce wziąć wartość. Teraz trzeba było to zamienić na funkcje wykorzystujące WINAPI. W dll'ce( pisana w c++) zrobilem jakby wirtualny układ UART. Gdy on dostaje od moich funkcji port i wartość, to( w zależności od portu) wysyła lub zmienia ustawienia(baud rate, ilosc bitów.. tak naprawdę to nie bawiłem sie aż tak bardzo i od razu ustawiam port na wymogi komunikacji z xpr i ignoruje wszystkie instrukcje wyjscia do portów innych niż dane, lub wysyła bajt(out na port 0x3f8- dla com1, 0x2f8- com2). Z odbiorem podobnie. Do tego dochodzi jeszcze używanie przez xpr lini DRT( chyba 5ty pin na wtyczce rs-232... podpisane:) ) do hmm jakby budzenia czy resetu PIC'a. No i zamykanie portu( o którym było już wcześniej) aby xprog nie wykrzyknikował. Pierwsze zamknięcie wykorzystuje specyficzne dane wysylane prze xpr na port. Kolejne zamknięcia portu są robione przez software'owy watchdog który przy braku ruchu na porcie zamyka go( aktualnie po 200ms). I to wszystko. Starałem się jak najmniej ingerować w kod xpr aby nie psuć dobrego programu. Poszczególne kwestie do omówienia jakoś w innym poście. Namawiam do experymentowania w którym chętnie podzielę się wiedzą. Przepr. za błędy ale trochę się ostukałem. Dzięki za odpowiedzi.
  • Pomocny post
    Poziom 19  
    A do której wersji Xproga jest ten dodatek? Mam Motkę HC12 i HC08. Chętnie bym potestował. Będzie działać?
  • Poziom 17  
    pierwsza paczka jest już tylko dla bycia(usune ja)
    druga jest na standardowego xproga( nie M) dziala pod xp, na portach z plyty glownej, kartach IO-PCI/ISA i na dobrych(tj. drogich) rs232-PCMCIA
    hc 08 powinna dzialac
    hc 12 nie bedzie :(
    paczke sciagnac i wypakowac w glownym folderze xprog'a
    no i uruchomic igzbrogigzbe.exe( prawy przycisk myshy na plik->wlasciwosci->zgodnosc->win98)
    czekam na wynik
    +++++++++++++
    a i jeszcze kac2_usb.rar dla tych ktorzy uzywaja usb-rs232
    trzeba podmienic kac2.dll z paczki
    prosilbym o sprawdzenie rowniez na normalnym porcie
    ** uwaga **
    na pl-2303 dziala jedynie przy usb w standardzie 1.1
    jezeli posiadasz 2.0 trzeba przelaczyc w biosie (prawdopodomnie pod
    zakladka 'integrated peripherials')
    sterownik dla 2.0 przytyka sie... nie wiem dlaczego
  • Poziom 19  
    Czy twój dodatek wykorzystuje protokoły komunikacyjne zawarte w oryginalnym xprogu (chodzi mi o transmisję z motorolami - głównie HC08)? Piszesz o obsłudze portów Com. Czy tylko takie zmiany wprowadziłeś?
  • Poziom 17  
    przepraszam za przerwę w pisaniu
    tak, zmienilem jedynie 'końcówki' tj. miejsca w których xprog chce wysłać[odebrać,ustawić] bajt na port. zamiana całej procedury to już większa sprawa. znalazlem już struktury argumentów procedur i można byłoby wyeksportować ją razem z adresami podstawowych funkcji( no np. wyślij bajt albo nakarm bootloader) tak aby każdy mógł napisać swoją procedure ale to chyba bezcelowe. można by też było portować kod PIC'a na jakiś 'bogatszy' układ lub dobadźgać mu pare linii w bebehah( większość kodu mam już rozpisaną na kartkach). ale to wszystko chyba niepotrzebne marnowanie sił. xprog raczej nie wyjdzie w open-source, więc każda zmiana wiązałaby się z kupiszonem pracy.
    nie przeglądałem dokładnie forum i może jest jakiś projekt zrobienia na którymś ARM'ie(7s ATMEL'a wydaje się idealny) 'wielozadaniowej maszyny bombardująco-ssącej', elastycznej, prędkiej i niedrogiej, karmionej skryptem... tak... prostym, przejrzystym skryptem który można pisać w notatniku na PDA siedząc w ubikacji... do tego proste okienka i parę przycisków a jeśli ktoś zechce to graficzne wskaźniki i hektar przełączników.
    jeżeli są chętni to :)
    wydaje mi się, że nie będę więcej zmieniał w xprog'u. usunąłem tego watchdog'a programowego i zastąpiłem go czymś mniej zawodnym i szybszym. za uwagi co do działania programu na usb-rs232 będę wdzięczny. widziałem posty mówiące o problemach z xprog'iem na szybszych komputerach, nie wydaje mi się że w tym tkwi problem ale jeśli rzeczywiście tak jest, to także można poprawić.
    sam pomysł ze zmienianiem tego programu 'porobił' mi się gdy ojciec chciał ożywiać kiepawego laptopa tylko po to by używac xpr.
    nadal nie wiem czy działa z motkami... niestety nikt nie napisał(w zdaniu zawarta prośba)
    dlatego nie wiem czy mogę zakończyć ten temat.
    pozdrawiam
  • Pomocny post
    Poziom 20  
    igzbrogigzbe2.rar
    Ten plik przy próbie ściągnięcia jest wykrywany jako wirus.Dlaczego?
  • Poziom 17  
    witam
    jeżeli używasz kasperky'ego to będzie on kwiczał i nie pozwoli uruchomić programu( bardzo dobry antywirus, trochę przewrażliwony, zasobożerny ale solidnie broni). jeśli posiadasz inny program to napisz jaki, dobrze?
    do 'wrzucenia' mojej dll'ki do xprog'a użyłem 'pe editor'a, dopisał on do programu dodatkową sekcję która potencjalnie( i często tak jest w przypadku crack'owanych programów) może zawierać agresywny kod, wirusa czy inne nieładne rzeczy. jeśli Twój program antywirusowy rozpoznaje zagrożenie jako 'pe patch' to możesz spokojnie uruchomić program. jeśli rozpoznaje go inaczej to nie włączaj tego. możliwe że zaraziło się czymś mimo że używam 'avast'a. postaram się usunąć ten problem.
    dzięki za wiadomość
    ++++++++++++++++++++++
    problem usunięty. 'pe editor' strzelił 'autograf' na początku binarki. paczka u góry zawiera poprawiony program.
    przepraszam za problemy
  • Poziom 19  
    Przydały by mi się te procedury jak to nazwałeś "nakarm bootloader". Ciekaw jestem jak wyssałeś te dane z programu?
  • Poziom 17  
    podstawą pracy xpr są funcje, czytania i zapisywania. i są tylko dwie. ta sama funkcja 'czytaj' obsługuje pamięci i2c i motorolki. różnice tkwią w używanych metodach. funkcja 'czytaj' dostaje od reszty programu 'tablicę metod', wykonuje swój program wywołując podfunkje niezależne od odczytywanego urządzenia(np. odświeżanie paska postępu) i metody dedykowane dla układu, zawarte w tablicy, np. 'czytaj bajt z adresu w eeprom') czyli mniej więcej coś takiego:
    kółka to metody xprog xp motorola
    'tablice metod' mają po (około) 200 adresów. to, jaką 'tablicę metod' dostanie funkcja 'czytaj' zależy od wpisu w pliku 'xprog.dev'( główny katalog programu) a dokładniej od pierwszej liczby zaraz po nazwie układu. widać w tym pliku, że przy niektórych maskach takich samych układów wykorzystywane są różne metody. różne metody to także(niekoniecznie) różne programy dla bootloader'a(pliki *.boo, katalog główny).
    same procedury karmienia bootloader'ów(5V tu, 12V tam...) są chyba opisane w notach technicznych danego układu. xprog w metodzie inicjalizacji układu ładuje odpowiedni plik '.boo' do pamięci RAM( motoroli). motka potem wykonuje ten program( czyli w kółko czyta bajciory ze swojego eepromu i wysyła je na zewnątrz a my się cieszymy). i to cała magia.
  • Poziom 19  
    Trochę mam doświadczemia z Motkami (HC05 i HC11). Chciałem pokombinować z HC08 i HC12, z dokumentacji technicznej nie bardzo mogę się połapać. W przypadku 05 i 11 było to jaśniej opisane. Widzę że jesteś dobrze zorientowany w temacie Xproga. To może rozszyfrowałeś poszczególne pliki do motek. Chodzi mi o nazwy tych plików - który odczyt, zapis itd.: xxxxRD.boo, xxxxWR.boo, itd.
  • Poziom 17  
    Witam
    Tą właściwość możesz spokojnie samemu sprawdzić
    Przenieś pliki '.boo' z katalogu głównego do jakiegoś innego katalogu, podłącz xpr( COM, zasilanko, bez podpinania żadnej motki), uruchom xpr, wybierz interesujący Cię układ i spróbuj czytać lub zapisywać. Wuala( jak to się pisze ???).
    Teraz, przydałby się miły disassembler i kompilator do motorolek i radio mogłoby np. mrugać wyświetlaczem podczas oddawania kodu.
    Pozdrawiam
  • Poziom 13  
    Mam takie male pytanko do Was czy tez wam tak czyta pomału np 24c16?? w ponyprog czyta bardzo szybko w odroznieniu do xproga :) prosze o info czy jest cos nie tak?
  • Poziom 17  
    Wszystko z nim ok tylko transmisja do kości i2c jest w nim mało efektywnie zrealizowana, xprog rozmawia przy niej ze swoim PICem bit po bicie zamiast prać bajtami danych.
  • Poziom 15  
    Podziękowania za wkład pracy, fajnie, że chociaż można używać Xproga jako programatora pamięci pod XP. Przydaje się.
  • Poziom 32  
    U mnie nie działa, mam komunikat

    Aplikacja nie została właściwie zainicjowana (0x150002). Kliknij przycisk OK, aby zakończyć aplikację.
  • Poziom 1  
    very verry good work thanks a lot


    tested and working
  • Poziom 1  
    witam
    Будет ли работать под XP xprog?
    Пробовал, не получилось(извините что по руски)
  • Poziom 20  
    Не будет работать под XP. Вы должны запустить под Win98.