| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Linux PCI-DMA |
| Автор: arcades 19.1.2008, 21:14 | ||||||||||||
| Пишу драйвер для передачи данных с памяти на плате через шину 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 19.1.2008, 21:25 |
| man gcc, опция -I определяет пути к заголовочным файлам. |
| Автор: MAKCim 19.1.2008, 21:45 |
у тебя ошибка компоновки + как раз в <linux/pci.h> прототипы этих функций определены сами функции определены в ядре, поэтому для их использования надо писать модуль ядра Добавлено через 46 секунд также используйте тег код |
| Автор: arcades 21.1.2008, 19:18 |
| Благодарю за ценные ответы. А вообще есть ли уже написанные модули для этих функций чтобы самому не писать? |
| Автор: MAKCim 21.1.2008, 21:45 | ||
модуль нужен не для реализации функций (они уже реализованы), а для их использования вообще, как-то странно, собрался писать драйвер, а такие вопросы задаешь |