2014-09-18 2 views
0

Я пытаюсь загрузить мое маленькое ядро ​​ARMv7 (которое отлично работает с использованием модели qemu vexpress) в ARMv8 Foundation Model v2.1. Модель загружается на уровне EL3/64 бит, и мне удалось спуститься до уровня EL1/32 бит, но я столкнулся с некоторыми проблемами (в нескольких словах таймер не гаснет, а некоторые kprintf отсутствуют, но это не выпуск здесь).ARMv8 Foundation Model: переключатели и светодиоды

Чтобы отладить мою проблему с UART, я хотел использовать светодиоды/переключатели, предоставляемые моделью. Я могу легко оценить их ценность из программного обеспечения, но я не могу написать новое значение ни одному из них. Ядро, похоже, виснет. Здесь минимальный код ASM, который записывает переключатели регистр:

.global Start 
Start: 
    # we are in EL3/64 bits mode 
    # create the 0x1C010000 + 0x4 address of switches 
    mov x0, #4 
    movk x0, #0x1c01, lsl #16 
    # value to write 
    mov w1, #0xaa 
    # actual writing 
    strb w1, [x0] 

Кажется, я застрял в strb инструкции. Для записи, если я заменил strb на ldrb, я могу правильно прочитать и отобразить значение этого регистра (я играл с флагом --switches, чтобы убедиться, что он сработал).

Любой знает, что я делаю неправильно здесь?

EDIT: благодаря предложениям unixsmurf, теперь я знаю, что у меня синхронное исключение данных Abort Exception без изменения уровня, и причина в том, что это «синхронный внешний прерывание». Я не знаю, как проверить дальше, я думаю, я попробую форум ARM.

Бест,

В.

+0

У вас есть предоплата от формы? Может ли запись генерировать прерывание? Вы видите ту же проблему при записи в смещение # 0x8 (светодиоды)? – unixsmurf

+0

У меня такая же проблема, что и запись смещения # 0x8 для светодиода. Поскольку в этот момент у меня нет настроек mmu (очень ранняя загрузка), у меня нет настройки вектора исключения в то время. Вы правы, я должен попытаться добавить проверку, если произойдет исключение. Я дам вам знать, когда я смогу проверить ваше предложение. – Vinz

+0

Спасибо @unixsmurf, я действительно столкнулся с исключением (по словам человека V8 ref man, он помечен как «Текущий уровень исключения с SP_ELx, синхронный»). Я попытаюсь выяснить, что не так (я читал о каком-то регистре синдрома, который я должен прочитать). – Vinz

ответ

0

тонарма сообщество наконец-то решить эту проблему. Полное обсуждение можно найти here.