Здесь представлены исходники SDK для работы с платами с интерфейсом PCI-Express
фирмы L Card. SDK включает в себя драйвер, библиотеку и примеры программ.

SDK содержит общие исходники как для ОС Linux, так и для Windows.

Так как для Windows предполагается в первую очередь установка через установщик,
который можно скачать с http://www.lcard.ru/download/lpcie_setup.exe,
то дальнейший текст будет в первую очередь ориентирован на сборку под Linux.

При наличии пакетов под нужный дистрибутив рекомендуется использовать их, однако,
если нет такой возможности, то ниже приводятся инструкции по сборке.


I) Сборка под ОС Linux

1) Необходимые для сборки компоненты.
-------------------------------------

Для сборки необходимы следующие компоненты:
gcc       - компилятор для языка C
make      - утилита для сборки программ по make-файлу
cmake     - кроссплатформенная утилита для конфигурации проектов и генерации
            make-файлов (аналог autotools с ./configure)
            
Для сборки драйвера (модуля ядра) потребуются дополнительные компоненты:
заголовочные файлы ядра - как правило находятся в пакете linux-headers (Debian/Ubuntu),
			  kernel-devel (openSUSE) или что-то подобное. 
			  Должны устанавливаться в директорию /lib/modules/`uname -r`/build
			  (Точнее /lib/modules/`uname -r`/build обычно является ссылкой на
			  нужную директорию в /usr/src).
dkms (рекомендуется) - система сборки сторонних модулей ядра. 
       Хотя есть возможность собрать драйвер без использования dkms, рекомендуется
       при возможности этого не делать, так как dkms позволяет:
       - централизованно отслеживать, какие сторонние модули ядра, какие их версии 
	     и для каких версий ядра установлены (dkms status)
       - хранит всегда исходники драйвера разных версий в централизованном месте
         (/usr/src/lpcie-<version>)
       - позволяет автоматически пересобирать драйвер при переходе на новое ядро
       - позволяет в любой момент удалить драйвер или любую его версию и все
         связанные с ним файлы (dkms remove -m lpcie -v <version> --all)
       
       
2) Подготовка к сборке.
-----------------------------------
Начальная конфигурация проекта осуществляется с помощью утилиты cmake. 
Система сборки ориентирована на сборку вне исходников (out-of-source build), 
т.е. перед сборкой необходимо создать директорию в которой будут сохранятся все
результаты сборки. Это позволит сохранять директорию с исходниками не тронутой.

Пусть это будет директория build на том же уровне что и lpcie_sdk:

mkdir build
cd build

Далее необходимо сконфигурировать проект: cmake [опции] <путь к исходникам>
В нашем случае:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ../lpcie_sdk

Опция -DCMAKE_BUILD_TYPE=Release задает тип сборки Release или Debug.
Опция -DCMAKE_INSTALL_PREFIX задает подкаталог, куда будут устанавливаться
  файлы при вызове make install. В данном случае, библиотека будут установлена
  в /usr/lib, а заголовочные файлы в /usr/include
  
Этот вызов сгенерирует make-файлы позволяющие собрать то что нужно.

3) Сборка библиотеки
--------------------------------------
Сборка l502api:

 make l502api

Установка файлов (в подкаталог, указанный при конфигурации через 
  -DCMAKE_INSTALL_PREFIX):

 sudo make install

4) Сборка модуля ядра с использованием dkms (рекомендуется)
--------------------------------------
Подготовка исходников для сборки:
make lpcie-dkms-src-prepare

Установка исходников в системе:
sudo make lpcie-dkms-install

После выполнения последней команды исходники будут скопированы в /usr/src/lpcie-<version> 
и система dkms соберет их под текущее ядро (если в системе установлены исходники ядра)
и загрузит модуль. Проверить результат можно с помощью:
sudo dkms status

5) Сборка модуля ядра без dkms
-------------------------------------
Подготовка исходников для сборки:
make lpcie-dkms-src-prepare

Сборка:
make lpcie-drv

Установка:
sudo make lpcie-drv-install

После этого модуль будет установлен в /lib/modules/`uname -r`/extra.
При переходе на новое ядро необходимо заново устанавливать модуль.

6) Сборка примеров
--------------------------------------
Под ОС Linux можно собрать примеры из examples/msvc.

Вы можете собрать из общей системы сборки просто выполнив make <название примера>,
например:
make l502_sync_read
Результат сборки будет в examples/msvc/l502_sync_read

Либо каждый пример можно собрать по отдельности - в каждом примере есть как
обычный makefile, так и свой CMakeList.txt.










