迅为itop-4412精英版开发板mosquitto(mqtt协议)移植及使用测试

beta-1999 beta-1999     2022-12-08     689

关键词:

??需要在 Linux 系统下先交叉编译好 mosquitto 再移植到开发板中,至于最后 PC 端使用 Linux 还是 Windows 都可以。
??注意事先要配置好交叉编译环境

一、下载依赖包

??编译 mosquitto 需要依赖 libuuid 和 openssl。因此需要下载下面三个文件,注意最好版本保持一致,其他不保证成功:

  • libuuid-1.0.3.tar.gz,下载链接:链接 1
  • openssl-1.0.2g.tar.gz,下载链接:链接 2
  • mosquitto-1.5.tar.gz,下载链接:链接 3

二、交叉编译

??以下编译均在已经配置好交叉编译环境的 Linux 系统下(我使用的是 Ubuntu 18.04,交叉编译包为 arm-linux-gcc-4.3.2.tar.gz)。

1. 交叉编译 libuuid

  • ① 在任意位置新建一个文件夹,命名为 mqtt,比如 /Document/mqtt ,将 libuuid-1.0.3.tar.gz 拷贝到该文件夹下,解压得到 /Document/mqtt/libuuid-1.0.3

tar -vxf libuuid-1.0.3.tar.gz

技术图片
  • ② 在系统 /opt/ 下以管理员身份新建文件夹/mosquitto-arm:

mkdir -p /opt/mosquitto-arm

技术图片 技术图片
  • ③ 配置源码。进入 /Document/mqtt/libuuid-1.0.3/,输入以下指令:

./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux

技术图片
  • ④ 编译。停留在/Document/mqtt/libuuid-1.0.3/,输入:

make

  • ⑤ 安装。继续输入:

make install

技术图片

??报错 Permission denied,增加管理员权限:

sudo make install

技术图片

??报错 arm-linux-ranlib: command not found,错误来源解释:arm-linux-ranlib: command not found
??重新输入:

su

技术图片

??报错su:认证失败,解决方案来源:su 认证失败
??需要重新更新 UNIX 密码:

sudo passwd

技术图片

??重新输入 su,成功进入 root 模式,再次尝试 make install,此时不再报错:

技术图片

??成功编译 libuuid:

技术图片

2. 交叉编译 openssl

  • ① 进入/Document/mqtt ,将 openssl-1.0.2g.tar.gz 拷贝到该文件夹下,解压得到 /Document/mqtt/openssl-1.0.2g

tar -vxf openssl-1.0.2g.tar.gz cd openssl-1.0.2g

??如果解压有报错,可以尝试下列命令:

tar -vxf openssl-1.0.2g.tar.gz -C openssl-1.0.2g

  • ② 配置编译参数。进入/Document/mqtt/openssl-1.0.2g/,输入:

setarch i386 ./config no-asm shared --prefix=/opt/mosquitto-arm/openssl/

技术图片

??运行结束可能会提示需要输入 make depend,照做就是,具体原因参考:make 、make clean、make depend的区别

技术图片
  • ③ 修改 /Document/mqtt/openssll-1.0.2g下的 Makefile 文件内容,如下图所示,蓝色注释表示修改前的语句,箭头所指为修改后的结果:

CC= arm-none-linux-gnueabi-gcc
AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r
RANLIB= arm-none-linux-gnueabi-ranlib
NM= arm-none-linux-gnueabi-nm

技术图片
  • ④ 进入 root 模式,编译并安装

su
make
make install

??编译结束,在 /opt/mosquitto-arm/中得到一个新的文件夹 /openssl

3. 交叉编译 mosquitto

  • ① 进入 /Document/mqtt ,将 mosquitto-1.5.tar.gz 拷贝到该文件夹下,解压得到 /Document/mqtt/mosquitto-1.5

tar -vxf mosquitto-1.5.tar.gz cd mosquitto-1.5

  • ② 编译源码,进入/Document/mqtt/mosquitto-1.5/,输入下列指令:

make WITH_SRV=no CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ CFLAGS="-I/opt/mosquitto-arm/openssl/include -I/opt/mosquitto-arm/libuuid-1.0.3/include -I/opt/mosquitto-arm/openssl/lib -I/opt/mosquit/to-arm/libuuid-1.0.3/lib" LDFLAGS="-L/opt/mosquitto-arm/openssl/lib -L/opt/mosquitto-arm/libuuid-1.0.3/lib -lssl -lcrypto -luuid"

  • ③ 安装。输入下列指令之后,在/opt/mosquitto-arm/ 下得到文件夹 mosquitto-1.5 。至此,mosquitto 的交叉编译工作完成了!

