logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Problem z ładowaniem pliku do Atmega16- jaka wielkość?

slaweks861 03 Lut 2010 22:15 1577 23
  • #1 7639677
    slaweks861
    Poziom 10  
    Mam pewien problem. Napisałem program na Atmega16 ale nie wiem jak sprawdzić jego wielkość. Jeżeli sprawdzam plik HEX w windowsowym okienku to mam takie dane:
    ROZMIAR 47,2 KB (48 360 bajtów)
    ROZMIAR NA DYSKU 48 KB (49 152 bajtów)

    Gdzie sprawdzić rzeczywistą wartość ładowaną do uC?
    Jak reaguje uC jeżeli ładuję do niego plik większy niż pamięć Flash? Programator bedzie coś wrzeszczał?

    dzięki za pomoc.
  • #2 7639768
    asembler
    Poziom 32  
    Rozmiar hex niema nic do rozmiaru pliku ktory by sie mial zmiescic do atmegi. Podgladnik rozmiar pliku .BIN
    Programator powinien wrzeszczec a nawet wrecz zabronic probo wgrania pliku wiekszego niz pojemnosc procka (prznajmniej tak u mnie hałasuje)
  • #3 7639832
    slaweks861
    Poziom 10  
    ok a jak sprawdzić plik BIN? Skąd go wziąć? i jeszcze jedno pytanie: jaki masz programator tzn. program? Ja korzystam z ISP Programmer 1.2.0.50...
  • #4 7639888
    asembler
    Poziom 32  
    Pewnie na dysku znajdziesz. Co do twojego programatora to ci nie pomoge.
    Ja mam własny programator nie wymagajacy zasilania i własny program programujący nie tylko AVR ale 51' itp. (zawsze moge cos dopisac)
  • #5 7639891
    Balu
    Poziom 38  
    isp prog. będzie raczej wszystko jedno (o ile to ten Dybkowskiego).
    Nawet jak programator nie będzie wrzeszczał, to nic się nie stanie poza tym, że procek nie będzie działał:)

    A plik bin... no to chyba jakiś hex2bin by trzeba programik;)
    Po co Ci wiedzieć jaką ma wielkość plik?
  • #6 7639941
    slaweks861
    Poziom 10  
    Kapuję już powoli. Zaraz sprawdzę to tym programem hex2bin...

    muszę sprawdzić wielkość ponieważ napisałem prosty program na uC który obsługuje 2 przyciski i wyświetlacz LED (17segm). Za ich pomocą mogę wyświetlać wszystkie litery A-Z (nast./poprz.). Przyciski są podpięte pod przerwania na liniach INT0, INT1. I to mi działa idealnie. W kolejnym kroku dopisałem dużą ilość kodu odpowiadającego za obsługę szyfrowania algorytmem Blowfish, a że posiada on ogromnej ilości dane wejściowe to przestało coś mi działać. uC powinien działać tak samo jak w przypadku starego programu tylko z literami ponieważ nic się nie zmieniło oprócz dodania dużej ilości kodu szyfrogramu... Tak w skrócie:)
  • #7 7639950
    asembler
    Poziom 32  
    Kompilator na koncu wypluwa jakie jest zuzycie pamieci flash.
    Nawet pisze ile jest kodu programu ile danych uzywanych a ile pominietych bajtó ze wgledu na to ze musz a byc ładowane od poczatku słów w procesorze.
    Wiedza o wielkosci bina to podstawa.
    Taki program spokojnie ponizej 8kB a szukaj na dysku zbioru binarnego o nazwie "laden"
  • #8 7640031
    slaweks861
    Poziom 10  
    Ten program Hex2bin jakoś tak dziwnie działa ale wziąłem plik HEX i najechałem na Hex2Bin i wywaliło mi plik binarny o wielkości 16,7KB. Dobrze rozumiem że to jednak jest za duży plik?

    używam kompilatora gcc-avr i uruchamiam go z wiersza poleceń i niestety nie wypluwa mi żadnych info o ilości kodu programu itd.
  • #9 7640053
    asembler
    Poziom 32  
    Program pewnie w C to dlatego nie wypluwa ci zebys sie nie denerwował wielkoscia wynikową. Moze mozna właczyc jakąsik funkcje optymalizacji kodu?
  • #10 7640089
    slaweks861
    Poziom 10  
    Aha... funkja optymalizacji kodu odpada bo tam nie ma czego optymalizować:) mam nadzieję że jeżeli program byłby za duży to uC nic by nie robił... a on robi tylko wariuje:)
  • #11 7640129
    Balu
    Poziom 38  
    Niekoniecznie nic:)
    Nicby pewnie nie robił gdybyś wgrał hexa zamiast bina:)
    A tak H** wie co się będzie działo:)
    Anyway, włącz optymalizację -0s sam byś się zdziwił ile rzeczy można zoptymalizować ^^
  • #12 7640152
    slaweks861
    Poziom 10  
    a jak to włączyć: -0s? gdzie dokładnie skoro mam WinXp?
  • #14 7640163
    slaweks861
    Poziom 10  
    uC odwala bardzo różne rzeczy np. włączając jakieś piny zupełnie niezidentyfikowane a to oznacza, że świecą mi się różne segmenty na wyświetlaczu. Czy to może być objaw zapełnionej całkowicie pamięci Flash?
  • #15 7640170
    asembler
    Poziom 32  
    Napisz krotki program na miganie leda dołacz do tego 20kb danych zaprogramuj procek
    Jezeli sie zaprogramuje i bedzie migał LED (nie zapomnij podłaczyc) znaczy ze wgrywanie wiekszego kodu do mniejszego procesora moze ale nie musi konczyc sie wariacja programu gdzyz w niewgranyc fragmentach moga byc procedury albo istoten dene sterujace programem przez co program idzie w przysłowiowe truskawki.
  • #16 7640226
    slaweks861
    Poziom 10  
    tak zrobiłem jak napisałeś... prosty program na miganie diody normalnie działa ale po dorzuceniu trzech zadeklarowanych dużych tablic i ponownym wgraniu uC wysiada i nic się nie dzieje. Także czeka mnie wymiana uC na Atmegę32 ale za bardzo się nie łamię, bo ma identyczne wyprowadzenia i tę samą obudowę... dzięki za pomoc...
  • #17 7640245
    asembler
    Poziom 32  
    Czyli masz odpowiedz twoj programator nie sprawdza wiekosci (czyli do d..py jest) a nadmiar danych rozpoczyna ładowac od poczatku procesora
    Mozesz to sprawdzic dajac na poczatek tablice dokladnie 16kB a na koniec program migawy. Jak zadziala to udowdnisz tym to co napisałem.
  • #18 7643784
    slaweks861
    Poziom 10  
    Błagam pomóżcie! Zamiast Atmega16 wstawiłem do gniazda Atmega32 i dalej mi nie chodzi ten program. Nawet jak wgram prosty program do wyświetlania liter, który działa normalnie to po dodaniu dużej tablicy uC wysiada i ch** wie dlaczego migają byle jakie piny... Błagam pomóżcie, bo już nie mam siły na to gów**.

    Plik zawierający prosty program, który mi działa bez zarzutu to git.c, natomiast tablice są w pliku tablice.h i stamtąd po prostu je kopiowałem... Może coś jest nie tak z ich deklaracją...
  • #19 7643858
    slaweks861
    Poziom 10  
    Mała poprawka. Tam kompilator wrzeszczy że nie ma zadeklarowanej liczby "p". Linijka z "p=0;" jest niepotrzebna...
  • #20 7645011
    Balu
    Poziom 38  
    Może głupie pytania ale co to za tablica i czemu jej nigdzie nei używasz?
    Sam plik C zajmuje 1398byteów (załącznik)
    Zmien rozszerzenie zalacznika na hex z zip'a
    Bo forum wciaz hexów nie łyka.
    Załączniki:
  • #22 7648751
    slaweks86
    Poziom 11  
    Już mówię po co ta tablica. Na Atmedze mam odpalić algorytm szyfrowania o nazwie Blowfish. Żeby algorytm działał na tej Atmedze to rzecz jasna musi się tam cały znajdować, bo nie chcę dołączać żadnej dodatkowej pamięci (prosty układ). Tablice są tzw. S-boxami i są wykorzystywane do szyfrowania jako dane inicjalizacyjne.

    Teraz dodaję te pliki spakowane w rar. i jeszcze dorzucam ustawienie fuseBitów.

    Dodam że częstotliwość w programatorze mam ustawioną na 7 372 800 Hz. Może to coś zmieni:)

    I jeszcze raz błagam o pomoc...
  • #23 7649372
    slaweks86
    Poziom 11  
    A jeszcze jedna sprawa: deklarowane zmienne są umieszczane w pamięci SRAM uC, a jeżeli tak to jak ma się w niej zmieścić tablica[4][256] typu unsigned long. Wychodzi że ona ma 4*256*4= 4KB

    dobrze myślę?
REKLAMA