Я пытаюсь загрузить мое маленькое ядро 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.
Бест,
В.
У вас есть предоплата от формы? Может ли запись генерировать прерывание? Вы видите ту же проблему при записи в смещение # 0x8 (светодиоды)? – unixsmurf
У меня такая же проблема, что и запись смещения # 0x8 для светодиода. Поскольку в этот момент у меня нет настроек mmu (очень ранняя загрузка), у меня нет настройки вектора исключения в то время. Вы правы, я должен попытаться добавить проверку, если произойдет исключение. Я дам вам знать, когда я смогу проверить ваше предложение. – Vinz
Спасибо @unixsmurf, я действительно столкнулся с исключением (по словам человека V8 ref man, он помечен как «Текущий уровень исключения с SP_ELx, синхронный»). Я попытаюсь выяснить, что не так (я читал о каком-то регистре синдрома, который я должен прочитать). – Vinz