[an error occurred while processing this directive]
Про страничную организацию я знаю, этот вопрос решен, у меня (точнее у программеров) проблем с получением реального физического адреса(+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=Sergei=- 17 октября 2002 г. 13:08
В ответ на: Дело в том, что память страничная. Размер страницы 4096 байт. При выделении памяти размером больше страницы будет выделено несколько страниц. Беда в том, что страницы лежат в памяти не подряд, так что начальный адрес это только начало первой страницы, а остальные м.б. (практически всегда) физически совсем в других "уголках" памяти. Так что попадешь не туда. Либо надо выделять непрерывный кусок памяти (что на уровне юзера невозможно, только драйвером), либо передавать девайсу MDL всех страниц (это тем более драйвером, да и геморой еще тот). Я делал первым способом. отправлено Озадаченный 16 октября 2002 г. 20:26

Они якобы определяют физический адрес, но реально он оказывается не тем. Т.е. дoпустим у меня есть кусок меньше 4К. в нутри приложения я имею поинтер на него P, это фактически адрес, но внутри приложения, мне необходимо получить физический адрес, программеры пользуются какимито спец. функциями ядра Linux, вроде как в описании там даже написано, что эти функции возврашают физический адрес, поинтера, и есть даже флаги DMAENABLE, что вроде как даже должно позволить выделить более 4К. Но возврашаемый этой функций адрес, не является физическим, проверено дампом памяти.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru