![]() |
|
Модераторы: xvr |
![]()
|
|
| arcades |
|
||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.1.2008 Репутация: нет Всего: нет |
Пишу драйвер для передачи данных с памяти на плате через шину PCI express и запись в файл,
Стандартное считывание было с медленной скоростью, поэтому решил делать через DMA-функции, Нашел в интернете следующий текст: ----------------------------- Dynamic DMA Mapping Direct memory access in Linux for AMD64 technology requires the use of the dynamic DMA mapping API. This API provides a way to efficiently map 64-bit physical addresses to 32-bit Single Address Cycle PCI addresses, so that hardware that only supports 32-bit accesses can be used in 64-bit systems. A full description of the dynamic DMA mapping API is beyond the scope of this document. Device driver developers who need to use DMA should read DMA-mapping.txt in the /usr/src/linux/Documentation directory. Нашел у себя эту документацию и прочитал. Там было написано что главным является добавление
Код программы:
Вот что выдал компилятор, Тоесть эти функции в pci.h не определены, Поискал на компьютере заголовочные файлы содержащие эти функции; >> Выяснилось что функции DMA описаны в следующих файлах:
-------------------------------- Теперь суть проблемы: стандарно
dma-mapping.h source: .................................
................................. которые компилятор уже не найдет, а внутри этих прописаны следющие и так до бесконечности, ------------------------------------------------------------------------------------------------------------- Вопросы: 1) Есть ли какой-то способ добавить эти заголовки внутри кода программы или при компиляции? 2) Если нужно для этого написать специальный Makefile какой может быть простой пример для компиляции программы и автоматического добавления заголовочных файлов? Старался изложить как можно подробнее суть проблемы, Жду ответов, заранее благодарен за помощь спецам! |
||||||||||||
|
|||||||||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
man gcc, опция -I определяет пути к заголовочным файлам.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
у тебя ошибка компоновки + как раз в <linux/pci.h> прототипы этих функций определены сами функции определены в ядре, поэтому для их использования надо писать модуль ядра Добавлено через 46 секунд также используйте тег код -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| bilbobagginz |
|
||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
да, только это тоже не сработает.
да. идея: вы должны написать код загружаемого модуля ядра, т.е. lkm (loadable kernel module). этот процесс описан в объяснениях как создавать модули, с примерами Makefile-ов. по идее там просто другие флажки передаются к gcc, а также формат модуля. пройдитесь по этой ссылке в частности, и по оному документу вообще. удачи. -------------------- Я ещё не демон. Я только учусь. |
||||
|
|||||
| arcades |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.1.2008 Репутация: нет Всего: нет |
Благодарю за ценные ответы. А вообще есть ли уже написанные модули для этих функций чтобы самому не писать?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
модуль нужен не для реализации функций (они уже реализованы), а для их использования вообще, как-то странно, собрался писать драйвер, а такие вопросы задаешь -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |