eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › STM32 i GNU assembler - problem z movs
Ilość wypowiedzi w tym wątku: 13

  • 1. Data: 2010-05-06 06:00:07
    Temat: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    Witam,

    Zacząłem coś pisac na STM32F103 i mam problem z
    GNU assembler (Sourcery G++ Lite).

    Wywołuję go: as.exe -mcpu=cortex-m3 -mthumb
    I nie wiem czy aby poprawnie, bo nie łyka mi

    movs R11, #0x000B

    Pisze:
    only lo regs allowed with immediate -- 'movs R11,#0x000B'

    Czy ten asembler się nie nadaje dla tego procka?
    A może użyte opcje są niewłaściwe?

    Z góry dzięki za pomoc,
    SM


  • 2. Data: 2010-05-06 06:11:16
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: Jacek Radzikowski <j...@s...die.die.die.piranet.org>

    On 05/06/2010 02:00 AM, SM wrote:
    [...]
    > Wywołuję go: as.exe -mcpu=cortex-m3 -mthumb
    > I nie wiem czy aby poprawnie, bo nie łyka mi
    >
    > movs R11, #0x000B
    >
    > Pisze:
    > only lo regs allowed with immediate -- 'movs R11,#0x000B'
    >
    > Czy ten asembler się nie nadaje dla tego procka?
    > A może użyte opcje są niewłaściwe?

    Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    rejestrów R0-R7

    pzdr.
    j.


  • 3. Data: 2010-05-06 06:19:43
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    > Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    > rejestrów R0-R7
    >
    > pzdr.
    > j.
    >

    No właśnie - chyba używam złej opcji dla asemblera
    że nie łyka mi tej instrukcji.

    Czy ktoś mógłby podpowiedzieć jakiej opcji użyć
    aby można było kompilować pod STM32F103?
    Może niewłaściwa wersja asemblera GCC?

    SM

    P.S.
    W Programming Manual PM0056 z www.st.com
    strona 81/154 przykład użycia MOV jak byk
    jest:
    MOVSR11, #0x000B; write value of 0x000B to R11, flags get updated


  • 4. Data: 2010-05-06 06:50:24
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: Zbych <a...@o...pl>

    SM pisze:
    >> Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    >> rejestrów R0-R7
    >>
    >> pzdr.
    >> j.
    >>
    >
    > No właśnie - chyba używam złej opcji dla asemblera
    > że nie łyka mi tej instrukcji.
    >
    > Czy ktoś mógłby podpowiedzieć jakiej opcji użyć
    > aby można było kompilować pod STM32F103?

    thumb2?


  • 5. Data: 2010-05-06 10:08:08
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    Zbych pisze:
    > SM pisze:
    >>> Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    >>> rejestrów R0-R7
    >>>
    >>> pzdr.
    >>> j.
    >>>
    >>
    >> No właśnie - chyba używam złej opcji dla asemblera
    >> że nie łyka mi tej instrukcji.
    >>
    >> Czy ktoś mógłby podpowiedzieć jakiej opcji użyć
    >> aby można było kompilować pod STM32F103?
    >
    > thumb2?

    Nie łyka ani:

    -mcpu=cortex-m3 -mthumb2

    ani:

    -mcpu=cortex-m3 -mthum-2

    SM


  • 6. Data: 2010-05-06 10:13:07
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    Zbych pisze:
    > SM pisze:
    >>> Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    >>> rejestrów R0-R7
    >>>
    >>> pzdr.
    >>> j.
    >>>
    >>
    >> No właśnie - chyba używam złej opcji dla asemblera
    >> że nie łyka mi tej instrukcji.
    >>
    >> Czy ktoś mógłby podpowiedzieć jakiej opcji użyć
    >> aby można było kompilować pod STM32F103?
    >
    > thumb2?

    Nie mam jeszcze procka, więc nie wiem czy to łyknie,
    ale działa coś takiego:

    as.exe -mcpu=cortex-m3 -mimplicit-it=thumb

    i na początku w kodzie programu:

    .syntax unified
    .code 16

    SM


  • 7. Data: 2010-05-06 13:43:46
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    >
    > Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    > rejestrów R0-R7

    Cortex-M3 pracuje tylko w Thumb-2 więc musi mieć dostęp do
    wszystkich rejestrów w tym trybie bo praca w trybie ARM
    (tylko 32bit instrukcje) tam nie istnieje.
    Thumb-2 łączy w sobie zarówno ARM jak i Thumb (wielkość
    opcode dla instrukcji może być 16 lub 32 bit).

    SM


  • 8. Data: 2010-05-06 14:03:12
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    SM pisze:
    > Witam,
    >
    > Zacząłem coś pisac na STM32F103 i mam problem z
    > GNU assembler (Sourcery G++ Lite).
    >
    > Wywołuję go: as.exe -mcpu=cortex-m3 -mthumb
    > I nie wiem czy aby poprawnie, bo nie łyka mi
    >
    > movs R11, #0x000B
    >
    > Pisze:
    > only lo regs allowed with immediate -- 'movs R11,#0x000B'
    >
    > Czy ten asembler się nie nadaje dla tego procka?
    > A może użyte opcje są niewłaściwe?
    >
    > Z góry dzięki za pomoc,
    > SM

    No i chyba znalazłem odpowiedź:
    -mthumb -march=armv7-m uaktywnia thumb-2
    do tego w kodzie .syntax unified.

    SM


  • 9. Data: 2010-05-06 14:12:15
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: cepu69 <c...@t...pl>

    Jacek Radzikowski wrote:

    > On 05/06/2010 02:00 AM, SM wrote:
    > [...]
    >> Wywołuję go: as.exe -mcpu=cortex-m3 -mthumb
    >> I nie wiem czy aby poprawnie, bo nie łyka mi
    >>
    >> movs R11, #0x000B
    >>
    >> Pisze:
    >> only lo regs allowed with immediate -- 'movs R11,#0x000B'
    >>
    >> Czy ten asembler się nie nadaje dla tego procka?
    >> A może użyte opcje są niewłaściwe?

    To jest wlasnie przyczyna
    > Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    > rejestrów R0-R7

    Wujek Googel mowi :

    gas/config/tc-arm.c :
    if (inst.operands[1].isreg)
    {
    (...)
    }
    else
    {
    if (inst.operands[0].reg > 7)
    {
    inst.error = _("only lo regs allowed with immediate");
    return;
    }


    Polecam zapoznanie sie z asemblerem procesora, np.
    http://theory.cs.uni-bonn.de/info5/system/parlab/dna
    rd/thumbquickref.pdf


  • 10. Data: 2010-05-06 14:22:41
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: SM <b...@k...com.pl>

    cepu69 pisze:
    > Jacek Radzikowski wrote:
    >
    >> On 05/06/2010 02:00 AM, SM wrote:
    >> [...]
    >>> Wywołuję go: as.exe -mcpu=cortex-m3 -mthumb
    >>> I nie wiem czy aby poprawnie, bo nie łyka mi
    >>>
    >>> movs R11, #0x000B
    >>>
    >>> Pisze:
    >>> only lo regs allowed with immediate -- 'movs R11,#0x000B'
    >>>
    >>> Czy ten asembler się nie nadaje dla tego procka?
    >>> A może użyte opcje są niewłaściwe?
    >
    > To jest wlasnie przyczyna
    >> Kompilujesz w trybie thumb, a tam zdaje się masz dostęp tylko do
    >> rejestrów R0-R7
    >
    > Wujek Googel mowi :
    >
    > gas/config/tc-arm.c :
    > if (inst.operands[1].isreg)
    > {
    > (...)
    > }
    > else
    > {
    > if (inst.operands[0].reg > 7)
    > {
    > inst.error = _("only lo regs allowed with immediate");
    > return;
    > }
    >
    >
    > Polecam zapoznanie sie z asemblerem procesora, np.
    > http://theory.cs.uni-bonn.de/info5/system/parlab/dna
    rd/thumbquickref.pdf

    Cortex-M3 nie ma thumb, tylko thumb-2 i wtedy ma dostęp
    do wszystkich rejestrów.
    -mthumb jest OK, brakowało mi "-march=armv7-m" - to przełącza
    gcc na thumb-2 a .syntax unified "łączy" ARM i thumb.

    SM

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: