Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CPSR_c в 00000
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
romez777
Приветствую.

Достался в наследство (к сожалению с минимумом документации; прежние разработчики также не уцелели smile.gif) простой бутлоадер для arm926ej-s платформы. Бут после инициализации чипа передает управление uC-OS/II.

И в начале после таблицы векторов наткнулся вот на такой код:

mrs r0, CPSR
orr r0, r0, #0xc0
msr cpsr_c, r0

(... далее здесь идет сброс кеша, инит MMU и пр. манипуляции )

Т.е. читаем cpsr и сбрасываем режим процессора в 00000. Непонятен смысл этого действия, может быть есть какое-то логическое обоснование?
GetSmart
Код
orr r0, r0, #0xc0

Эта команда (ORR) физически не умеет сбрасывать биты. Здесь она устанавливает 6-ой и 7-ой биты (от нуля) в "1", то есть биты запрета IRQ и FIQ (по крайней мере в ARM7) тем самым запрещая обработку всех прерываний.
romez777
Цитата(GetSmart @ Sep 19 2008, 06:14) *
Код
orr r0, r0, #0xc0

Эта команда (ORR) физически не умеет сбрасывать биты. Здесь она устанавливает 6-ой и 7-ой биты (от нуля) в "1", то есть биты запрета IRQ и FIQ (по крайней мере в ARM7) тем самым запрещая обработку всех прерываний.


Блин! Я совсем забыл, что это логический OR, а не AND - тогда все сходится smile.gif Спасибо, что сняли с ручника.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.