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

 
 
> Загрузка адреса метки в регистр для STM32.
Omnicake
сообщение Apr 17 2014, 07:24
Сообщение #1


Участник
*

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



Здравствуйте. Работаю в среде keil uvision 5.0 для процессора stm32f10x и пытаюсь написать простейший диспетчер (scheduler), который бы на основе статуса и текущего тика задачи, завершал её или переключал на другую с сохранением регистров. Сделал структуру дескрипторов под задачи, задал их в отдельном файле, а в асмовском файле организовал метку TaskTablePointer - указатель на начало таблицы дескрипторов, TaskTableStart и TaskTableEnd для начала и конца таблицы дескрипторов. Но потом столкнулся с проблемой: на TMSC55 в регистр можно было загрузить адрес метки (командой mov #TaskPointer, ar0), затем из адреса этой метки путем команды mov dbl(*ar0) ac0 можно извлекать определенные параметры дескриптора. А вот в cortex-m3 с его ассемблером запись mov r0, TaskPointer (и вариации с #) выдает ошибку, пишет что нужна константа. Отсюда два вопроса: есть ли возможность загрузки адреса метки в регистр? А также сразу в догонку: подскажите аналог обозначения dbl(*ar0)? Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Omnicake
сообщение Apr 17 2014, 08:50
Сообщение #2


Участник
*

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



Пробовал LDR R0, =TaskPointer. Ошибок не нашло, но в дизассемблере какими-то хитрыми махинациями с регистрами R1-R7 в R0 записались нули. Не уверен, что это правильно, ведь метка должна иметь ненулевой адрес, или его надо задать вручную сначала?

На mov r0,=TaskPointer выдает ..\..\scheduler.asm(29): error: A1647E: Bad register name symbol, expected Integer register
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 17 2014, 10:03
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Omnicake @ Apr 17 2014, 12:50) *
На mov r0,=TaskPointer выдает ..\..\scheduler.asm(29): error: A1647E: Bad register name symbol, expected Integer register
Ну так вы почитайте описание системы команд...

Зачем вы изобретаете велосипед?
LDR R0, =TaskPointer
делает именно то, что нужно..


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



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

 


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


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