|
Вопросы по STM32f10x на Keil, Ошибка с PUSH, загрузка массивов, теневые регистры. |
|
|
|
Apr 30 2014, 02:57
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Apr 30 2014, 04:52
|
Участник

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

|
1. Да, действительно нужно было регистры брать в фигурные скобки, спасибо. 2. Задача в том, что есть некий массив, в котором хранятся числа (например 1,2,3,4) из массива нужно в ассемблере вытаскивать только одно число, чтобы потом использовать его для сравнения. Как реализовать загрузку именно не всего массива, а одного числа на выбор (например только 2го по порядку, или последнего и.т.д.)? 3. Вот здесь http://www.arm.com/files/pdf/introToCortex-M3.pdf нашел такую строчку "To reduce gate count and enhance system flexibility the Cortex-M3 has migrated from the banked shadow register exception model of the ARM7 processor to a stack based exception model. When an exception takes place, the Program Counter, Program Status Register, Link Register and the R0-R3,R12 general purpose registers are pushed on to the stack." То есть как я понимаю перед входом и выходом в прерывание мне не нужно сохранять состояние регистров R0-R3, R12, LR, SR и PC, так как это делается автоматически?
|
|
|
|
|
Apr 30 2014, 06:56
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Omnicake @ Apr 30 2014, 08:52)  Вот здесь http://www.arm.com/files/pdf/introToCortex-M3.pdf нашел такую строчку "To reduce gate count and enhance system flexibility the Cortex-M3 has migrated from the banked shadow register exception model of the ARM7 processor to a stack based exception model. When an exception takes place, the Program Counter, Program Status Register, Link Register and the R0-R3,R12 general purpose registers are pushed on to the stack." То есть как я понимаю перед входом и выходом в прерывание мне не нужно сохранять состояние регистров R0-R3, R12, LR, SR и PC, так как это делается автоматически? Написано, что ушли от модели теневых регистров, принятой в ARM7, к модели сохранения регистров на стеке. Ничего сохранять/восстанавливать не нужно, если в прерывании используются только указанные регистры. Вообще, в Cortex-M практически все можно делать на C (startup, обработчики).
|
|
|
|
Сообщений в этой теме
Omnicake Вопросы по STM32f10x на Keil Apr 30 2014, 02:57 adnega 1. Попробуйте push {r0}. В скобках можно передават... Apr 30 2014, 04:26 Golikov A. чтобы получить доступ ко 2 элементу массива надо д... Apr 30 2014, 05:50 Omnicake Использование ассемблера обусловлено спецификой пр... Apr 30 2014, 06:48 Omnicake В дизассемблере происходят странные вещи:
... May 1 2014, 03:03 Сергей Борщ Omnicake, используйте, пожалуйста, кнопочку когда... May 1 2014, 06:33 Golikov A. Вы поставили уровень оптимизации проекта на 0? Изн... May 1 2014, 05:42 Omnicake Нет, стоит нулевой уровень оптимизации. May 1 2014, 06:00 Omnicake Извиняюсь, в дальнейшем не повторится. Спасибо бол... May 1 2014, 06:47 jcxz Цитата(Omnicake @ Apr 30 2014, 08:57) 1) ... May 1 2014, 07:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|