К вопросу об Армах.
Кто-нибудь использовал ARM9 (не Cortex, точнее ARM926)? У меня вопрос по настройки стека. Суть проблемы в следующем:
При старте процессору необходимо установить указатели на стеки. Их четыре. Один устанавливает linker. В программе нам нужно указать еще три: для software interrupt, irq и fiq. При старте процессор находится в User mode и поэтому инструкции по установке указателей стека не выполняются. Чтобы перевести в Supervisor или System mode, необходимо вызвать software прерывание и в нем изменить режим. Проблема только в том, что в обработчике прерывания необходимо использовать стек, который необходимо установить. Вот такой замкнутый круг.
Точно, регистр указывает на User mode. У меня есть идеи насчет boot mode ножек, но, думаю, это не спасет дело. На данный момент эта задача не столь приоритетная, но решать ее все равно придется. Сейчас возле точки входа в приложение вызываю software прерывание, т.к. стека нет, а регистры использовать надо, то перетираю два регистра и устанавливаю указатели на стек. Решение в лоб, пока хотя бы так.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
5 комментариев
Кто-нибудь использовал ARM9 (не Cortex, точнее ARM926)? У меня вопрос по настройки стека. Суть проблемы в следующем:
При старте процессору необходимо установить указатели на стеки. Их четыре. Один устанавливает linker. В программе нам нужно указать еще три: для software interrupt, irq и fiq. При старте процессор находится в User mode и поэтому инструкции по установке указателей стека не выполняются. Чтобы перевести в Supervisor или System mode, необходимо вызвать software прерывание и в нем изменить режим. Проблема только в том, что в обработчике прерывания необходимо использовать стек, который необходимо установить. Вот такой замкнутый круг.