三、iTOP-4412 移植 mosquitto

1. 准备依赖

??为了将 mosquitto 移植到开发板,需要将刚才交叉编译得到的一些文件进行打包。

  • ① 新建文件夹 /Doucument/mqtt-arm 作为打包地点。
  • ② 将 /opt/mosquitto-arm/mosquitto-1.5/etc/mosquitto/下的文件 mosquitto.conf.example 拷贝到 /Doucument/mqtt-arm/
技术图片
  • ③ 将 /opt/mosquitto-arm/mosquitto-1.5/usr/local/bin/ 下的所有文件拷贝到 /Doucument/mqtt-arm/
技术图片
  • ④ 将 /opt/mosquitto-arm/mosquitto-1.5/usr/local/sbin/ 下的mosquitto拷贝到 /Doucument/mqtt-arm/
技术图片
  • ⑤ 将 /opt 下的三个文件夹 /libuuid-1.0.3/mosquitto-1.5/openssl全部拷贝到 /Doucument/mqtt-arm/
技术图片

??至此,所有依赖准备完毕,/Document/mqtt-arm问价夹内的二层文件树结构如下图所示:

技术图片

2. iTOP-4412 装载 mosquitto

  • ① 打包文件夹 /Document/mqtt-armmqtt-arm.tar.gz

tar -czf mqtt-arm.tar.gz mqtt-arm/

  • ② 挂载 U 盘,将mqtt-arm.tar.gz 拷贝到开发板的根目录,在超级终端输入:

cp /mnt/usb/mqtt-arm.tar.gz ./

技术图片
  • ③ 解压得到文件夹 /mqtt-arm

tar -vxf mqtt-arm.tar.gz

技术图片
  • ④ 拷贝 /mqtt-arm/ 中的 libuuid-1.0.3/lib/、mosquitto-1.5/lib/ 、openssl/lib/ 到开发板的 /lib 目录下。

