Отговори на тема  [ 34 мнения ]  Отиди на страница 1, 2, 3  Следваща
Cortex A8 MMU 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Cortex A8 MMU
Защо след като спра MMU модула и после го пусна отново, процесорът не може да продължи изпълнението ...?


Пон Юни 10, 2013 11:56 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
Предполагам, това ще да е причината, или има и още нещо:

Цитат:
After a CP15 c1 instruction enables the MMU, the processor flushes all following instructions in the pipeline. The processor then begins refetching instructions, and the MMU performs virtual-to-physical address mapping according to the translation table descriptors in main memory.

After a CP15 c1 instruction disables the MMU, the processor flushes all following instructions in the pipeline. The processor then begins refetching instructions and uses flat address mapping. In flat address mapping, PA = VA.


Вто Юни 11, 2013 10:11 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: Cortex A8 MMU
имаш предвид да изключиш изобшо контролера, или да сменяш нещо по таблиците?

не се сещам за някаква причина да спираш MMU, че пък после да го пускаш пак...
може ли да дадеш по-подробно примерче?


Вто Юни 11, 2013 10:22 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
Нищо не сменям, само го спирам, за да получа достъп до паметта на адреси 0xFFxx xxxx... и после го пускам пак.
Или пък ако знаете друго решение за достъп до тази област докато си е пуснат MMU контролера?


Вто Юни 11, 2013 11:34 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Cortex A8 MMU
relsys написа:
Нищо не сменям, само го спирам, за да получа достъп до паметта на адреси 0xFFxx xxxx... и после го пускам пак.
Или пък ако знаете друго решение за достъп до тази област докато си е пуснат MMU контролера?

Ако си под линукс си има функция на кернела за мапване на какъв да е физически адрес в адресното пространство на програмата ти в юзер спейс.
Трябва да мапнеш /dev/mem с mmap() и си готов. Виж в гугле за примери ...

_________________
Мразя да мразя ...


Вто Юни 11, 2013 11:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
palavrov написа:
relsys написа:
Нищо не сменям, само го спирам, за да получа достъп до паметта на адреси 0xFFxx xxxx... и после го пускам пак.
Или пък ако знаете друго решение за достъп до тази област докато си е пуснат MMU контролера?

Ако си под линукс си има функция на кернела за мапване на какъв да е физически адрес в адресното пространство на програмата ти в юзер спейс.
Трябва да мапнеш /dev/mem с mmap() и си готов. Виж в гугле за примери ...


Да де, но аз не искам да пиша под линукса, а да го дебъгвам...


Вто Юни 11, 2013 1:36 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Cortex A8 MMU
Ако на този Cortex A8 си пуснал някакъв линукс, това е начина да четеш който и да е регион на паметта без да спираш MMU-то му. Ако ще дебъгваш май един JTAG ще ти свърши по добра работа. Спирането на MMU-то си е тънка работа, ако искаш да го правиш трябва да си подсигуриш, че кода който ще се изпълни след като го спреш е на същия физически адрес какъвто е и виртуалния му в момента.

_________________
Мразя да мразя ...


Вто Юни 11, 2013 2:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
palavrov написа:
Ако на този Cortex A8 си пуснал някакъв линукс, това е начина да четеш който и да е регион на паметта без да спираш MMU-то му. Ако ще дебъгваш май един JTAG ще ти свърши по добра работа. Спирането на MMU-то си е тънка работа, ако искаш да го правиш трябва да си подсигуриш, че кода който ще се изпълни след като го спреш е на същия физически адрес какъвто е и виртуалния му в момента.


Именно през JTAG. Трябва да накарам JTAG-а да чете тези адреси, след като линукса пусне MMU модула...


Вто Юни 11, 2013 3:26 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Cortex A8 MMU
Въобще не ти знам процесора ама спиране/пускане на MMU има кой знае колко
последици дето нито се виждат, нито ги знае някой (освен тоя дето е кроил
логиките а и той сигурно отдавна ги е забравил :) ). Примерно ако MMU-то
е с кеш за транслираните адреси знаеш ли го какво става с тоя кеш.

