驱动的编译及运行

更新时间:2018-07-11 10:59:34

本文将讲述使用Leda_sdk_c库开发驱动后如何编译、运行驱动。

1. Leda_sdk_c库生成

1.1 依赖环境

本工程需要的编译工具版本保证和表格中列举版本一致或更高版本,否则将编译可能会失败

 Tool     | Version |
----------|---------|
 gcc      | 4.8.5+  |
 make     | 3.82+   |

1.2 依赖组件

本工程依赖库的版本要保证和表格中列举版本一致或更高版本,否则将编译可能会失败

 Componet | Version |
----------|---------|
 cjson    | 1.5.5+  |
 dbus     | 1.2.1+  |
 logger   |   /     |

1.3 编译步骤

$ make prepare      #生成leda_sdk_c需要的依赖库

$ make leda_sdk     #生成leda_sdk_c库

$ make tool         #生成调试工具

2. 编译和运行驱动

2.1 如何引用

在驱动业务代码中引入设备接入SDK头文件,按照业务需求进行接口使用。因为设备接入SDK依赖动态库cjson、dbus和logger,所以在引用SDK头文件的地方需要包含这三个库的头文件。

2.2 如何编译

按照驱动引用库,进行库链接。因为设备接入SDK依赖动态库cjson、dbus和logger,所以在必须要在包含设备接入SDK库之外必须要包含cjson、dbus和logger库引用。

2.3 如何调试

设备接入SDK工程源码中包含调试工具,调试工具模拟了设备注册、上下线、上下行数据、配置管理等服务。因为该工具不依赖于云端环境,所以在驱动开完完成后,可以通过该调试完成基本功能调试。

2.4 同步到Docker

在使用调试工具完成基本功能测试后,就可以将驱动迁移到LinkEdge环境,进行真实环境的测试。

当前,LinkEdge环境都是以docker镜像形式对外发布。所以如果要把完成基本功能验证的驱动在LinkEdge环境下测试,就需要把驱动和LinkEdge的docker镜像关联起来,关联方式有多种,下面列举两种常用方式。

2.4.1 拷贝方式

将驱动产物拷贝到LinkEdge环境docker镜像中,具体可以通过docker cp命令实现

docker cp: 用于容器与主机之间的数据拷贝

$ docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
$ docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

将主机/home/ivan/driver目录拷贝到容器id为2da729e2ce7b的/home/ ivan/driver目录下。

$ docker cp /home/ivan/driver 2da729e2ce7b:/home/ivan/driver

将容器id为2da729e2ce7b的/home/ivan/driver目录拷贝到主机的/home/ivan/driver目录下。

$ docker cp  2da729e2ce7b:/home/ivan/driver /home/ivan/driver

2.4.2 挂载方式

docker支持把一个宿主机上的目录挂载到镜里,通过该方式将驱动产物所在宿主机目录挂载到LinkEdge环境docker镜像中

$ docker run -it -v /home/ivan/driver:/mnt reg.docker.alibaba-inc.com/aliot-linkedge/linkedge-centos:v0.8.7 /bin/bash

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。

现在镜像内就可以共享宿主机里挂载目录的文件了,默认挂载的路径权限为读写。

2.5 如何运行

由于驱动编译环境依赖库路径和LinkEdge环境可能并不一致,所以将驱动产物同步到LinkEdge环境的docker后还需要设置下依赖库环境变量。设置依赖库环境变量操作如下:

$ export LD_LIBRARY_PATH=$(readlink -e /linkedge/build/lib):$LD_LIBRARY_PATH

/linkedge/build/lib: docker环境中LinkEdge链接库的路径
注:export命令仅对当前shell会话生效,当创建新shell会话时需要重新执行一遍。

依赖环境设置完成后,按照下述两个步骤即可完成驱动运行

a) 启动网关服务(若已启动则不需要重复执行)

./linkedge/build/script/iot_gateway_start.sh

b) 启动驱动

./home/ivan/driver/xxx_驱动

2.6 如何上线

请参照快速开始设备接入章节,真实设备上云流程与虚拟设备上云流程是一样的。

results matching ""

    No results matching ""