реклама на сайте
подробности

 
 
> Вопросы по STM32f10x на Keil, Ошибка с PUSH, загрузка массивов, теневые регистры.
Omnicake
сообщение Apr 30 2014, 02:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 12-01-14
Из: Омск
Пользователь №: 80 002



Здравствуйте, хотелось узнать несколько подробностей по поводу работы с микропроцессором STM32f10x в Keil uVision 5:

1) На процессорах C55x на ассемблере командами:

AMOV #Label, xar0
MOV dbl(*ar0), xar0
MOV dbl(*ar0), xar0
MOV *ar0, ac0


Метка Label была указателем на массив, заданный во внешнем файле C, первые две команды mov выгружали каким-то образом сначала адрес массива, потом его структуру, а потом отдельный элемент.
Хотелось сделать аналог такой же выгрузки на STM32F10x но не нашел в Instruction Set аналога обозначения *ar0 – то есть выгрузки значения из адреса r0 (заменять на LDR?), а также что такое dbl и как зовется его аналог в Cortex-M3 командах.

2) Знаю, что в Cortex-M3 существуют так называемые "теневые регистры", которые, как я понял, включаются на момент прерывания. Как обозначаются эти регистры при работе с ними, и сохраняется ли их значения после выхода из прерывания?

Заранее спасибо.

Сообщение отредактировал Omnicake - Apr 30 2014, 04:22
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение May 1 2014, 07:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Omnicake @ Apr 30 2014, 08:57) *
1) На процессорах C55x на ассемблере командами:
AMOV #Label, xar0
MOV dbl(*ar0), xar0
MOV dbl(*ar0), xar0
MOV *ar0, ac0

си:
{
uint ac0 = *(typ *)*(void **)*(void **)Label;
}
typ здесь - это или signed short или unsigned short (в зависимости от соотв.флага C55-ядра).

асм Cortex:
Код
LDR R0, =Label;или ADR R0, Label - если Label находится в const-секции рядом с кодом
LDR R0, [R0]
LDR R0, [R0]
LDRSH R0, [R0] ;или LDRH R0, [R0] - см. выше
;R0==AC0

PS: Давненько не имел дела с C55x, может что напутал.
Но до сих пор помню, что конструкция приведённая Вами вызовет кучу stalls на C55x, так как написана очень плохо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016