Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: remap s3c2440
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
valenok
Почитав форум понял, что традиционно для работы прерываний выделяют область памяти в RAM под вектора прерываний, переписывают туда таблицу, далее (чтобы отобразить адрес начала SDRAM в 0х0) делают ремап, конфигурируя соответствующий регистр процессора (в общем случае MC_BASE). В описании процессора s3c2440 я не нашел необходимого регистра, есть аналог, в котором конфигурируют кучу всего, типа разрядности шины, таймингов и пр., но только не remap. Таким образом, не понятно, как организовать ремап для указанного процессора. Может, есть другие местоды ремапа, помимо описанного?
AlexandrY
Цитата(valenok @ Jun 5 2011, 23:15) *
Почитав форум понял, что традиционно для работы прерываний выделяют область памяти в RAM под вектора прерываний, переписывают туда таблицу, далее (чтобы отобразить адрес начала SDRAM в 0х0) делают ремап, конфигурируя соответствующий регистр процессора (в общем случае MC_BASE). В описании процессора s3c2440 я не нашел необходимого регистра, есть аналог, в котором конфигурируют кучу всего, типа разрядности шины, таймингов и пр., но только не remap. Таким образом, не понятно, как организовать ремап для указанного процессора. Может, есть другие местоды ремапа, помимо описанного?


У ARM-ов ремап может быть и в верхние адреса. Это устанавливается кажется в 14-ом сопроцессоре. Что там у вас в верхних адресах?
aaarrr
У 2440 имеется MMU, с его помощью можно расположить таблицу векторов из произвольной физической страницы на любой из двух возможных позиций - 0x00000000 и 0xffff0000 (последнее выбирается битом V регистра c1 cp15).
Отдельного механизма ремапинга может не существовать за ненадобностью.
valenok
Спасибо, господа, видимо, слона-то я и не приметил. Читал про MMU и 15-ый сопроцессор, сложилось впечатление, что эти штуки только для ОС актуальны, прочту более внимательно.
a1ien
Чтобы не плодить тем, так-как вопрос похожий, собственно а как отлаживать приложение в RAM, ведь в рам заливаем по адресу 0x30000000
И по тому же адресу лежит таблица прерываний и соответственно как только у нас будет прерывание произойдет прыжок по 0 адресу а там например режит старая прошивка(или вобще другая прошивка) и получится фиг знает что.

Или я чегото не понимаю?
aaarrr
0 логический (с которым оперирует ядро) совсем не обязательно является 0 физическим.
a1ien
Ну и куда копать чтобы ядро считало адрес 0x30000000 логическим 0?
aaarrr
Копать в сторону MMU.
a1ien
Но вы же писали что спомощью MMU можно только замапить либо в 0x00000000 либо в 0xffff0000
Цитата
У 2440 имеется MMU, с его помощью можно расположить таблицу векторов из произвольной физической страницы на любой из двух возможных позиций - 0x00000000 и 0xffff0000 (последнее выбирается битом V регистра c1 cp15)
aaarrr
Нет, такого я не писал.

0x00000000 и 0xffff0000 - логические адреса, которые видит и по которым ходит ядро. С помощью MMU можно "замапить" тот же 0x30000000 в 0 или в 0xffff0000 или куда угодно еще.
a1ien
Спасибо большое. Последний нубский вопрос.
Допустим стоит задача отлаживать u-boot который я гружу в рам. Я правильно понимаю что моя последовательность дествия такая(допустим использую OpenOCD хотя не принципиально что). То мои действия такие.
Я Инициализирую SDRAM и иницализирую MMU и ремаплю таблицу прерываний. Потом заливаю в оперативку u-boot и передаю ему управление.
И все должно быть ок.
С ядром линукса тоже все будет ок? Он же MMU сам настраивает, как тогда с ним быть?
aaarrr
Цитата(a1ien @ Mar 2 2012, 15:23) *
Я Инициализирую SDRAM и иницализирую MMU и ремаплю таблицу прерываний. Потом заливаю в оперативку u-boot и передаю ему управление.
И все должно быть ок.
С ядром линукса тоже все будет ок? Он же MMU сам настраивает, как тогда с ним быть?

Можно не трогать MMU и не использовать прерывания в u-boot - он вполне спокойно обходится и без них.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.