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

 
 
> Чтение внутренних регистров 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
Ответов
Forger
сообщение May 16 2016, 14:31
Сообщение #2


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(hardgame @ May 16 2016, 17:10) *
Есть ли способ чтения внутренних регистров, возможно средствами cmsis, или нужно создавать asm раздел и увязывать?

Я бы переписал существующий код так, чтобы вообще не приходилось лазить во внутренние регистры проца,
ибо рано или поздно эта "самодеятельность" еще проявит себя, причем, самым неожиданным способом smile3046.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 16 2016, 14:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Forger @ May 16 2016, 20:31) *
Я бы переписал существующий код так, чтобы вообще не приходилось лазить во внутренние регистры проца, ибо рано или поздно эта "самодеятельность" еще проявит себя, причем, самым пакостным способом, какой только можно себе вообразить smile3046.gif
А если это планировщик задач? rolleyes.gif


--------------------
Go to the top of the page
 
+Quote Post
Forger
сообщение May 16 2016, 14:44
Сообщение #4


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(prottoss @ May 16 2016, 17:35) *
А если это планировщик задач? rolleyes.gif

Планировщик прекрасно целиком пишется на голом C.
Вот переключение контекста нужно писать на asm (или на C c asm вставками целиком функций), но эти "порты" можно выдрать с любой годной оси (под KEIL или под нужную среду)
и переписать их под себя, коли так уже нужна самодельная ось.
Как-то помню возился и делал сам порт под Cortex-M0+, имея на руках тока порт под M3.
Мартышкин труд, промудохался помню много, потом открыл примеры других осей под M0 и дело пошло быстрее sm.gif


Вот пример (кусок С-файла):

CODE
__asm void SVC_Handler (void)
{
movs R0, #4
mov R1, LR
tst R0, R1
beq msp_stacked

psp_stacked
mrs R0,PSP // Read PSP
b done

msp_stacked
mrs R0,MSP // Read MSP

done
ldr R1,[R0,#24] // Read Saved PC from Stack
subs R1,R1,#2 // Point to SVC Instruction
ldrb R1,[R1] // Load SVC index
cmp R1,#0
beq svc_0 // SVC0
cmp R1,#1
beq svc_1 // SVC1
cmp R1,#2
beq svc_2 // SVC2

svc_0
ldr R0, =__cpp(&tn_start_first_task)
bx R0

svc_1
ldr R0, =__cpp(&tn_tick_int_processing)
bx R0

svc_2
ldr R0, =__cpp(&tn_timer)
bx R0

ALIGN
}


Сообщение отредактировал IgorKossak - May 16 2016, 17:46
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hardgame   Чтение внутренних регистров STM32   May 16 2016, 14:10
||- - prottoss   Цитата(Forger @ May 16 2016, 20:44) Вот п...   May 16 2016, 16:17
|- - scifi   Цитата(Forger @ May 16 2016, 17:31) Я бы ...   May 16 2016, 15:05
- - Alechek   Единственное, для чего мне это понадобилось, это с...   May 16 2016, 16:09
|- - adnega   Цитата(Alechek @ May 16 2016, 19:09) Един...   May 16 2016, 16:20
||- - aaarrr   Цитата(adnega @ May 16 2016, 19:20) Зачем...   May 16 2016, 19:42
||- - 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:07
Рейтинг@Mail.ru


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