cp -rf libuuid-1.0.3/lib/* mosquitto-1.5/usr/local/lib/* openssl/lib/* /lib/

  • ④ 拷贝 /mqtt-arm/ 中的mosquitto.conf.example 到开发板的 /etc 目录下。

cp mosquitto.conf.example /etc/mosquitto.conf

  • ⑤ 将 /mqtt-arm/ 剩余的文件全部放到开发板的 /bin 目录下。

mv mosquitto mosquitto_* /bin

  • ⑥ 打开开发板 /etc 目录下的 mosquitto.conf 文件,修改第 39 行,使其变为 user root

cd /etc
vi mosquitto.conf
上下键跳到第 39 行,按 i 进入插入模式,修改文本为 user root
按下 ESC 退出插入模式,输入冒号 : 后再输入 wq 保存退出 vi 编辑界面

技术图片

??至此,MQTT 就成功地移植到 iTOP-4412 开发板中了。

四、PC 端测试 mosquitto

??这里提供 Ubuntu 和 Windows 下的配置。需要事先简单介绍的是 MQTT 协议的三个基本对象:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。三者传输 Message 的流程如下:

技术图片

??由于开发板这边只有一个终端,因此 PC 端需要充当代理和发布者(订阅者)至少两个身份。

4.1 Ubuntu 配置及测试

??下载并安装 mosquitto。

sudo apt-get install mosquitto

??安装 mosquitto 客户端。

sudo apt-get install mosquitto-clients

(1)Ubuntu 充当服务器、发布者及订阅者

??启动 mosquitto 服务,命令如下:

service mosquitto start

??打开一个终端,订阅主题。

mosquitto_sub -h localhost -t "mqtt" -v
mosquitto_sub 表明为订阅者;
-h 表示服务器地址参数,localhost 表示服务器为本机,也可以直接输入本地 IP;
-t 表示话题(Topic),"mqtt" 为订阅的话题名;
-v 表示代码调试模式,可以输出更多的信息。

??打开另一个终端,发布主题。

mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"
-h 表示服务器地址参数,localhost 表示服务器为本机,也可以直接输入本地 IP;
-t 表示话题(Topic),"mqtt" 为发布的话题名;
-m 表示发布的 Message 内容,此时发送的是字符串 “Hello MQTT"

??不出意外的话,订阅端的终端内就会打印 Hello MQTT 字样了,说明本机 MQTT 通信完成。

技术图片

(2)Ubuntu 充当服务器、订阅者,开发板充当发布者

??启动 mosquitto 服务,命令如下:

service mosquitto start

??打开一个终端,订阅主题。

mosquitto_sub -h localhost -t "mqtt" -v

??在开发板的超级终端输入指令,发布主题。注意这里的 IP 地址需要是你的电脑的 IP 地址。Linux 下查看 IP 地址的指令为 ifconfig。

mosquitto_pub -h 192.168.1.110 -t "mqtt" -m "Hello Mqtt"

技术图片

??不出意外的话,Ubuntu 订阅端的终端内就会打印 Hello Mqtt 字样了,说明 PC 机与开发板的 MQTT 通信完成。

技术图片

(3)Ubuntu 充当服务器、订阅者,开发板充当发布者

??启动 mosquitto 服务,命令如下:

service mosquitto start

??在开发板的超级终端输入指令,订阅主题。

mosquitto_sub -h 192.168.1.110 -t "mqtt" -v

??打开一个终端,发布主题。

mosquitto_pub -h localhost -t "mqtt" -m "Hello Mqtt"

??不出意外的话,开发板超级终端内就会打印 Hello Mqtt 字样了,说明 PC 机与开发板的 MQTT 通信完成。

技术图片

4.1 Windows 配置

??下载并安装 mosquitto-1.6.10a,下载链接:链接,注意对着自己 Windows的操作位数下载,比如我下载的就是 64 位 的。

技术图片

??安装好之后,为了方便的在 cmd 里直接调用 mosquitto,还需要配置环境变量。搜索环境变量,在系统变量的 PATH 栏里编辑一个新的环境变量,路径设置为 mosquitto 的安装目录。

技术图片 技术图片

??配置好环境变量之后,打开 cmd,启动 mosquitto 服务器,检验是否安装成功。成功启动的画面如下图所示。

mosquitto -d -v

技术图片

??之后的测试除了启动服务器的指令为上面的指令之外,订阅端和发布端的指令和 Ubuntu 测试时的是一模一样的,就不再展示了。

五、参考资料



















转载技术分享jlinkv9在迅为itop-4412精英板上的应用

本文转自:https://www.amobbs.com/thread-5680586-1-1.html很多人买迅为iTop4412精英板,在Android或Linux+Qt跑起来后学习开发调试应用程序或驱动,但在linux内核运行前发生了什么?能进行什么开发工作?并没有完整资料。其实,只要一根百元... 查看详情

itop-4412开发板-串口转接小板的使用文档

本文档介绍如何使用迅为iTOP-4412精英版如何使用串口转接板,串口小板如下所示。和串口转接板模块相关的资料如下:“iTOP-4412-Android-串口测试文档(升级版)_V2.X.zip”“iTOP-4412-QtE-串口uart测试程序_v1.X.rar”“iTOP-4412-驱动-关闭... 查看详情

基于itop-4412开发板(精英版)恢复出厂设置

准备工作虚拟机:VM-Ware15.0pro操作系统:UbuntuLinux16.04工作文件夹:/home/用户名/work准备TF卡一张、读卡器一个一、iTop-4412硬件设置1、确定开发板类型Exynos4412的存储器有两种封装形式POP(左)和SCP(右)&... 查看详情

迅为-arm嵌入式开发一体化工业9.7寸屏幕平板式智能触控屏

产品名称:迅为9.7寸IPS高清屏幕适用于:【iTOP-4412精英版】【iTOP-4412全能版】【iTOP-4418开发板】【迅为-iMX6开发板】分辨率:1024*768 触摸屏类型:电容屏(五点触摸) 接线方式: FPC(也可以通过类似HDMI线方式连接)&... 查看详情

2020毕业设计选用4412开发板,实战教程,小成果不放过

...盒部分视频观看地址(更多视频教程可在B站上搜索‘迅为电子’)iTOP-4412精英版开发板硬件连接    https://www.bilibili.com/video/av82341079iTOP4412开发板系统编程前言    https://www.bilibili.com/video/av75754003... 查看详情

嵌入式开发板学习新手在itop4412开发板无界面linux操作系统使用can模块遇到问题,求解决方法?

最近想使用迅为的iTOP4412精英版开发板做关于CAN总线相关的程序设计。遇到的问题是,将购买的CAN模块连接到开发板上时,在系统界面使用ifconfig-a命令,没有发现can的信息。看起来系统没有识别这个模块。想请教下大神们,这个... 查看详情

基于itop-4412开发板(精英版)的linux4.14.2根文件系统移植(代码片段)

准备工作虚拟机:VM-Ware15.0pro操作系统:UbuntuLinux16.04交叉编译器:arm-linux-gcc4.6.2gBusyBox:busybox-1.26.2.tar工作文件夹:/home/用户名/work一、编译Linux命令集1、BusyBox源码获取Busybox官方下载地址:https 查看详情

迅为itop-4412核心板调整电压

本文转自:http://www.topeetboard.com   iTOP-4412核心板使用的电源管理芯片是三星专门针对4412研发的S5M8767,8767提供9路BUCK和28路LDO输出。每路电压的大小能够通过软件进行设置。S5M8767的驱动位于内核drivers/regulator/s5m8767.c,CPU是... 查看详情

基于itop-4412开发板(精英版)恢复出厂设置

...#xff08;左)和SCP(右),本例程的开发板是精英版SCP-1G的配置。2、启动方式设置开发板用拨码开关控制启动方式以及显卡输出,按照图的位置,从上到下编号依次分别是4,3,2,1,开关拨到左边为1右边为0... 查看详情

基于itop-4412开发板(精英版)的linux4.14.2系统led字符驱动程序设计(代码片段)

一、电路原理图1、LED灯原理图开发板底板上有两个LED灯,在开发板使用手册中能够找到其电路原理图如下:LED2和LED3都用三极管驱动,且三极管基极高电平时导通点亮LED。其中LED2驱动三极管基极与核心板KP_COL0引脚连... 查看详情

[学习嵌入式开发板]itop-4412实现nfs网络文件系统

本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统。我们使用的软硬件环境是:一台 PC,上面运行虚拟机 Ubuntu,iTOP-4412 开发... 查看详情

itop-4412开发板-嵌入式平台开机测试

iTOP-4412平台硬件的连接1.核心板和底板的连接迅为iTOP-4412开发板采用工业级进口板对板连接器,拔插方便稳定可靠,如下图所示。650)this.width=650;"id="aimg_Z9bwE"class="zoom"width="600"src="http://www.eeboard.com/bbs/data/attachment/forum/201606/28/151457eq 查看详情

itop-4412开发板网盘资料介绍

...文件07-Linux-x86-Qt5.3.2以及QtE4.7.1应用视频08-Linux驱动教程09-迅为电子Java教程10-uboot教程  查看详情

4412开发板免费视频教程

...。   4412开发板免费视频教程观看地址(关注迅为电子B站,获得最新免费视频)iTOP-4412精英版开发板硬件连接:https://www.bilibili.com/video/av82341079iTOP4412开发板系统编程前言:https://www.bilibili.com/video/av75754003iTOP44 查看详情

嵌入式开发板丨arm开发板学习必备资料-迅为电子

摘要:ARM开发板迅为三星Exynos嵌入式开发平台超强GPS模块iTOP-Exynos4412开发板采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB双通道DDR3的内存及16GB存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高... 查看详情

嵌入式开发板itop-4412开发板初学arm开发板首选!提供技术支持!

摘要:ARM开发板迅为三星Exynos嵌入式开发平台超强GPS模块iTOP-Exynos4412开发板采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB双通道DDR3的内存及16GB存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高... 查看详情

itop-4412开发板10.1寸[金属框]屏幕硬件修改支持排线和hdmi

注:iTOP-4412开发板(精英版和全能版)同时也有10.1寸屏幕,如果金属框10.1寸屏幕(如下图所示)转接板使用的默认焊接方式则默认只能使用HDMI线,不能支持FPC排线。本文档介绍,如何修改转接板背面的配置电阻,在iTOP-4412底板... 查看详情

开创学习的四核时代-itop-4412开发板开源硬件平台

...家配备三星S5M8767电源管理。接口丰富。性能强劲。另外迅为专为开发板刚開始学习的人量身打造的手把手全视频讲义。让高端ARM开发像单片机一样简单。 趁刚刚收到4412,让我们来一 查看详情