简介:本文介绍了基于Sitara AM5749平台的ali-iot边缘网关的配置方法。TI的新一代处理器平台AM5749是多核异构结构的SOC,片上有两个ARM核(ARM CORTEX-A15),两个DSP(C66x)核,两个EVE AI加速模块。AM5749处理器是高度集成的器件,可用于实现高性能和多媒体应用。板载加速器提供加速视觉和深度学习功能,支持多个工业以太网协议和视频处理。对比AM57XX家族其他产品,AM5749支持完善的memory ECC校验功能,同时内部直集成EVE深度学习加速模块配合TIDL软件开发包,可以快速在嵌入式平台实现深度学习的功能。阿里云是阿里巴巴集团下的云计算产品,提供卓越的云计算服务与技术。本文间介绍阿里云和TIDL的环境搭建以及如何由阿里云和TIDL构建一个云-边缘联合计算系统。本文在AM5749 IDK平台上成功运行ALI SDK并在ALI SDK和TIDL SDK的基础上开发了一系列适配软件。软件会对本地的存储的图片进行AI识别,并且把识别的统计信息发到ALI CLOUD进行统计。为了验证识别率本文在本地图片掺入若干不可识别的空白图片,识别结果见第五小节,可以看出来识别结果稳定可靠。本文仅介绍边缘网关配置和运行的操作步骤,本地程序原理等深入讨论会在其他**详细描述。
一、本地操作,环境准备:
注意:在编译任何部件之前需要先设定EVM板的时间,日期与中国时区一致,小时数减8分钟数不变。
date -s <year>-<month>-<day>
date –s <hour>:<minute>:<second>
说明:考虑到Link IoT Edge软件包和OSS-C-SDK及其官方文档处在不断更新的状态,此文档使用Link IoT Edge armv7 1.8.1、OSS- C-SDK 3.7.1供参考,随文会贴出官方文档连接。
1.各组件之间的关系如下图: 说明:蓝色为TI提供的操作系统,紫色为samba服务器,绿色为阿里云提供的软件SDK,橙色为本文开发的程序。 图1系统框图
2.在SD卡上安装TI SDK:实际上是安装TI定制的linux操作系统(图1蓝色部分) TI SDK Version:ti-processor-sdk-linux-am57xx-evm-05.02.00.10 在AM5749上下载安装Link IoT Edge标准版软件包:link-iot-edge-armv7-v1.8.1.tar.gz 此软件包提供阿里云在AM5749平台上运行的基本环境,负责网关设备与阿里云的通信、云资源部署等功能。(图1绿色a) 安装步骤: a. AM5749开发板超级终端窗口或者SSH终端窗口执行以下命令,下载环境检查工具并运行: #sudo chmod +x ./link-iot-edge_env-check.sh #sudo ./link-iot-edge_env-check.sh 按照运行环境检查工具的提示在您的机器上安装所有必需的依赖项,当检查工具成功运行完成后,返回如下图信息,表示Link IoT Edge能够在您的机器上成功运行。 b. 在阿里云->帮助文档内,物联网边缘计算->产品介绍->发布历史 中寻找合适的软件包,或使用下载地址: c. 安装:解压即完成安装,解压命令如下: $tar xzvf <网关软件包压缩文件>.tar.gz –C / 至此,linkedge网关安装完成 4. Link IoT Edge C SDK:link-iot-edge-access-sdk-c-master 此软件包提供阿里云开发的API,利用此API开发者可以便捷的使用上述软件包提供的服务,是中间层的软件库。(图1绿色c) b. 在编译、生成驱动程序时需要用到zip命令,但TI SDK中有unzip无zip,故需下载zip源码,进行编译,下载地址: 下载完成后,解压文件夹并放入目标文件系统中,进入目录运行命令: #chmod +x ./unix/configure #./unix/configure #make -f unix/Makefile generic #make -f unix/Makefile install 至此zip命令可用 c. 开始编译安装sdk和TI-test程序 #cd linkedge-thing-access-sdk-c #make prepare //预编译生成外部依赖库将花费一定时间 至此,SDK驱动程序编译完成。 5. Samba服务器(此步骤方便调试和文件交互,是可选步骤)。为方便使用EVM板文件系统的文件,故选择安装samba服务器。(图1紫色) 安装(EVM板上): a. 进入目录/samba-3.5.22/source3; b. 运行./configure c. #make & make install(make时间比较长) d. 配置动态链接库路径: #vi /etc/ld.so.conf 在添加一行新内容:/usr/local/samba/lib 执行命令: ldconfig e. Samba配置文件smb.conf 配置文件的默认路径为 /usr/local/samba/lib/smb.conf 执行命令 #vi /usr/local/samba/lib/smb.conf 添加内容: [share] path = / public = yes writable = yes available = yes browseable = yes f. 启动samba服务。 配置smb.conf文件后,在开始运行samba的服务进程之前。我们需要先做一些准备工作。运行smbpasswd命令(在目录/usr/local/samba/bin下) # ./smbpasswd –a root 向smb.conf文件中指定的/etc/samba/smbpasswd文件中添加root用户以及密码信息。 为使用方便,可以不设置密码,直接回车即可。 下面是运行samba的服务进程smbd和nmbd # /usr/local/samba/sbin/smbd –D –s /etc/samba/smb.conf # /usr/local/samba/sbin/nmbd –D –s /etc/samba/smb.conf g. 至此,可以根据上述用户名登陆,无需密码。 注意:AM574X EVM板掉电重启后需要手动启动samba服务,故可创建一个txt文件,将上述命令写入其中。
6. 安装阿里oss服务的 C-SDK(图1绿色b): 此软件包是阿里云存储服务提供的API库。 a. 安装第三方依赖库: 安装方式如下: #./configure #make #make install 注意: 安装apr时,需使用./configure CFLAGS='-Os'; 安装apr-util时,需使用 ./configure CFLAGS='-Os' --with-apr=/usr/local/apr ; minixml尽量安装阿里OSS推荐的版本(2.9),以免报错。 b. 安装C-SDK: SDK下载地址: 此文档实用的SDK版本为3.7.1 1. 安装SDK需要用到CMAKE(2.6.0版本以上),CMAKE下载地址: 安装方式: #./configure #make #make install 2. 安装SDK: #cmake . #make #make install 二、云端操作:创建网关设备、边缘实例、云存储空间
接下来需要在云端上创建相应的网关设备、边缘实例、camera、led设备;
1. 创建网关产品及设备:
a. 进入阿里云控制台,进入 边缘计算à边缘实例 页面,点击新建实例: 输入实例名称; 点击新建网关产品; 输入产品名称,并在所属分类中选择 边缘计算à边缘网关点击完成; 点击新建网关设备,输入设备名称即可,结果如下: 单击确认,边缘实例已经创建完成:
b. 创建设备: ⅰ. 进入边缘实例详情页面(点击上图中的实例名称): ⅱ. 选择子设备,并单击分配子设备; ⅲ. 在分配子设备页面,单击左下角的添加子设备; ⅳ.单击新产品,在输入参数后,单击完成:
ⅴ. 输入设备名称后单击确定; 注意由于在AM574X EVM板上安装mysql不成功,使用了txt文件作为存储数据的载体,因此,为避免读写数据出错,请将所有设备名统一长度。 ⅵ. 在分配子设备页面将上述添加的设备分配到边缘节点; ⅶ. 进入 设备管理à产品页面,单击伤处创建的产品进入产品详情页面,选择功能定义,在自定义功能一栏单击添加功能: 按如图为摄像头产品添加自定义功能: 接下来将对Sub1GHz产品添加自定义功能(本平台同时支持Sub1GHz传感器网络数据转发到云端): ⅷ. 在子设备页面,分别为子设备分配驱动;
1. 进入 边缘计算à驱动管理 页面,单击新建驱动,语言类型选择C语言,驱动名称自定义,上传文件:为<sdk director>/demo/camera目录下的zip文件。
2. 回到边缘实例的子设备界面,为子设备分配驱动:
ⅸ. 至此,云端上所有设备创建完成
2. 对象存储OSS存储空间的创建
a. 进入对象存储服务的控制台,点击左侧列表的“+”新建存储空间bucket:
b. Bucket名称栏中,填入自定义的Bucket名称,创建后无法修改; c. 在区域栏中,选择该存储空间的数据中心,创建后无法修改; d. 存储类型选择标准存储 e. 读写权限使用私有,且不开通实时日志查询。
三、本地软件编译和配置
本文开发的软件包中,主要分为3部分:camera、imageRec、gateway_management。其中第一部分依赖阿里云Link IoT Edge C SDK开发的虚拟设备驱动程序,第二部分为基于TIDL的视频物体识别程序,第三部分为协调前两者的网关管理程序。为了三者能够顺利运行,需进行下述操作:
1. 将文件夹camera拷贝到<Link IoT Edge软件包安装路径>/link-iot-edge-access-sdk-c/demo目录下,并将camera目录下的demo.mk替换此目录的demo.mk。在<Link IoT Edge软件包安装路径>/link-iot-edge-access-sdk-c/目录下运行下列命令,生成虚拟设备驱动程序: #make && make install
2.将文件夹imageRec拷贝到/usr/share/ti/tidl/examples目录下,并在imageRec和 /imageRec/oss_server下执行make命令进行编译。 注意:在oss_server下make之前需注意如下两点: a. 需要设置环境变量: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LIBRARY_PATH=/usr/local/apr/lib:$LIBRARY_PATH b. 需要对./oss_server目录下的upload.c作一定的修改: 设置在文件首定义的全局变量,这些全局变量的值根据上述创建的云存储空间进行赋值。 3. 文件夹gateway_management可放在任意位置,进入该文件夹之后,通过./make.txt完成编译即可。 四、系统运行步骤
1.进入 设备管理à设备 页面,点击上述创建的网关设备,将设备信息中的ProductKey、DeviceName、DeviceSecret记录下来,用于后续启动网关;
2.进入目录 /linkedge/gateway/build/script; 运行命令,请讲{YourProductKey} {Y**iceName} {Y**iceSecret}替换为1中记录下来的三个信息: #./set_gw_triple.sh {YourProductKey} {Y**iceName} {Y**iceSecret} 3.启动Link IoT Edge核定服务; #./iot_gateway_start.sh 4.执行如下命令岔开Link IoT Edge核心服务的运行状态: #./iot_gateway_status.sh 若系统显示如下,表示Link IoT Edge核心服务启动成功 也可以进入 边缘计算à边缘实例 点击对应的边缘实例,查看网关状态,可以看到已经在线:
5.在此页面点击右上角的部署,将资源部署到边缘网关上: 6. 待部署完成后,后台运行gateway_management程序,在gateway_management目录下使用命令: \#./ gateway_management & 7.进入/usr/share/ti/tidl/examples/imageRec/oss_server目录,后台运行oss服务程序: # ./main & 8. 在/usr/share/ti/tidl/examples/imageRec目录下,运行TIDL的视频物体识别程序: # ./imageRec -i <视频文件或目录> 五、运行结果 在云端,通过左侧目录,进入 设备管理à设备 进入前文创建的设备的详情页面,再进入到运行状态的分页面中,应看到如下结果:
单击成功率一栏的查看数据,理应看到如下结果: 为了使成功率更有说服了,本文在识别图片集里添加了部分不可识别的空白图片,可以看到识别率很稳定在0.679,说明系统运行平稳。 本文验证了三大技术:1,ALI IOT SDK在AM57XX平台运行,实现了边缘计算网关的功能。2,AM57XX TIDL SDK利用AM5749 EVE加速单元实现了AI图片分析的边缘计算。3,同时此平台还连接了运行TI-15.4 Sub1G CC1310模块,实现了传感器网络数据到Ali Cloud的转发。
|