eGospodarka.pl
eGospodarka.pl poleca

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

  • 11. Data: 2010-05-06 16:51:04
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: cepu69 <c...@t...pl>

    SM wrote:

    > 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?
    >>
    (..)

    >
    > Cortex-M3 nie ma thumb, tylko thumb-2 i wtedy ma dostęp
    > do wszystkich rejestrów.
    Niekoniecznie :
    http://www.arm.com/files/pdf/IntroToCortex-M3.pdf
    "The Cortex-M3 core contains a decoder for
    traditional Thumb and new Thumb-2 instructions"

    > -mthumb jest OK, brakowało mi "-march=armv7-m" - to przełącza
    > gcc na thumb-2 a .syntax unified "łączy" ARM i thumb.
    Czlowiek uczy sie cale zycie :)

    eCos http://ecos.sourceware.org/ (pozwole sobie na drobna reklame)
    ma ustawine opcje gcc takie jak uzywales poczatkowo
    -mcpu=cortex-m3 -mthumb
    i jak najbardziej wykorzystywane sa instrukcje thumb-2
    (...)
    .syntax unified
    .thumb
    (...)
    .global hal_switch_state_vsr
    .thumb
    .thumb_func
    .type hal_switch_state_vsr, %function
    hal_switch_state_vsr:

    mov r0,#CYGNUM_HAL_CORTEXM_PRIORITY_MAX
    msr basepri,r0
    ^^^^^^^
    to jest raczej thumb-2
    mov r0,#2 // Set CONTROL register to 2
    msr control,r0
    isb // Insert a barrier

    Dziwnie to wyglada jak dla mnie.

    BTW.
    http://infocenter.arm.com/help/index.jsp?topic=/com.
    arm.doc.ddi0337e/Chdbhfja.html

    2.3.1. General-purpose registers

    The general-purpose registers r0-r12 have no special architecturally-defined
    uses. Most instructions that can specify a general-purpose register can
    specify r0-r12.

    Low registers

    Registers r0-r7 are accessible by all instructions that specify a
    general-purpose register.
    High registers

    Registers r8-r12 are accessible by all 32-bit instructions that specify
    a general-purpose register.

    Registers r8-r12 are not accessible by all 16-bit instructions.



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

    > ...
    > Dziwnie to wyglada jak dla mnie.
    >
    > BTW.
    > http://infocenter.arm.com/help/index.jsp?topic=/com.
    arm.doc.ddi0337e/Chdbhfja.html
    >
    > 2.3.1. General-purpose registers
    >
    > The general-purpose registers r0-r12 have no special architecturally-defined
    > uses. Most instructions that can specify a general-purpose register can
    > specify r0-r12.
    >
    > Low registers
    >
    > Registers r0-r7 are accessible by all instructions that specify a
    > general-purpose register.
    > High registers
    >
    > Registers r8-r12 are accessible by all 32-bit instructions that specify
    > a general-purpose register.
    >
    > Registers r8-r12 are not accessible by all 16-bit instructions.
    >
    >

    Jest dokładnie tak jak piszesz. Podstawa to ".syntax unified".

    Cortex-M3 używa Thumb-2, a więc łączy on ARM (32 bitowe
    instrukcje) i Thumb (16 bitowe instrukcje) "na raz"-
    nie trzeba przestawiać procka do pracy w tryb tylko ARM
    albo tylko Thumb.

    Napisałem program używając zarówno instrukcji ARM 32-bit jak
    i Thumb 16-bit w trybie asemblera Thumb-2.

    Potem to wylistowałem. Efekt był taki, że w Thumb-2 można
    używać zarówno instrukcji ARM jak i Thumb a asembler
    sam wstawia odpowiednie opcode. Jeśli instrukcja jest
    dozwolona jako Thumb 16bit, wstawia opcode 16bit,
    jeśli tylko jako ARM 32bit wstawia opcode 32bit.

    SM


  • 13. Data: 2010-05-07 06:09:16
    Temat: Re: STM32 i GNU assembler - problem z movs
    Od: Adam Dybkowski <a...@4...pl>

    W dniu 2010-05-06 08:00 SM napisał(a):
    > 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 pom



    lrrrrsaqqwr

    --
    Adam Dybkowski
    http://dybkowski.net/

    U/waga: przed wysłaniem do mnie maila usuń cyfry z adresu.


    -

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: