eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaARM RIDE7 sekcje text, data i bss
Ilość wypowiedzi w tym wątku: 16

  • 11. Data: 2012-01-19 18:05:59
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: slawek7 <s...@w...pl>

    Wiem co masz na mysli a slowo sztuczki bylo uzyte przeze mnie na
    wyrost.
    Moje pytanie powinno brzmiec jak w ARMach zadeklarowac jakas tablice
    np tekst do umieszczenia w pamieci flash i jak potem odczytac?


  • 12. Data: 2012-01-19 23:45:21
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: Michoo <m...@v...pl>

    W dniu 19.01.2012 19:05, slawek7 pisze:
    > Wiem co masz na mysli a slowo sztuczki bylo uzyte przeze mnie na
    > wyrost.
    > Moje pytanie powinno brzmiec jak w ARMach zadeklarowac jakas tablice
    > np tekst do umieszczenia w pamieci flash
    np przez dodanie:
    __attribute__(( section(".text") ))
    __attribute__(( section(".rodata") ))

    Poza tym gcc chyba dane const wyrzuca do flash samo.

    > i jak potem odczytac?
    Zazwyczaj tablicę odczytuje się przez indeks (foo=tab[i];) lub przez
    konwersję do wskaźnika (foo=*(tab+i);) ale chyba nie o to pytasz?

    --
    Pozdrawiam
    Michoo


  • 13. Data: 2012-01-20 02:24:48
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: JDX <j...@o...pl>

    On 2012-01-19 19:05, slawek7 wrote:
    > Wiem co masz na mysli a slowo sztuczki bylo uzyte przeze mnie na
    > wyrost.
    > Moje pytanie powinno brzmiec jak w ARMach zadeklarowac jakas tablice
    > np tekst do umieszczenia w pamieci flash i jak potem odczytac?

    *KOMPILATOR:*
    $arm-none-eabi-gcc --version
    arm-none-eabi-gcc.exe (Sourcery G++ Lite 2010.09-51) 4.5.1
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    *ŹRÓDŁO:*
    char tab1[3] = {'a', 'b', 'c'}; /* To ląduje w .data */
    char tab2[3]; /* To ląduje w .bss */
    const char tab3[3] = {'c', 'd', 'e'}; /* To ląduje w .rodata */
    const char tab4[3]; /* To ląduje w .bss */

    char *napis1 = "Napis 1.\n"; /* To ląduje w .data */
    const char *napis2 = "Napis 2.\n"; /* To ląduje w .data */
    char napis3[] = "Napis 3.\n"; /* To ląduje w .data */
    const char napis4[] = "Napis 4.\n"; /* To ląduje w .rodata */

    int main(int argc, char* argv[])
    {
    return (int)(tab1[0]+tab2[0]+tab3[0]+tab4[0]);
    }

    *KOMPILACJA:*
    $arm-none-eabi-gcc -mcpu=arm7tdmi -nostdlib -Wl,-Map=testrom.map
    -Wl,--entry=main -o testrom.elf testrom.c

    No i teraz pooglądaj sobie plik .map i popatrz gdzie wylądowały
    poszczególne tablice.

    A to pod jakimi adresami będą znajdować się poszczególne sekcje i w
    związku z tym w jakim rodzaju pamięci mają wylądować to już sobie
    ustalasz sam pisząc (lub modyfikując) skrypt linkera. No i musisz mieć
    świadomość tego, że czasami być może będziesz musiał dostarczyć własny
    kod kopiujący odpowiednie sekcje z ROM do RAM jeśli domyślny nie wystarczy.


  • 14. Data: 2012-01-20 02:31:12
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: JDX <j...@o...pl>

    On 2012-01-20 00:45, Michoo wrote:
    > np przez dodanie:
    > __attribute__(( section(".text") ))
    > __attribute__(( section(".rodata") ))
    No to z lekka hardkor jest. :-) I assembler może pluć ostrzeżeniami. Ale
    działa

    > Poza tym gcc chyba dane const wyrzuca do flash samo.
    Czasami wrzuca a czasami nie. :-) Patrz mój przykład. Tzn. jest tak, że
    niektóre consty lądują w .rodata a inne w .data która na starcie jest
    kopiowana do RAM i w związku z tym mamy duplikaty z których część jest
    zapewne zbędna.


  • 15. Data: 2012-01-20 07:11:24
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: Zbych <a...@o...pl>

    W dniu 2012-01-20 03:24, JDX pisze:

    > On 2012-01-19 19:05, slawek7 wrote:
    >> Wiem co masz na mysli a slowo sztuczki bylo uzyte przeze mnie na
    >> wyrost.
    >> Moje pytanie powinno brzmiec jak w ARMach zadeklarowac jakas tablice
    >> np tekst do umieszczenia w pamieci flash i jak potem odczytac?
    >
    > *KOMPILATOR:*
    > $arm-none-eabi-gcc --version
    > arm-none-eabi-gcc.exe (Sourcery G++ Lite 2010.09-51) 4.5.1
    > Copyright (C) 2010 Free Software Foundation, Inc.
    > This is free software; see the source for copying conditions. There is NO
    > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    >
    > *ŹRÓDŁO:*
    > char tab1[3] = {'a', 'b', 'c'}; /* To ląduje w .data */
    > char tab2[3]; /* To ląduje w .bss */
    > const char tab3[3] = {'c', 'd', 'e'}; /* To ląduje w .rodata */
    > const char tab4[3]; /* To ląduje w .bss */
    >
    > char *napis1 = "Napis 1.\n"; /* To ląduje w .data */
    > const char *napis2 = "Napis 2.\n"; /* To ląduje w .data */

    W tym przypadku napis ląduje w .rodata, tylko sam wskaźnik napis2 jest
    umieszczany w .data.


    > *KOMPILACJA:*
    > $arm-none-eabi-gcc -mcpu=arm7tdmi -nostdlib -Wl,-Map=testrom.map
    > -Wl,--entry=main -o testrom.elf testrom.c


  • 16. Data: 2012-01-20 08:04:30
    Temat: Re: ARM RIDE7 sekcje text, data i bss
    Od: "Artur M. Piwko" <m...@b...pl>

    In the darkest hour on Fri, 20 Jan 2012 03:24:48 +0100,
    JDX <j...@o...pl> screamed:
    > *ŹRÓDŁO:*
    > char tab1[3] = {'a', 'b', 'c'}; /* To ląduje w .data */
    > char tab2[3]; /* To ląduje w .bss */
    > const char tab3[3] = {'c', 'd', 'e'}; /* To ląduje w .rodata */
    > const char tab4[3]; /* To ląduje w .bss */
    >
    > char *napis1 = "Napis 1.\n"; /* To ląduje w .data */
    > const char *napis2 = "Napis 2.\n"; /* To ląduje w .data */
    > char napis3[] = "Napis 3.\n"; /* To ląduje w .data */
    > const char napis4[] = "Napis 4.\n"; /* To ląduje w .rodata */
    >

    Jeśli chodzi o napis2, sprawdź sobie to:

    const char * s1 = "test";
    char * const s2 = "test";
    const char * const s3 = "test";

    --
    [ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:240B ]
    [ 08:48:45 user up 13053 days, 20:43, 1 user, load average: 0.43, 0.95, 0.35 ]

    There R 2 rules for ultimate success in life. 1. Never tell everything U know.

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: