eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikawygenerować *.eep
Ilość wypowiedzi w tym wątku: 15

  • 11. Data: 2020-05-11 20:03:39
    Temat: Re: wygenerować *.eep
    Od: Dawid Rutkowski <d...@w...pl>

    W dniu poniedziałek, 11 maja 2020 17:23:54 UTC+2 użytkownik Janusz napisał:
    > W dniu 2020-05-11 o 13:45, Pawel "O'Pajak" pisze:
    > > W dniu 2020-05-11 o 12:29, Grzegorz Niemirowski pisze:
    > >> W jakim formacie masz dane wejściowe?
    > >
    > > Mogę skonwertować dowolnie. Np. 0A,17,F0,30,00,6C itd. Mają wypełnić
    > > EEPROMa po kolei. Może być od addr 0. Po prostu dziwne mi się wydaje, że
    > > taki Notepad++, czy inne edytory hex nie maja opcji "zapisz jako", albo
    > > "eksportuj" do hex/eep.
    > > Wierzyć mi się nie chce, że ludzie nie liczą czegoś w arkuszu
    > > kalkulacyjnym (bo tak szybciej) i nie zapisują tego do EEPROMu, żeby
    > > procek nie musiał się męczyć z obliczeniami.
    >
    > Oczywiscie że robią, daja sekcję eeprom i tam dane, i tyle :)
    > W AS4
    > Sekcja __attribute_((section(".eeprom")))
    > lub
    > zmienna typu EEMEM.

    I co, po kompilacji dostajesz *.hex i *.eep?
    Ale mundre ;>

    Można też napisać bardzo trudny program:
    #include <unistd.h>
    int main(void)
    {
    unsigned char dane={0x.., ...};
    write(1, dane, sizeof(dane));
    }
    i dostajemy na standardowym wyjściu plik binarny odpowiadający zawartości tablicy
    dane.
    Dalej avr-objcopy.
    A program jest trudny, bo jako całość zawiera jeszcze stdlib i jądro ;)


  • 12. Data: 2020-05-11 20:05:39
    Temat: Re: wygenerować *.eep
    Od: "Grzegorz Niemirowski" <g...@g...net>

    Pawel "O'Pajak" <o...@g...pl> napisał(a):
    > Co to za cudo to AS4?

    Atmel Studio 4. Generalnie chodzi o wykorzystanie kompilatora do
    wygenerowania pliku .eep. Ale to oczywiście pod warunkiem, że dane będziesz
    mieć umieszczone w kodzie. Musiałbyś z CSV czy co tam masz generować plik .c
    lub .h z zawartością wspomnianej sekcji .eeprom. Ewentualnie generować
    fragment kodu i przeklejać.

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 13. Data: 2020-05-11 21:30:23
    Temat: Re: wygenerować *.eep
    Od: Janusz <j...@o...pl>

    W dniu 2020-05-11 o 20:03, Dawid Rutkowski pisze:
    > W dniu poniedziałek, 11 maja 2020 17:23:54 UTC+2 użytkownik Janusz napisał:
    >> W dniu 2020-05-11 o 13:45, Pawel "O'Pajak" pisze:
    >>> W dniu 2020-05-11 o 12:29, Grzegorz Niemirowski pisze:
    >>>> W jakim formacie masz dane wejściowe?
    >>>
    >>> Mogę skonwertować dowolnie. Np. 0A,17,F0,30,00,6C itd. Mają wypełnić
    >>> EEPROMa po kolei. Może być od addr 0. Po prostu dziwne mi się wydaje, że
    >>> taki Notepad++, czy inne edytory hex nie maja opcji "zapisz jako", albo
    >>> "eksportuj" do hex/eep.
    >>> Wierzyć mi się nie chce, że ludzie nie liczą czegoś w arkuszu
    >>> kalkulacyjnym (bo tak szybciej) i nie zapisują tego do EEPROMu, żeby
    >>> procek nie musiał się męczyć z obliczeniami.
    >>
    >> Oczywiscie że robią, daja sekcję eeprom i tam dane, i tyle :)
    >> W AS4
    >> Sekcja __attribute_((section(".eeprom")))
    >> lub
    >> zmienna typu EEMEM.
    >
    > I co, po kompilacji dostajesz *.hex i *.eep?
    > Ale mundre ;>
    No do karmienia programatora wystarczy.


    >
    > Można też napisać bardzo trudny program:
    > #include <unistd.h>
    > int main(void)
    > {
    > unsigned char dane={0x.., ...};
    > write(1, dane, sizeof(dane));
    > }
    > i dostajemy na standardowym wyjściu plik binarny odpowiadający zawartości tablicy
    dane.
    > Dalej avr-objcopy.
    I wyślesz to do programatora?


    --
    Janusz


  • 14. Data: 2020-05-11 22:03:16
    Temat: Re: wygenerować *.eep
    Od: heby <h...@p...onet.pl>

    On 11/05/2020 13:45, Pawel "O'Pajak" wrote:
    > Wierzyć mi się nie chce, że ludzie nie liczą czegoś w arkuszu
    > kalkulacyjnym (bo tak szybciej) i nie zapisują tego do EEPROMu, żeby
    > procek nie musiał się męczyć z obliczeniami.

    Ludzie liczą np. algorytmicznie używajac pythona czy innego języka
    PODCZAS budowania, używają make + binutils i wstawiaja to wprost w kod
    do linkowania jako .o, tam gdzie potrzebują. O ile oczywiście dane są
    algorytmiczne. Ale nawet jak nie są, czasem jest to lepsze niż ręczne
    pomyłki.

    Ogólnie jeśli masz jakas tablicę parametrów, lepiej aby podczas
    budowania była *liczona* niż pobierana z jakiegoś pliku ręcznie
    wygenerowanego na zaś. W celu eliminacji białka z procesu budowania oraz
    ograniczenia problemów typu "no dobra, a skąd my mamy te dane?".


  • 15. Data: 2020-05-12 11:31:59
    Temat: Re: wygenerować *.eep
    Od: Dawid Rutkowski <d...@w...pl>

    W dniu poniedziałek, 11 maja 2020 21:30:25 UTC+2 użytkownik Janusz napisał:
    > W dniu 2020-05-11 o 20:03, Dawid Rutkowski pisze:
    > > W dniu poniedziałek, 11 maja 2020 17:23:54 UTC+2 użytkownik Janusz napisał:
    > >> W dniu 2020-05-11 o 13:45, Pawel "O'Pajak" pisze:
    > >>> W dniu 2020-05-11 o 12:29, Grzegorz Niemirowski pisze:
    > >>>> W jakim formacie masz dane wejściowe?
    > >>>
    > >>> Mogę skonwertować dowolnie. Np. 0A,17,F0,30,00,6C itd. Mają wypełnić
    > >>> EEPROMa po kolei. Może być od addr 0. Po prostu dziwne mi się wydaje, że
    > >>> taki Notepad++, czy inne edytory hex nie maja opcji "zapisz jako", albo
    > >>> "eksportuj" do hex/eep.
    > >>> Wierzyć mi się nie chce, że ludzie nie liczą czegoś w arkuszu
    > >>> kalkulacyjnym (bo tak szybciej) i nie zapisują tego do EEPROMu, żeby
    > >>> procek nie musiał się męczyć z obliczeniami.
    > >>
    > >> Oczywiscie że robią, daja sekcję eeprom i tam dane, i tyle :)
    > >> W AS4
    > >> Sekcja __attribute_((section(".eeprom")))
    > >> lub
    > >> zmienna typu EEMEM.
    > >
    > > I co, po kompilacji dostajesz *.hex i *.eep?
    > > Ale mundre ;>

    > No do karmienia programatora wystarczy.

    Ale tak to wymyślili, że tworzą się dwa pliki?
    W sumie najprostsze, nie trzeba wymyślać sztucznych konwencji.
    A jak ktoś chce jeden plik, to będzie miał w ELFie.

    > > Można też napisać bardzo trudny program:
    > > #include <unistd.h>
    > > int main(void)
    > > {
    > > unsigned char dane={0x.., ...};
    > > write(1, dane, sizeof(dane));
    > > }
    > > i dostajemy na standardowym wyjściu plik binarny odpowiadający zawartości tablicy
    dane.
    > > Dalej avr-objcopy.

    > I wyślesz to do programatora?

    Bezpośrednio tego, co wyjdzie z powyższego programu, to akurat do mojego uisp wrzucić
    nie można - ale skonwertowane avr-objcopy (masz to zapewne też w avr studio - OIDP
    jest to gcc, binutils, avr-libc + jeszcze jakieś IDE - więc możesz sobie avr-objcopy
    w wierszu poleceń windows odpalić) na intel hex albo motorola srec już można -
    oczywiście trzeba kazać programatorowi wrzucić to do EEPROM, a nie flash, sam nie
    zgadnie.

    uisp jest fajny, jako dostępny w postaci źródłowej, więc mogę sobie do niego
    dopisywać obsługę nowszych mikrokontrolerów. Najbardziej jestem dumny z dodania
    ATmega2560/1 - jako posiadającego więcej niż 128kB (64k słów 2-bajtowych) flash. Jako
    że kompilator już nie tak łatwo przerobić, drugie 128kB póki co mogę wykorzystywać
    jedynie na dane (akurat tu jest sporo sampli mowy), kod wciąż ograniczony do
    pierwszych 64kB. Trzeba było też pouczyć się linkera, bo "normalnie" dane umieszczane
    są na początku flasha, zaraz za wektorami przerwań.

    To i tak lepsze niż numer, jaki zrobił projektant poprzedniej wersji tego urządzenia
    - podłączył 128kB pamięci kodu do 8051 w tej sposób, że A16 było podłączone do
    dodatkowego wyjścia, a w tablicy z adresami sampli było dodatkowo miejsce na
    informację, jak tą nogę ustawić przy odgrywaniu.
    Żeby jednak jednocześnie nadal mógł się wykonywać kod, był on umieszczony w tych
    128kB w dwóch kopiach - od adresu 0 i od adresu 65536 - a na sample pozostawało
    128kB-2*wielkośćKodu miejsca.

    Drugą ciekawą możliwością, jaką daje dostęp do źródeł, jest możliwość zmiany pinów
    portu równoległego, do których podłączony jest "programator" DAPA - w sytuacji
    sukcesywanego przepalania się tych pinów ;>

    Aha, i jeszcze co do danych.
    Do EEPROM warto wrzucać tylko dane, które rozróżniają poszczególne urządzenia z tym
    samym programem - np. adresy.
    Jeśli są to dane statyczne, to bez sensu wrzucać je w EEPROM.
    Jak danych jest mało i zmieszczą się w wolnym SRAMie (a SRAMu AVRy zwykle mają więcej
    niż EEPROMu), to po prostu robimy statyczną tablicę.
    Jak danych jest więcej, to robimy tablicę
    unsigned char dane[] __attribute__((progmem)) = { 0x.., ...};
    i odwołujemy się do niej zamiast:
    n=dane[x];
    to:
    n=__LPM(dane+x);
    Troszkę to wygodniejsze niż:
    n=eeprom_load(x);
    i do tego można w dość wygodny/automatyczny sposób korzystać z kilku tablic, zamiast
    samemu pamiętać, od którego miejsce w EEPROM zaczyna się dana tablica.

    Aha, i dane mogą być nawet w csv:
    unsigned char dane[] __attribute__((progmem)) = {
    #include "dane.csv"
    };

strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: