5 комментариев

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