реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> remap s3c2440
valenok
сообщение Jun 5 2011, 20:15
Сообщение #1





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



Почитав форум понял, что традиционно для работы прерываний выделяют область памяти в RAM под вектора прерываний, переписывают туда таблицу, далее (чтобы отобразить адрес начала SDRAM в 0х0) делают ремап, конфигурируя соответствующий регистр процессора (в общем случае MC_BASE). В описании процессора s3c2440 я не нашел необходимого регистра, есть аналог, в котором конфигурируют кучу всего, типа разрядности шины, таймингов и пр., но только не remap. Таким образом, не понятно, как организовать ремап для указанного процессора. Может, есть другие местоды ремапа, помимо описанного?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 5 2011, 20:42
Сообщение #2


Ally
******

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



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


У ARM-ов ремап может быть и в верхние адреса. Это устанавливается кажется в 14-ом сопроцессоре. Что там у вас в верхних адресах?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 5 2011, 21:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



У 2440 имеется MMU, с его помощью можно расположить таблицу векторов из произвольной физической страницы на любой из двух возможных позиций - 0x00000000 и 0xffff0000 (последнее выбирается битом V регистра c1 cp15).
Отдельного механизма ремапинга может не существовать за ненадобностью.
Go to the top of the page
 
+Quote Post
valenok
сообщение Jun 6 2011, 18:07
Сообщение #4





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



Спасибо, господа, видимо, слона-то я и не приметил. Читал про MMU и 15-ый сопроцессор, сложилось впечатление, что эти штуки только для ОС актуальны, прочту более внимательно.


Сообщение отредактировал valenok - Jun 6 2011, 18:07
Go to the top of the page
 
+Quote Post
a1ien
сообщение Mar 1 2012, 17:46
Сообщение #5


Участник
*

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



Чтобы не плодить тем, так-как вопрос похожий, собственно а как отлаживать приложение в RAM, ведь в рам заливаем по адресу 0x30000000
И по тому же адресу лежит таблица прерываний и соответственно как только у нас будет прерывание произойдет прыжок по 0 адресу а там например режит старая прошивка(или вобще другая прошивка) и получится фиг знает что.

Или я чегото не понимаю?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 1 2012, 20:36
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



0 логический (с которым оперирует ядро) совсем не обязательно является 0 физическим.
Go to the top of the page
 
+Quote Post
a1ien
сообщение Mar 1 2012, 21:11
Сообщение #7


Участник
*

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



Ну и куда копать чтобы ядро считало адрес 0x30000000 логическим 0?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 1 2012, 21:22
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Копать в сторону MMU.
Go to the top of the page
 
+Quote Post
a1ien
сообщение Mar 1 2012, 21:46
Сообщение #9


Участник
*

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



Но вы же писали что спомощью MMU можно только замапить либо в 0x00000000 либо в 0xffff0000
Цитата
У 2440 имеется MMU, с его помощью можно расположить таблицу векторов из произвольной физической страницы на любой из двух возможных позиций - 0x00000000 и 0xffff0000 (последнее выбирается битом V регистра c1 cp15)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 1 2012, 21:55
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Нет, такого я не писал.

0x00000000 и 0xffff0000 - логические адреса, которые видит и по которым ходит ядро. С помощью MMU можно "замапить" тот же 0x30000000 в 0 или в 0xffff0000 или куда угодно еще.
Go to the top of the page
 
+Quote Post
a1ien
сообщение Mar 2 2012, 11:23
Сообщение #11


Участник
*

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



Спасибо большое. Последний нубский вопрос.
Допустим стоит задача отлаживать u-boot который я гружу в рам. Я правильно понимаю что моя последовательность дествия такая(допустим использую OpenOCD хотя не принципиально что). То мои действия такие.
Я Инициализирую SDRAM и иницализирую MMU и ремаплю таблицу прерываний. Потом заливаю в оперативку u-boot и передаю ему управление.
И все должно быть ок.
С ядром линукса тоже все будет ок? Он же MMU сам настраивает, как тогда с ним быть?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 2 2012, 12:12
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(a1ien @ Mar 2 2012, 15:23) *
Я Инициализирую SDRAM и иницализирую MMU и ремаплю таблицу прерываний. Потом заливаю в оперативку u-boot и передаю ему управление.
И все должно быть ок.
С ядром линукса тоже все будет ок? Он же MMU сам настраивает, как тогда с ним быть?

Можно не трогать MMU и не использовать прерывания в u-boot - он вполне спокойно обходится и без них.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 07:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01517 секунд с 7
ELECTRONIX ©2004-2016