Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как в программе под Windows Mobile писать в память по физическому адресу?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Pasha 111
Сразу извиняюсь, если не туда пишу, просто не знаю у кого спросить...

Хочу поиграться на КПКшке с устройствами в S3C6410. Есть там регистр APLL_CON, управляющий PLL-ю. У него физический адрес 0x7E00F00C. Как я понимаю, в проце есть MMU, который не даст мне записать напрямую по этому адресу (я плохо в этом разбираюсь - всегда ARM7 программировал, где этого ничего нет). Как, собственно, в программе, запускаемой в Windows Mobile, можно туда что-то записать?

Когда пишу,например, DWORD APLL_CON = *((DWORD *)0x7E00F00C), то прога вываливается с ошибкой.
ataradov
Нужно найти в винмобайл аналог POSIX вызова mmap () и отобразить физический адрес в адресное пространство процесса. И писать уже по виртуальному адресу.
abcdefg
Цитата(Taradov Alexander @ Dec 7 2009, 11:25) *
Нужно найти в винмобайл аналог POSIX вызова mmap ()


см. MmMapIoSpace()
SFx
товарищи, а можно тот же самый вопрос только относительно Linux'а ? просто на будущее... как писать в физический адрес?
ataradov
Цитата(SFx @ Dec 7 2009, 12:59) *
товарищи, а можно тот же самый вопрос только относительно Linux'а ? просто на будущее... как писать в физический адрес?


man mmap
SimpleSoft
Цитата(Pasha 111 @ Dec 7 2009, 03:12) *
Сразу извиняюсь, если не туда пишу, просто не знаю у кого спросить...

Хочу поиграться на КПКшке с устройствами в S3C6410. Есть там регистр APLL_CON, управляющий PLL-ю. У него физический адрес 0x7E00F00C. Как я понимаю, в проце есть MMU, который не даст мне записать напрямую по этому адресу (я плохо в этом разбираюсь - всегда ARM7 программировал, где этого ничего нет). Как, собственно, в программе, запускаемой в Windows Mobile, можно туда что-то записать?

Когда пишу,например, DWORD APLL_CON = *((DWORD *)0x7E00F00C), то прога вываливается с ошибкой.


Под управлением WinCE (WinMo) записать напрямую не получится. Если вы пользуете WinMo (WinCE) 6.0 и выше даже MmMapIoSpace вам не помощник, т.к. пользоваться данной функцие можно только в режиме ядра, т.е. необходимо писать драйвер. Есть иной выход. Как правило ОС держит в памяти отмапленные адреса физической памяти за границей 0x80000000. Для того чтобы узнать какие адреса отмаплены можно просто воспользоваться утилитой v2p представленной в статье V2P
Pasha 111
Всем спасибо за ответы. На девайсе стоит Windows Mobile 6.1.
Я уже натыкался на статью "Кое-что об устойчивости и защищенности Windows CE на ARM-платформе", но просмотрел её мельком, сейчас пойду подробно разбираться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.