в общем. Но тебе в общем и надо, считай, обычная настройка ресурсов PCI-устройства. скажем так, в большинстве случаев DRAM по адресу A0000h-BFFFFh тебе будет и так недоступен, независимо от того, используется он (т.е. диапазон A0000h-BFFFFh) под видеопамять или нет.
shi Есть гарантии что LFB(это и есть вся видео память) окажется выше 2ГБ с вероятностью 99%. Выше 3ГБайт с вероятностью 90%. Всю не выйдет, а вот ограничение на одну две видео страница можно сделать. Лучше сделать через виртуальную память, о чем сказал Mika0x65. Про BAR расписана в спецификации на PCI. LFB это и есть вся память видео карты. Двигается путем переписывания BAR регистра в конфигурационном пространстве PCI. Разумеется в VBE про это не написано. LFB - это не буфер в основной памяти, это вся память видео карты. Так что подвинуть то можно, но сдвинуться все содержимое. Для древних видео карт драйвер эмулировал LFB, разумеется через основную память компьютера и подвинуть ее не возможно. FUNCTION 07H - SET/GET DISPLAY START может задать координаты откуда будут браться данные для отображения на экран. Координаты задаются относительно начала видео памяти. Можно вызывать из защищенного режима начиная с VBE2 при использовании FUNCTION 0AH. А еще есть GART. Когда основная память компьютера используется в качестве памяти видео карты. Причем можно настраивать адреса. Правда про это я мало что знаю. Я вот что вспомнил, у северного моста. Есть возможность отдать диапазоны A0000-AFFFF B0000-BFFFF основной памяти компьютера. Хотя вроде эта часть и стандартизирована. Но все-таки возможно у разных материнских карт по-разному. Не помню, читай VBE3. Не понял, что за dma ты хочешь засунуть в первый мегабайт? DMA- Direct Memory Access прямой доступ к памяти. Старый DMA контролер может адресовать к 16МБайтам, адреса физические. Смысла в этом я не вижу. Причем учти в твоем распоряжении только 640КБайт далее идет видео память и БИОС.
Pavia Хочу засунуть туда буферы dma. 4 по 64к, 3 по 128к. итого 640к, впритык, о чем и речь. Если бы удалось освободить хоть 32к от a0000-bffff, то все будет ок. можно, конечно, один 32-разрядный dma-канал засунуть выше 1м, только приспичило мне все вместить в 1м...
почему сразу винда. если просто инициализировать защищенный режим и не включать страничное преобразование, оставив линейную модель памяти. че будет при обращении к тем адресам?
Great Винда потому что Flat модель - все сегменты спроецированы в один и 4Г - предел, это даже чуть меньше чем в ДОС, но когда создавалась win32 платформа оно казалось безграничным простором А без винды и защищённый режим необязательно инициализировать - в реал моде из любого сегмента доступ к 4м гигам свободен. shi Вообще-то биос при старте сам двигает видеопамять за пределы обычной, но как он поведёт себя если её больше 4Гиг не знаю. Но раз как пишет Pavia есть открытая да ещё и стандартизированная инфа то решение должно быть, тем более что каждый сегмент может адресовать 4Гига, а их если я не ошибась по прежнему может быть 65535 штук. В реал моде они расположены с перекрытием, каждый последующий сдвинут относительно предидущего на параграф (16 байт). Но в протекте их можно располагать и без перекрытия, т.е. 4Гига первого сегмента, за ним 4Гига второго, и так 65535 раз.
Нельзя так сделать. У сегмента в дескрипторе база 32-битная. Поэтому ты не сделаешь чтобы второй сегмент начинался на 4Гб.
cppasm Обидна (, но как раз из следует, что можно это 65535 раз не получится, но и 8 Гиг тоже кое что. ЗЫ: давненько я в докментацию по этому поводу не лазил.
Y_Mur подозреваю,что она замкнется в кольцо, и будет все равно 4г Там как-то можно заюзать 36бит, только я не помню, это физического или линейного адр.пространства. вопрос, кстати..
Nouzui зато я помню. примерно) там надо установить какой-то бит в cr0, тогда вводится еще один уровень каталогизации страниц. элементы таблиц становятся по 8 байт, туда все, что нужно, влезает
Прально подозреваешь Адреса "заворачиваться" будут - всё равно больше 4Гб не получить. Можно включить 36-битную адресацию как выше писали, но только начиная с Pentium Pro.