| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Cortex A8 MMU http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=11446 |
Страница 1 от 3 |
| Автор: | relsys [ Пон Юни 10, 2013 11:56 pm ] |
| Заглавие: | Cortex A8 MMU |
Защо след като спра MMU модула и после го пусна отново, процесорът не може да продължи изпълнението ...? |
|
| Автор: | relsys [ Вто Юни 11, 2013 10:11 am ] | |||||||||
| Заглавие: | Re: Cortex A8 MMU | |||||||||
Предполагам, това ще да е причината, или има и още нещо:
|
||||||||||
| Автор: | ДедоБоре [ Вто Юни 11, 2013 10:22 am ] |
| Заглавие: | Re: Cortex A8 MMU |
имаш предвид да изключиш изобшо контролера, или да сменяш нещо по таблиците? не се сещам за някаква причина да спираш MMU, че пък после да го пускаш пак... може ли да дадеш по-подробно примерче? |
|
| Автор: | relsys [ Вто Юни 11, 2013 11:34 am ] |
| Заглавие: | Re: Cortex A8 MMU |
Нищо не сменям, само го спирам, за да получа достъп до паметта на адреси 0xFFxx xxxx... и после го пускам пак. Или пък ако знаете друго решение за достъп до тази област докато си е пуснат MMU контролера? |
|
| Автор: | palavrov [ Вто Юни 11, 2013 11:50 am ] | |||||||||
| Заглавие: | Re: Cortex A8 MMU | |||||||||
Ако си под линукс си има функция на кернела за мапване на какъв да е физически адрес в адресното пространство на програмата ти в юзер спейс. Трябва да мапнеш /dev/mem с mmap() и си готов. Виж в гугле за примери ... |
||||||||||
| Автор: | relsys [ Вто Юни 11, 2013 1:36 pm ] | ||||||||||||||||||
| Заглавие: | Re: Cortex A8 MMU | ||||||||||||||||||
Да де, но аз не искам да пиша под линукса, а да го дебъгвам... |
|||||||||||||||||||
| Автор: | palavrov [ Вто Юни 11, 2013 2:56 pm ] |
| Заглавие: | Re: Cortex A8 MMU |
Ако на този Cortex A8 си пуснал някакъв линукс, това е начина да четеш който и да е регион на паметта без да спираш MMU-то му. Ако ще дебъгваш май един JTAG ще ти свърши по добра работа. Спирането на MMU-то си е тънка работа, ако искаш да го правиш трябва да си подсигуриш, че кода който ще се изпълни след като го спреш е на същия физически адрес какъвто е и виртуалния му в момента. |
|
| Автор: | relsys [ Вто Юни 11, 2013 3:26 pm ] | |||||||||
| Заглавие: | Re: Cortex A8 MMU | |||||||||
Именно през JTAG. Трябва да накарам JTAG-а да чете тези адреси, след като линукса пусне MMU модула... |
||||||||||
| Автор: | tgi [ Вто Юни 11, 2013 3:46 pm ] |
| Заглавие: | Re: Cortex A8 MMU |
Въобще не ти знам процесора ама спиране/пускане на MMU има кой знае колко последици дето нито се виждат, нито ги знае някой (освен тоя дето е кроил логиките а и той сигурно отдавна ги е забравил е с кеш за транслираните адреси знаеш ли го какво става с тоя кеш. Ама щом просто искаш през JTAG да пипнеш адрес нямаш ли опцията просто физически адрес да му кажеш да пипне? Или няма ли BAT (Block Array Translation) както в power с приоритет над page translation да навреш адресите дето ти трябват в такъв (обиконвено голям) блок и да мирясаш? Ако въпросният адрес е вън от чипа на процесора винаги имаш и опцията да го прочетеш ползвайки boundary scan - ако toolchain-ът то го може, разбира се. Но да ти кажа и аз не бих се засилил да спирам и пускам MMU-то насред вече сбутнат DPS, това си е откачено начинание MMU (всъщност е със ама транслацията е 1:1) та не би ми се и наложило предполагам. |
|
| Автор: | relsys [ Вто Юни 11, 2013 3:51 pm ] |
| Заглавие: | Re: Cortex A8 MMU |
Явно аз се изразявам грешно..... Аз трябва да осъществя тази функция на туулчейна/дебъгера... без да променям конфигурацията на ОС, или каквото и да е там. Както чете 0x80хх хххх, така да се държи и ако е 0хFFxx xxxx.... За кеша пише, че се затрива при пускане/спиране.... |
|
| Автор: | tgi [ Вто Юни 11, 2013 4:27 pm ] |
| Заглавие: | Re: Cortex A8 MMU |
Е това с кеша е навярно значи, щом се трие при пускане/спиране как да продължи ОС-ът след това. |
|
| Автор: | relsys [ Вто Юни 11, 2013 4:38 pm ] | |||||||||
| Заглавие: | Re: Cortex A8 MMU | |||||||||
Е така де, дай идея някаква... |
||||||||||
| Автор: | tgi [ Вто Юни 11, 2013 5:09 pm ] |
| Заглавие: | Re: Cortex A8 MMU |
Ми не ти познавам процесора/архитектурата та не мога да давам идеи. В моите бих покрил адреса който ме интересува в някой от всичките блок-транслации и нуждата да спирам MMU-то би отпаднала. То въобще това, което трябва да гониш като резултат е как да си свършиш работата ползвайки само логически адреси след като си пуснал MMU-то, някак да му осигуриш фиксирана транслация към твоя адрес. Може би има начин да го направиш преди да сбутясаш линукса, след това навярно е късно (такива работи стават по-лесно в процеса на самото бутване, аз основно там ги правя - е понякога ги правя и другаде ама това предполага пълно познаване на целия код от рисет до приложение което едва ли ти е така с тоя линукс). |
|
| Автор: | ДедоБоре [ Вто Юни 11, 2013 6:44 pm ] | |||||||||
| Заглавие: | Re: Cortex A8 MMU | |||||||||
така де, MMU се пуска в началото, много преди за почнеш да зареждаш кернели. наистина трябва да познаваш машинката, но не е толкова необозримо като задача. обаче след като вдигнеш кернел... трябва вече да го знаеш и той какво маже. щото заемане/освобождаване на памет и ремапване на пространства за видео, PCI и т.н. става с активното СЪУЧАСТИЕ на MMU под мъдрото ръководство на кернела. а това е любимото място за мазане на всички активисти с прогресивни идеи... но съм абсолютно сигурен, че спирането на MMU на работещ кернел е катастрофа. за повторно пускане, дори със същите дескриптори пък и дума не може да става. при това, без да е намесена виртуализация. не случайно в х386 има инструкция само за пускане. спирането става с ресет. и изобщо да ровиш през JTAG-а в работещ линукс е лудница. |
||||||||||
| Автор: | ike [ Вто Юни 11, 2013 7:40 pm ] | ||||||||||||||||||
| Заглавие: | Re: Cortex A8 MMU | ||||||||||||||||||
http://en.wikipedia.org/wiki/Intel_80286 |
|||||||||||||||||||
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|