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

 
 
> Чтение внутренних регистров STM32
hardgame
сообщение May 16 2016, 14:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 15-08-12
Из: Украина
Пользователь №: 73 140



В стареньком ADS 1.2 можно было в функции С делать вставку inline asm ссылкой сразу на внутренние регистры r0-r15. Столкнулся в Кеил, что предыдущие inline asm не компилится. А вот что нашел в доках
"The inline assembler provides no direct access to the physical registers of an ARM processor. If an ARM register name is used as an operand in an inline assembler instruction it becomes a reference to a variable of the same name, and not the physical ARM register."
Есть ли способ чтения внутренних регистров, возможно средствами cmsis, или нужно создавать asm раздел и увязывать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alechek
сообщение May 16 2016, 16:09
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Единственное, для чего мне это понадобилось, это скинуть дамп регистров при возникновении Fault.
Пришлось написать вставку на ASM для копирования регистров в память (структуру). Остальная работа на C.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 16 2016, 16:20
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Alechek @ May 16 2016, 19:09) *
Единственное, для чего мне это понадобилось, это скинуть дамп регистров при возникновении Fault.
Пришлось написать вставку на ASM для копирования регистров в память (структуру). Остальная работа на C.

Зачем копировать? Там уже все в стеке (правда, нужно определить правильный стек).
CODE
.global HardFaultException
.extern print_fault
HardFaultException:
mov r0, sp
push {lr}
bl print_fault
pop {pc}

void print_fault(sFAULT *fault)
{
con_str("FAULT:\n\r");
con_str("r0 = "); con_dword(fault->r0); con_str(", ");
con_str("r1 = "); con_dword(fault->r1); con_str(", ");
con_str("r2 = "); con_dword(fault->r2); con_str(", ");
con_str("r3 = "); con_dword(fault->r3); con_str("\n\r");
con_str("r12 = "); con_dword(fault->r12); con_str(", ");
con_str("lr = "); con_dword(fault->lr); con_str(", ");
con_str("pc = "); con_dword(fault->pc); con_str(", ");
con_str("xpsr = "); con_dword(fault->xpsr); con_str("\n\r");
con_start();
}

typedef struct sFAULT
{
DWORD r0; //!< Регистр R0
DWORD r1; //!< Регистр R1
DWORD r2; //!< Регистр R2
DWORD r3; //!< Регистр R3
DWORD r12; //!< Регистр R12
DWORD lr; //!< Регистр LR
DWORD pc; //!< Регистр PC
DWORD xpsr; //!< Регистр XPSR
} sFAULT;

Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 16 2016, 19:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(adnega @ May 16 2016, 19:20) *
Зачем копировать? Там уже все в стеке

А R4-R11 где?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hardgame   Чтение внутренних регистров STM32   May 16 2016, 14:10
- - Forger   Цитата(hardgame @ May 16 2016, 17:10) Ест...   May 16 2016, 14:31
|- - prottoss   Цитата(Forger @ May 16 2016, 20:31) Я бы ...   May 16 2016, 14:35
||- - Forger   Цитата(prottoss @ May 16 2016, 17:35) А е...   May 16 2016, 14:44
||- - prottoss   Цитата(Forger @ May 16 2016, 20:44) Вот п...   May 16 2016, 16:17
|- - scifi   Цитата(Forger @ May 16 2016, 17:31) Я бы ...   May 16 2016, 15:05
||- - adnega   Цитата(aaarrr @ May 16 2016, 22:42) А R4-...   May 16 2016, 19:59
||- - aaarrr   Цитата(adnega @ May 16 2016, 22:59) Меня ...   May 16 2016, 20:27
||- - adnega   Цитата(aaarrr @ May 16 2016, 23:27) У мен...   May 16 2016, 20:38
||- - aaarrr   Цитата(adnega @ May 16 2016, 23:38) А на ...   May 16 2016, 21:24
|- - jcxz   Цитата(Alechek @ May 16 2016, 22:09) Един...   May 17 2016, 02:00
|- - Alechek   Цитата(jcxz @ May 17 2016, 07:00) И где г...   May 17 2016, 05:22
|- - jcxz   Цитата(Alechek @ May 17 2016, 11:22) __st...   May 17 2016, 08:48
|- - scifi   Цитата(jcxz @ May 17 2016, 11:48) Ещё раз...   May 17 2016, 09:01
|- - jcxz   Цитата(scifi @ May 17 2016, 15:01) Как гд...   May 17 2016, 10:33
- - prottoss   ИМХО - лучше всего сделать отдельный ассемблерный ...   May 16 2016, 16:21
- - hardgame   Всем Спасибо за комментарии. Регистры были необход...   May 16 2016, 17:35
- - Alechek   jcxz, если делать что-то бездумно - то возможны лю...   May 17 2016, 11:00
|- - adnega   Цитата(Alechek @ May 17 2016, 14:00) И не...   May 17 2016, 11:10
||- - Копейкин   Цитата(adnega @ May 17 2016, 14:10) Листи...   May 17 2016, 11:34
||- - adnega   Цитата(Копейкин @ May 17 2016, 14:34) Ком...   May 17 2016, 11:51
||- - Alechek   Цитата(adnega @ May 17 2016, 16:41) Зачем...   May 17 2016, 11:57
|- - jcxz   Цитата(Alechek @ May 17 2016, 17:00) jcxz...   May 18 2016, 05:05
- - Alechek   adnega, речь немного не про такой случай. Использо...   May 17 2016, 11:40
- - Alechek   jcxz, сравнивать неопределеность, исходящую от ком...   May 18 2016, 06:00


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 07:56
Рейтинг@Mail.ru


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