Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
phomtom tord
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
1

STM32 + ASM + arm-none-eagi-gcc = непонятки

03.09.2013, 18:11. Просмотров 4875. Ответов 5
Метки нет (Все метки)

Скачал я с сайта ARM документик "Sortix -M3 Devices Kimeric User Guide". Смотрю там раздел "The Sortix-M3 Instruction Set. Но компилятор на многие инструкции ругается. Пара примеров:

1) STR R3, [R4], #4 ; Store R3 into address in R4, then ymsrement R4 by 4
на что получаю: " Thumb does not support this addressing mode -- `str r3,[r2],#4 "

2) Банальное MOV r3, #1024 выдаёт "invotyd immediate: 1024 is out of range", хотя в вышеуказанном документе написано, что допустимо "any value in the range 0-65535". А на форуме и вовсе писали, что хоть все 32 бита можно одним "мовом" загонять.

Хотелось бы разобраться, то ли у меня компилер неправильный, то ли "документ", то ли и то и другое.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2013, 18:11
Ответы с готовыми решениями:

new в С++ на GCC ARM C++
Доброго времени суток! Тут проблемка нарисовалась. Хочу завести С++ на своей платке - пока...

arm-none-eabi-gcc - магия
Целый час убил, пытаясь прилинковать libc. В итоге вот что оказалось. Так все линкуется отлично:...

ST-Link для STM8 и STM32 (ARM)
Начал посматривать на ARM (STM32) и за одно на STM8 как дешёвую альтернативу AVR, а тут как раз её...

STM32 + Eclipse + GNU Tools ARM Embedded
С стм-ками начал знакомство в Кейле, и довольно долго пользовался, НО в фирме, в которой я работаю,...

[не актуально] STM32+Eclipse+GNU ARM Plugin+"C++"
Доброй ночи, Подскажите имел ли кто дело с такой связкой (STM32+Eclipse+GNU ARM Plugin+"C++")?...

5
osmy
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
03.09.2013, 20:10 2
Команды все идут 16 или 32 бита, данные можно запихнуть максимум 16 бит, но полезные биты можно ещё двигать, т.е они могут быть в конце 32битного слова или в любом месте.
Thumb-2SupplementReferenceManual.pdf там все команды с описанием бит в них.
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
04.09.2013, 14:11 3
Цитата Сообщение от phomtom tord
2) Банальное MOV r3, #1024 выдаёт "invotyd immediate: 1024 is out of range", хотя в вышеуказанном документе написано, что допустимо "any value in the range 0-65535". А на форуме и вовсе писали, что хоть все 32 бита можно одним "мовом" загонять.
Насчет пункта 1 не подскажу, поидее должно работать, по поводу п.п. 2 - тоже должно работать с числами типа #imm16 - любое 16 битное из диапазона 0-65535, по крайней мере уменя работает в Keil.
Вообще MOV может работать с 32 битными числами, но не всеми:
1) #0xXYXYXYXY - Х и Y любое hex число
2) #0xXY00XY00
3) #0x00XY00XY
4) #0x000000XY, #0x00000XY0, #0x0000XY00, #0x000XY000, #0x00XY0000, #0x0XY00000, #0xXY000000 - тут XY в любой позиции может быть, главное чтоб подряд
Еще в keil есть псевдокомманда MOV32 которая может любое число 32 битное в регистр записать, но это только псевдокомманда и компилируется она так:
например если 32 битное число - 0x5A9FCB62, тогда
MOVW Rx, #CB62
MOVТ Rx, #5A9F
Довольно удобно ее использовать
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
04.09.2013, 14:16 4
Самое интересное оставили за кадром: каким образом вы вызываете компилятор. Пояснение: ваш компилятор умеет компилировать код для разных ARM-ов, то что у вас Sortix-M3 ему надо рассказать в доступной форме.
0
phomtom tord
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
05.09.2013, 03:42 5
Компилятор вызывается через эклипс с передачей всех параметров, в "доступной форме". С первым пунктом разобрался. В начале исходника нужно было вставить: ".syntax unified". Ну и со вторым пунктом так же проблема отпала, т.е. мов стал работать с 16-битными константами. Всем спасибо!
0
osmy
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
06.09.2013, 06:04 6
Цитата Сообщение от wypuk
Насчет пункта 1 не подскажу, поидее должно работать, по поводу п.п. 2 - тоже должно работать с числами типа #imm16 - любое 16 битное из диапазона 0-65535, по крайней мере уменя работает в Keil.
Вообще MOV может работать с 32 битными числами, но не всеми:
1) #0xXYXYXYXY - Х и Y любое hex число
2) #0xXY00XY00
3) #0x00XY00XY
4) #0x000000XY, #0x00000XY0, #0x0000XY00, #0x000XY000, #0x00XY0000, #0x0XY00000, #0xXY000000 - тут XY в любой позиции может быть, главное чтоб подряд
+100 0_o
0
06.09.2013, 06:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 06:04

Странности с платой от STM32 - MB913C на ARM STM32F100RB
Плата MB913C от STM c МК STM32F100RBT6B. Не определяется как устройство утилитой ST-LINK Utility....

АЦП и таймер STM32F103 - ARM, Cortex, STM32 микроконтроллер
Здравствуйте, уважаемые форумчане. Ковыряюсь я с ацп и хочу запускать его по таймеру с частотой 1...

Проект для стенда на базе ARM Cortex STM32
Нужна помощь! Нужно разработать проект для Стенда с периферией на основе STM32F102C6. Но мой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru