Skocz do zawartości

ARM Wstawki do asemblera CrossWorks


Pomocna odpowiedź

Napisano

Witam,
czy ma ktoś jakiś opis, który pokazuje jak pisać wstawki w asemblerze do C w CrossWorks?

Próbowałem stworzyć plik *.s i dorzucić tam takie coś:

   .text  32
   global func
func:
   add    r0, r0, r0
   bx     lr

niestety dostaję błąd:

Error: bad instruction `global func'.

Próbowałem też pisać w instrukcjach __asm__(""), ale także dostaję różne błędy o

nierozpoznanych komendach. Może trzeba jakąś magiczną opcję w CrossWorks odpalić?

Z góry dzięki

CrossStudio używa gcc, więc możesz spróbować takiej składni:

asm volatile ( 
	"STMDB	SP!, {R0}		\n"
	"MRS	R0, CPSR		\n"	
	"BIC	R0, R0, #0xC0	\n"	
	"MSR	CPSR, R0		\n"	
	"LDMIA	SP!, {R0}" );			

Coś chyba mam źle skonfigurowane, próbowałem pisać tak jak mi podałeś i niby jest ok, ale

CrossWorks ciągle krzyczy, że procesor STM32F103VE obsługuje jedynie instrukcję Thumb,

więc:

Error: selected processor does not support requested special purpose register -- `mrs R0,CPSR'

Ale ok, to jedna sprawa. Inna sprawa, to taka, że chodzi mi o pisanie wstawek w postaci

makr.

Mam np makro:

#define fx_float(a) ( a / (float)(1<

i chciałbym je przerobić na wstawkę asemblerową. Wie ktoś jak odnosić się do argumentów?

Widziałem, że należy wstawiać je po dwukropku, jednak skopiowany przykład z książki ARM

Developer's Guide wykrzacza błędy, jakoby instrukcje były nieobsługiwane..

EDIT:

Wstawiając tę samą funkcję co dałeś w poście wyżej do programu i zmieniając

Instruction Set z Thumb do ARM, dostaje komunikat:

target CPU does not support ARM mode

mimo, ze w dokumentaci: http://www.st.com/mcu/download2.php?file=14611.pdf&info=STM32F103VE%20Datasheet%20STM32F103xC-D-E&url=http://www.st.com/stonline/products/literature/ds/14611.pdf nie widzę informacji o tym, że obsługuje jedynie thumb. Może ktoś to trochę wyjaśnić? Zaczynam

się gubić..

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...