|
|
  |
remap s3c2440 |
|
|
|
Jun 5 2011, 20:15
|
Группа: Validating
Сообщений: 5
Регистрация: 6-03-11
Пользователь №: 63 437

|
Почитав форум понял, что традиционно для работы прерываний выделяют область памяти в RAM под вектора прерываний, переписывают туда таблицу, далее (чтобы отобразить адрес начала SDRAM в 0х0) делают ремап, конфигурируя соответствующий регистр процессора (в общем случае MC_BASE). В описании процессора s3c2440 я не нашел необходимого регистра, есть аналог, в котором конфигурируют кучу всего, типа разрядности шины, таймингов и пр., но только не remap. Таким образом, не понятно, как организовать ремап для указанного процессора. Может, есть другие местоды ремапа, помимо описанного?
|
|
|
|
|
Jun 5 2011, 20:42
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(valenok @ Jun 5 2011, 23:15)  Почитав форум понял, что традиционно для работы прерываний выделяют область памяти в RAM под вектора прерываний, переписывают туда таблицу, далее (чтобы отобразить адрес начала SDRAM в 0х0) делают ремап, конфигурируя соответствующий регистр процессора (в общем случае MC_BASE). В описании процессора s3c2440 я не нашел необходимого регистра, есть аналог, в котором конфигурируют кучу всего, типа разрядности шины, таймингов и пр., но только не remap. Таким образом, не понятно, как организовать ремап для указанного процессора. Может, есть другие местоды ремапа, помимо описанного? У ARM-ов ремап может быть и в верхние адреса. Это устанавливается кажется в 14-ом сопроцессоре. Что там у вас в верхних адресах?
|
|
|
|
|
Jun 6 2011, 18:07
|
Группа: Validating
Сообщений: 5
Регистрация: 6-03-11
Пользователь №: 63 437

|
Спасибо, господа, видимо, слона-то я и не приметил. Читал про MMU и 15-ый сопроцессор, сложилось впечатление, что эти штуки только для ОС актуальны, прочту более внимательно.
Сообщение отредактировал valenok - Jun 6 2011, 18:07
|
|
|
|
|
Mar 1 2012, 17:46
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 2-02-11
Пользователь №: 62 660

|
Чтобы не плодить тем, так-как вопрос похожий, собственно а как отлаживать приложение в RAM, ведь в рам заливаем по адресу 0x30000000 И по тому же адресу лежит таблица прерываний и соответственно как только у нас будет прерывание произойдет прыжок по 0 адресу а там например режит старая прошивка(или вобще другая прошивка) и получится фиг знает что.
Или я чегото не понимаю?
|
|
|
|
|
Mar 1 2012, 21:11
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 2-02-11
Пользователь №: 62 660

|
Ну и куда копать чтобы ядро считало адрес 0x30000000 логическим 0?
|
|
|
|
|
Mar 1 2012, 21:46
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 2-02-11
Пользователь №: 62 660

|
Но вы же писали что спомощью MMU можно только замапить либо в 0x00000000 либо в 0xffff0000 Цитата У 2440 имеется MMU, с его помощью можно расположить таблицу векторов из произвольной физической страницы на любой из двух возможных позиций - 0x00000000 и 0xffff0000 (последнее выбирается битом V регистра c1 cp15)
|
|
|
|
|
Mar 2 2012, 11:23
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 2-02-11
Пользователь №: 62 660

|
Спасибо большое. Последний нубский вопрос. Допустим стоит задача отлаживать u-boot который я гружу в рам. Я правильно понимаю что моя последовательность дествия такая(допустим использую OpenOCD хотя не принципиально что). То мои действия такие. Я Инициализирую SDRAM и иницализирую MMU и ремаплю таблицу прерываний. Потом заливаю в оперативку u-boot и передаю ему управление. И все должно быть ок. С ядром линукса тоже все будет ок? Он же MMU сам настраивает, как тогда с ним быть?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|