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

problem z aec_isp

marcinxat 08 Lis 2006 21:08 1542 8
  • #1 08 Lis 2006 21:08
    marcinxat
    Poziom 11  

    witam

    Wlasnie zlozylem zestaw uruchomieniowy ZL1MCS51 i wykonalem do niego rowniez programatorek AEC.

    Oczywiscie pierwsza rzecza jaka bym chcial na zestawie zrobic to go uruchomic i sprawdzic czy w ogole dziala. Tu z pomoca mial mi przyjsc przykladowy, skompilowany juz program testowy wyswietlaczy LED, w postaci pliku *.hex.

    oto jego zawartosc:

    :020000040000FA
    :020000002100DD
    :10000B00121400D5640E7564041213001212001240
    :05001B001700315C320A
    :10010000752F00753001438902758C3043A882D267
    :100110008C740812121EF531740012121EF532741E
    :100120000512121EF533740112121EF534D27775C2
    :10013000620075640275660075670010790280FBC5
    :10014000207F09741012121EF534F533856963059A
    :1001500063E56975F0103182D27D80DF307F181041
    :100160007702800B741012121EF531F532F533E56B
    :100170006012121EF53422207707741012121EF539
    :1001800034228412121EF531E5F012121EF53222CD
    :1012000043B0F0D5300375300474302530F8E6F57E
    :10121000A075E00225308362B02280402010048354
    :1012200022C0F9C4D0999282F880908883A6C186A2
    :041230008EFFDFFE50
    :10130000E562700C207D03D2B12275620AC2B1225F
    :101310001562B40203D2B122B40105D2B1C27D225A
    :0A132000E563A2E092B103F5632239
    :10140000E566700A20B00D75660A75670422D56717
    :1014100006756704C2D522E567B402F8D5660E30BA
    :10142000B008856869C2D5D27922D2D522E566B4E2
    :10143000090730B0DF75660022E568A2B013F568D1
    :03144000C2D522F0
    :10170000D5613A75613C75807FE580540F75F000B6
    :10171000B40F2E7580BFE580540F75F004B40F210F
    :101720007580DFE580540F75F008B40F147580EFF5
    :10173000E580540F75F00CB40F07107F0122D27EA4
    :1017400022D27FC5F030F30D30F20930F1052403C9
    :08175000F560220404F560229B
    :00000001FF

    Zaznaczam ze na razie nie podlaczam ani programatora ani zestawu uruchomieniowego. Chce na razie wczytac tylko program testowy do aec_isp.

    Uruchamiam programik aec_isp. dokonuje ustawien procka na 89S8252, portu lpt. Opcje setupu: Program flash memory oraz verify flash memory ustawiam na yes.
    Nastepnie probuje wgrac programik wspomniany do flash bufora poprzez opcje: LOAD HEX FILE TO FLASH BUFFER.
    Ale nic nie laduje pomimo ze jest komunikat: HEX FILE LOADED.

    O co chodzi?

    pozdrawiam

    0 8
  • Pomocny post
    #2 08 Lis 2006 23:55
    markosik20
    Poziom 33  

    Niepoprawny .hex. Żaden symulator dla 51 tego nie trawi.

    0
  • #3 09 Lis 2006 07:58
    marcinxat
    Poziom 11  

    markosik20 napisał:
    Niepoprawny .hex. Żaden symulator dla 51 tego nie trawi.


    co masz na mysli?

    przegladalem wczoraj forum w tej kwestii. zauwazylem ze, adresy nie sa poukladane rosnaco. czy o to chodzi? na forum spotkalem sie z podobnym problemem ale tamten dotyczyl Keila.

    czy tu ma miejsce cos podobnego?

    aha we wczesniejszym poscie zapomnialem dodac, ze gdy laduje do programu aec_isp jakis przykladowy programik z uczelni to moge podejrzec bufor i rzeczywiscie cos tam jest. zauwazylem tez ze tam adresy sa poukladane rosnaco.

    czyzby w tym tkwil wlasnie problem?

    pozdrawiam

    0
  • Pomocny post
    #4 09 Lis 2006 09:12
    markosik20
    Poziom 33  

    Przyznam się że nigdy nie analizowałem pliku .hex dla uP. Zasada jest prosta adres+instrukcja+argument. Trochę pokombinowałem i wyszło, że jak skazujesz pierwszą linię

    Code:
    :020000040000FA
    to program się ładuje. Podejrzewam że błąd jest w tym że pod tym samym adresem są różne rozkazy. Najlepiej napisać w ASM program do migania diody (wszyscy od tego zaczynają ):D
    Teraz nie ma sensu analizować kodu .hex gdyż to jest ostatnia postać kompilacji programu i lepiej poprawki robić "wyżej" programowo.

    0
  • #5 09 Lis 2006 09:34
    marcinxat
    Poziom 11  

    markosik20 napisał:
    Najlepiej napisać w ASM program do migania diody (wszyscy od tego zaczynają ):D
    Teraz nie ma sensu analizować kodu .hex gdyż to jest ostatnia postać kompilacji programu i lepiej poprawki robić "wyżej" programowo.

    oczywiscie ze bede zaczynal od napisania programiku na diode. obecnie chodzi mi jedynie o sprawdzenie poprawnosci dzialania zestawu uruchomieniowego, a jako ze mam programik do jego przetestowania, to wlasnie na nim chcialbym to sprawdzic.

    gdzies na elektrodzie znalazlem, ze:

    Zawartość hex'a ma postac:

    :iiaaaattddddddddddddcc gdzie:

    ii - ilosc danych w rekordzie,
    aaaa adres od którego należy zacząć upychać w pamięci dany rekord,
    tt - typ rekordu,
    dddd - dane (jest ich tyle ile wskazuje ii),
    cc - suma kontrolna rekordu.

    markosik20 napisał:
    Trochę pokombinowałem i wyszło, że jak skazujesz pierwszą linię
    Code:
    :020000040000FA
    to program się ładuje. Podejrzewam że błąd jest w tym że pod tym samym adresem są różne rozkazy.


    ok, faktycznie tak jest. no dobrze ale skad mam pewnosc ze to wlasnie pierwsza linia jest bledna. a moze druga jest bledna? troche to przypomina szukanie rozwiazania na chybil trafil.

    dlaczego sadzisz ze pierwsza linia jest bledna?

    pozdrawiam

    0
  • Pomocny post
    #6 09 Lis 2006 09:54
    markosik20
    Poziom 33  

    Dlatego lepiej napisać wszystko od początku albo mieć dostep do kodu źródłowego. Na obecnym etapie "zawansowanej" elektroniki i informatyki mało kto się zna na analizowaniu plikach .hex. To tak jakby się cofać w rozwoju.:D.
    Pierwsza linia ma coś nie tak bo nigby pod adresem 0000h nie umieszcza się rozkazu INC A; NOP; (04). Zawsze to jest skok np: LJMP 100;(02100).

    0
  • #7 09 Lis 2006 10:05
    marek_Łódź
    Poziom 36  

    Cytat:
    Niepoprawny .hex. Żaden symulator dla 51 tego nie trawi.

    Cytat:
    Przyznam się że nigdy nie analizowałem pliku .hex dla uP. Zasada jest prosta adres+instrukcja+argument. Trochę pokombinowałem i wyszło, że jak skazujesz pierwszą linię

    Cytat:
    Dlatego lepiej napisać wszystko od początku albo mieć dostep do kodu źródłowego. Na obecnym etapie "zawansowanej" elektroniki i informatyki mało kto się zna na analizowaniu plikach .hex. To tak jakby się cofać w rozwoju..
    Pierwsza linia ma coś nie tak bo nigby pod adresem 0000h nie umieszcza się rozkazu INC A; NOP; (04). Zawsze to jest skok np: LJMP 100;(02100).


    Tak jak napisał autor postu problem jest nie w źródle, czy procesorze, ale w strukturze pliku HEX. Jeśli ktoś pisze "niepoprawny hex" niech wskaże miejsce, gdzie plik się rozjeżdża, a nie powołuje się na rozkazy procesora, które w tym miejscu nie mają nic do rzeczy.

    Dałem ten plik do zjedzenia programowi PonyProg i bezproblemowo go wciągnął zgodnie z opisem struktury powyżej. Plik jest w dziwaczny sposób podzielony na kawałki (adresy 100, 1200,1300, 1400, 1700H).
    Być może Twój program programatora nie umie sobie z tym poradzić.

    0
  • #8 09 Lis 2006 10:14
    marcinxat
    Poziom 11  

    wlasnie mialem dopisac ze juz doszedlem, ale w tym czasie odpowiedziales.

    doszedlem, ze:

    :020000040000FA

    :02************ to 2 bajty danych
    :**0000******** to adres poczatkowy
    :******04****** to typ danych
    :********0000** to dane czyli tu nic nie ma; puste instrukcje
    :************FA to suma kontrolna

    zreszta w miedzyczasie znalazlem na elektrodzie programik do sortowania i on takze skasowal pierwsza linie.

    ps. mam taka malo prosbke czy jesli nie byloby to Tobie problemem to czy moglbys mi napisac jakis bardzo prosty programik w asemblerze azeby na 4 wyswietlaczach LED wyswietlilo sie odpowiednio np. 1234, bo w programie testowym pododawanych jest jeszcze troche innych rzeczy, a przez to dluzej zejdzie mi na jego rozgryzieniu. uklad polaczen wyswietlaczy do 89s8252 mozesz znalezc na 2 stronie pdf pod linkiem http://www.btc.pl/pdf/zl1mcs51.pdf

    dzieki za pomoc i pozdrawiam

    0
  • #9 10 Lis 2006 08:16
    marcinxat
    Poziom 11  

    Rozgryzlem i hexa i wysietlacz. Takze dzieki za pomoc.

    Pozdrawiam

    0