реклама на сайте
подробности

 
 
> Linux + gcc
Макс_Мат
сообщение Jan 15 2008, 13:18
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Добрый день, у меня такой вопрос: мне нужно под линухом обратиться к ячейке ОЗУ, в которой развернуто ядро и файловая система, по произвольному адресу. Прокатит ли такое в gcc?
int* adr = 0x8000a4;
*(adr) = 0x1A;

нутром чую, что нет, а как быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
Макс_Мат
сообщение Jan 15 2008, 14:08
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Добрый день, у меня такой вопрос: мне нужно под линухом обратиться к ячейке ОЗУ, в которой развернуто ядро и файловая система, по произвольному адресу. Прокатит ли такое в gcc?
int* adr = 0x8000a4;
*(adr) = 0x1A;

нутром чую, что нет, а как быть?
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 15 2008, 14:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(Макс_Мат @ Jan 15 2008, 18:18) *
Добрый день, у меня такой вопрос: мне нужно под линухом обратиться к ячейке ОЗУ, в которой развернуто ядро и файловая система, по произвольному адресу. Прокатит ли такое в gcc?
int* adr = 0x8000a4;
*(adr) = 0x1A;

нутром чую, что нет, а как быть?

А при чём тут GCC то? Да и ARM тоже?

Если Вы уверены что Вам это действительно надо то возможно у Вас есть чёнить типа /proc/kmem, /dev/mem и т.д, (т.е. память отражена на некий файл файловой системы) обычно доступны только root-у. Опять же надо разбираться в физических и виртуальных адресах и т.д.
Ну а правильный подход - драйвер.
Go to the top of the page
 
+Quote Post
vshemm
сообщение Jan 15 2008, 14:35
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Конечно прокатит, вылезет SIGSEGV smile.gif
Что бы сделать то, что Вы хотите, нужно использовать /dev/mem и /dev/kmem (и только под рутом). Первое устройство - это физическая память, второе - память ядра после страничной странсляции (виртуальная).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 15 2008, 14:42
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Макс_Мат @ Jan 15 2008, 16:18) *
нутром чую..

Moderator:
Учтите! Кроспосты на форуме запрещены.
Темы объединил.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Jan 15 2008, 14:52
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Спасибо по поводу /dev/mem. Поправте, если не прав: монтируем например /dev/mem0 в каталог например /mnt/ozu , далее в программе открываем его как файл и чтение/запись нужного адреса, т.е. такое прокатит?

Еще вопросик, а прокатит ассемблерная вставка? ось никаких финтов не выдаст?
Go to the top of the page
 
+Quote Post
vshemm
сообщение Jan 15 2008, 15:14
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Цитата(Макс_Мат @ Jan 15 2008, 17:52) *
Спасибо по поводу /dev/mem. Поправте, если не прав: монтируем например /dev/mem0 в каталог например /mnt/ozu , далее в программе открываем его как файл и чтение/запись нужного адреса, т.е. такое прокатит?

Еще вопросик, а прокатит ассемблерная вставка? ось никаких финтов не выдаст?

Нет, открываем: fd = open("/dev/mem", O_RDWR, 0);
Перемещаемся куда нужно: lseek(fd, offset, SEEK_SET);
Читаем: read(fd, buffer, 0x1000);

Только учтите, это физическая память, придется делать трансляцию адресов. Из юзерспейса придется извращаться - вручную парсить каталог страниц, адрес которого находится в CR3 (на х86 архитектуре), доступа к которому тоже нет smile.gif
Действительно, проще написать драйвер smile.gif
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Jan 15 2008, 16:38
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Большое спасибо! Мне подходит такой вариант (я на arm). Но написание дров давно волнует - займусь на досуге. Спасибо!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 07:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016