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

 
 
> Чтение внутренних регистров 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 17 2016, 11:00
Сообщение #2


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

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



jcxz, если делать что-то бездумно - то возможны любые грабли.
А если подумать - компилятор пытается лишь сделать то, что от него просят. И не больше.
Головой думать надо, прежде что-то делать.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 17 2016, 11:10
Сообщение #3


Гуру
******

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



Цитата(Alechek @ May 17 2016, 14:00) *
И не больше.

Ну, ну. Я как-то на Си осмелился пописать под AVR. На меге8 килобайты флеш закончились настолько быстро, что захотелось узнать куда.
Листинг показал, что компилятор сохраняет в стек все регистры при вызове функций, даже неиспользуемые.
Отдельным приключением было сделать программный UART на Си - по тактам реализация очень неустойчива - на том краю планеты бабочка
махнет рукой (добавим, например, переменную в проект), а у нас пару лишних тактов в цикле задержки.
Что касается регистров, тактов и байтов - компилятор очень непредсказуемая штука.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение May 17 2016, 11:34
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(adnega @ May 17 2016, 14:10) *
Листинг показал, что компилятор сохраняет в стек все регистры при вызове функций, даже неиспользуемые.

Компилятор IAR так поступает при выключенной оптимизации (или невысоком уровне).
Go to the top of the page
 
+Quote Post
adnega
сообщение May 17 2016, 11:51
Сообщение #5


Гуру
******

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



Цитата(Копейкин @ May 17 2016, 14:34) *
Компилятор IAR так поступает при выключенной оптимизации (или невысоком уровне).

Тут советовали головой думать, но моя не может придумать - "зачем"?
Зачем неиспользуемые регистры складывать в стек??

Хотелось, чтобы основные "просьбы" к компилятору были в исходнике, а не различных ключах.
Именно поэтому есть задачки, не решаемые на С гарантированно, рассчитывать на здравый смысл компилятора я бы не стал.

Цитата(Alechek @ May 17 2016, 14:40) *
Да, и определитесь, что у вас закончилось, стек или флеш.... не вяжется как-то.

Прошу без эмоций определить, что быстрее заканчивается при таком подходе
Код
11e:    1f 92           push    r1
120:    0f 92           push    r0
122:    0f b6           in    r0, 0x3f; 63
124:    0f 92           push    r0
126:    11 24           eor    r1, r1
128:    2f 93           push    r18
12a:    3f 93           push    r19
12c:    4f 93           push    r20
12e:    5f 93           push    r21
130:    6f 93           push    r22
132:    7f 93           push    r23
134:    8f 93           push    r24
136:    9f 93           push    r25
138:    af 93           push    r26
13a:    bf 93           push    r27
13c:    ef 93           push    r30
13e:    ff 93           push    r31

Это еще годный код, т.к. не все регистры убираются в стек, а только используемые.
Я описывал ситуацию, когда банальная установка переменной оборачивалась push-ами и pop-ами для всех регистров.
В моем случае резко закончилась флеш, хотя и к глубине стека требования резко возрастают.
Перед использованием С этот же проект был реализован на asm. При 10% asm-функционала на С закончился флеш.
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
- - 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   Цитата(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 Текстовая версия Сейчас: 26th June 2025 - 00:52
Рейтинг@Mail.ru


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