Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
где зарылась mmap?
Valentinus
Добавлено 21.07.2010 16:16 Редактировалось 21.07.2010 16:17
0
Сообщение: 1
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
товарищи, уперся рогом и никак.

написал консольную программку, где для доступа к физической памяти использовалась mmap ; при этом подключался заголовочный файл sys/mman.h
в makefile никаких дополнительных путей не указывал,
но все собирается, все работает, гут.
то есть где-то она находит этот mman.h

теперь переношу это в драйвер. подключаю тот же sys/mman.h
сборка делается таким мейкфайлом:
Цитата
EXTRA_CFLAGS=-Wall -O2 -I/home/user/src/linux-2.6.28/include/asm-arm/arch-at91 -I/home/user/src/linux-2.6.28/include/

ARCH=arm
KERN_DIR=/home/user/src/linux-2.6.28
CROSS_COMPILE=arm-none-linux-gnueabi-

ifneq ($(KERNELRELEASE),)
# Call from kernel build system
obj-m := ext_adc.o
else
# Call from module source directory
PWD := $(shell pwd)
default:
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERN_DIR) M=$(PWD) modules

endif

проблема в том, что для сборки модуля make переходит в папку с исходниками ядра, и при этом путь sys/mman.h уже не находится :(

что самое странное, я пробовал через mc искать в папке /home/user/src/linux-2.6.28 файл mman.h - находится несколько штук, но в них нет определения mmap!
:'-(

посоветуйте что-нибудь, я уже туплю...
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 21.07.2010 16:22 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
дурацкий вопрос - а зачем оно (mmap) вам надо в драйвере?
пином подрыгать, регистр прочитать, ячейку памяти изменить?
это все делается прямо в линуксе функциями к соответствующему АРМу

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Valentinus
Добавлено 21.07.2010 16:30 Сообщение: 3
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
Цитата
дурацкий вопрос - а зачем оно (mmap) вам надо в драйвере?
пином подрыгать, регистр прочитать, ячейку памяти изменить?
это все делается прямо в линуксе функциями к соответствующему АРМу

у меня память SRAM от ПЛИСины отображается на физ. адреса, нужно много и быстро читать.
поэтому регистровые функции не подходят :(
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.07.2010 19:05 Редактировалось 21.07.2010 19:05 Сообщение: 4
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

у меня память SRAM от ПЛИСины отображается на физ. адреса, нужно много и быстро читать.


Смотрите в сторону ioremap_nocache.
Спуститься к концу Подняться к началу
Персональная информация
Valentinus
Добавлено 22.07.2010 12:30 Сообщение: 5
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
Цитата
Цитата

у меня память SRAM от ПЛИСины отображается на физ. адреса, нужно много и быстро читать.


Смотрите в сторону ioremap_nocache.

да, спасибо.
в принципе я ее использовал, но не знал что с ней можно использовать блочные функции (memcpy_fromio), думал что только чтение по словам и байтам (ioread32 и т.п.).

с ioremap_nocache все откомпилировалось и даже как будто работает :)
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 23.07.2010 09:38 Сообщение: 6
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Если начали писать драйверы то надо почитать "Linux Device Drivers". Много удивительных открытий ожидают вас ;)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux