Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: user & privilege mode
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
pitt
Cortex-M имеет режим пользователя и супервизора. Все пользовательские приложения выполняются в режиме пользователя, а прерывания в режиме супервизора. Вопрос: как узнать из функции откуда она вызвана.
Спасибо.
prottoss
Цитата(pitt @ Feb 20 2013, 06:09) *
Вопрос: как узнать из функции откуда она вызвана.
Вызывать функцию с параметром:
void MyFync(bool who_called){...}
alx2
Цитата(pitt @ Feb 20 2013, 05:09) *
Вопрос: как узнать из функции откуда она вызвана.

Если я правильно понял вопрос, то узнать текущий режим можно чтением control регистра. Бит 0 определяет, находится ли процессор в привилегированном режиме или нет.
pitt
Цитата(alx2 @ Feb 20 2013, 01:15) *
Если я правильно понял вопрос, то узнать текущий режим можно чтением control регистра. Бит 0 определяет, находится ли процессор в привилегированном режиме или нет.

Совершенно верно. Только не годится для М0. Можно бит 1 - он показывает какой стек в работе. А еще можно unsigned __get_IPSR(void);
Все RTOS, которые рзделяют режим пользователя и супервизора гоняют приложения, естественно, в пользовательском режиме,а вот прерывания,те все равно в привелигированном, а поэтому используются 2 набора функций соответственно os_ и isr_. Я написал middleware, которое и определяет, какую функцию вызывать, а вот приложение этой проблемой больше не озабочено.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.