Всем привет.
Есть задача написать модуль ядра. Одна из функций должна читать регистры микропроцессора.
Проц - PXA 270. Как это можно это сделать? Есть ли какие-то функции ядра для этого?
Как прочесть регистры микропоцессора
Модератор: Модераторы разделов
-
Liksys
- Сообщения: 2910
Re: Как прочесть регистры микропоцессора
я когда-то давно делал такое вставками на асме, так что вполне реально.
-
helicopter
- Сообщения: 324
- Статус: Комсомолец
- ОС: Gentoo Linux
Re: Как прочесть регистры микропоцессора
Угу, вставку на асме. Но я только на x86 такими весчами занимался.
Выбирая Linux, вы развиваете цивилизацию. Выбирая windows, вы набиваете кошелёк забугорному буржую...
-
freem4n
- Сообщения: 4
- ОС: Ubuntu Linux
Re: Как прочесть регистры микропоцессора
Хорошо, если вставки на асме, то насколько я знаю там есть инструкция rdmsr, в linux-headers она обернута в файле asm/msr.h, пытался пользовать, результат не правильный (0x00000000). Хотя пытался прочитать этой функцией регистр EIP x86 процеса.
-
Serg79
- Сообщения: 153
Re: Как прочесть регистры микропоцессора
Вот пример функции которая возвращает значение регистра "EBP", процессора i386:
Используй ее как образец.
Код: Выделить всё
inline unsigned int get_ebp(void)
{
unsigned int val;
__asm__ __volatile__ ("movl %%ebp, %0" : "=r" (val) :);
return val;
}Используй ее как образец.
-
freem4n
- Сообщения: 4
- ОС: Ubuntu Linux
Re: Как прочесть регистры микропоцессора
Serg79 писал(а): ↑13.09.2007 11:01Вот пример функции которая возвращает значение регистра "EBP", процессора i386:
Код: Выделить всё
inline unsigned int get_ebp(void) { unsigned int val; __asm__ __volatile__ ("movl %%ebp, %0" : "=r" (val) :); return val; }
Используй ее как образец.
Спасиб, попробовал, EIP прочитал на i386. Правда под PXA все равно не пойдет, там асм неизвестно как пользовать. Нужна функция ядра.
-
freem4n
- Сообщения: 4
- ОС: Ubuntu Linux
Re: Как прочесть регистры микропоцессора
Все вопросы отпадают. Наткнулся на книгу Роберта Лова "Разработка ядра Linux". Читаю, начинаю понимать.