Ама щом просто искаш през JTAG да пипнеш адрес нямаш ли опцията просто
физически адрес да му кажеш да пипне? Или няма ли BAT (Block Array Translation)
както в power с приоритет над page translation да навреш адресите дето ти
трябват в такъв (обиконвено голям) блок и да мирясаш? Ако въпросният адрес
е вън от чипа на процесора винаги имаш и опцията да го прочетеш ползвайки
boundary scan - ако toolchain-ът то го може, разбира се.

Но да ти кажа и аз не бих се засилил да спирам и пускам MMU-то насред вече
сбутнат DPS, това си е откачено начинание :) . Е, мога да се бутна и "без"
MMU (всъщност е със ама транслацията е 1:1) та не би ми се и наложило
предполагам.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 11, 2013 3:46 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
Явно аз се изразявам грешно.....

Аз трябва да осъществя тази функция на туулчейна/дебъгера... без да променям конфигурацията на ОС, или каквото и да е там.

Както чете 0x80хх хххх, така да се държи и ако е 0хFFxx xxxx....

За кеша пише, че се затрива при пускане/спиране....


Вто Юни 11, 2013 3:51 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Cortex A8 MMU
Е това с кеша е навярно значи, щом се трие при пускане/спиране как да продължи ОС-ът
след това.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 11, 2013 4:27 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Cortex A8 MMU
tgi написа:
Е това с кеша е навярно значи, щом се трие при пускане/спиране как да продължи ОС-ът
след това.


Е така де, дай идея някаква...


Вто Юни 11, 2013 4:38 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Cortex A8 MMU
Ми не ти познавам процесора/архитектурата та не мога да давам идеи.

В моите бих покрил адреса който ме интересува в някой от всичките блок-транслации
и нуждата да спирам MMU-то би отпаднала.
То въобще това, което трябва да гониш като резултат е как да си свършиш работата
ползвайки само логически адреси след като си пуснал MMU-то, някак да му осигуриш
фиксирана транслация към твоя адрес. Може би има начин да го направиш преди да сбутясаш
линукса, след това навярно е късно (такива работи стават по-лесно в процеса на самото
бутване, аз основно там ги правя - е понякога ги правя и другаде ама това предполага
пълно познаване на целия код от рисет до приложение което едва ли ти е така с тоя
линукс).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 11, 2013 5:09 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: Cortex A8 MMU
tgi написа:
...

така де, MMU се пуска в началото, много преди за почнеш да зареждаш кернели.
наистина трябва да познаваш машинката, но не е толкова необозримо като задача.

обаче след като вдигнеш кернел... трябва вече да го знаеш и той какво маже. щото заемане/освобождаване на памет и ремапване на пространства за видео, PCI и т.н. става с активното СЪУЧАСТИЕ на MMU под мъдрото ръководство на кернела. а това е любимото място за мазане на всички активисти с прогресивни идеи...

но съм абсолютно сигурен, че спирането на MMU на работещ кернел е катастрофа. за повторно пускане, дори със същите дескриптори пък и дума не може да става. при това, без да е намесена виртуализация. не случайно в х386 има инструкция само за пускане. спирането става с ресет.

и изобщо да ровиш през JTAG-а в работещ линукс е лудница.


Вто Юни 11, 2013 6:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Cortex A8 MMU
ДедоБоре написа:
не случайно в х386 има инструкция само за пускане. спирането става с ресет.

Цитат:
By design, the 286 could not revert from protected mode to the basic 8086-compatible "real mode" without a hardware-initiated reset. In the PC/AT introduced in 1984, IBM added external circuitry as well as specialized code in the ROM BIOS to enable special series of program instructions to cause the reset, allowing real-mode reentry (while retaining active memory and control). Though it worked correctly, the method imposed a huge performance penalty.

http://en.wikipedia.org/wiki/Intel_80286

_________________
Warriors of the Night, ASSEMBLER!!!


Вто Юни 11, 2013 7:40 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 34 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 31 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни