一.总结学习
今天学习了跨平台的数据库移植,了解了mqtt是什么,以及mqtt的移植,对于我的项目框架中需要用到数据库存储数据,以及将数据上传到服务器上,进行相关的处理和预警相应的操作,为什么要交叉开发呢?因为嵌入式平台资源有限,所以在PC机上编译文件,生成的可执行文件在嵌入式上运行,我在移植库的时候出现的问题是库文件时候采用相对路径,相对路径又不准确,导致make生成文件时,出现报错,之后所有的路径我都采用了绝对路径来保证文件的编译时能找到文件防止报错。
二.跨平台移植数据库
交叉开发环境:嵌入式平台资源有限,所以在PC机上编译文件,生成的可执行文件在嵌入式上运行
根目录bin下是可执行二进制文件,lib是依赖的相关库,user的bin lib下是用户相关的库文件和可执行文件
先下载了sqlite3的源码,解压文件后先通过configure使用./configureCC=arm-linux-gnueabihf-gcc--host=arm-linux-gnueabihf --prefix=/home/linux/nfs/sqlite3/sqlite-3.7.3/install文件生成makefile文件,将生成的lib文件移植到开发板的lib中
三.网络服务器
IMX6ULL向OneNET云服务器上传数据
1.在测试阶段先配置双网卡,让开发板可以联网
云端配置
MQTT协议:消息队列遥测传输协议,传输层基于与TCP,默认端口号1883
特点:基于发布/订阅模式 ,物联网通信中广泛使用,MQTT报文轻量级 面向二进制数,占用网络带宽小,
相比于HTTP优点是利用极少的报文和有限的带宽 提供安全可靠的连接(
1.基于TCP连接
2.消息发布服务质量(Qos)
至多一次,不管接收方收到没收到,只发动一次,0
至少一次,1
只有一次,2
3.遗言机制:客户端因为异常而退出,会将最后一次报文发给服务器,服务器就知道客户端断开了
4.心跳监测:ping报文,内部起了一个线程,线程中会根据频率发一个ping报文,用来监测MQTT的TCP连接是否正常
5.三种身份:发布者,订阅者,发布者订阅者都是客户端
6.报文中:
订阅请求报文:一定要看到topic
发布报文:msg
使用MQTT协议,移植MQTT库(paho mqtt库 他依赖op)
不用手搓报文,直接移植一个MQTT库
移植MQTT库:
mqtt库依赖于openssl 和paho库,通过先通过config文件获得makefile,在对makefile修改编译器以及路径对库进行交叉编译,然后make install下载获得库文件