关键词:
??需要在 Linux 系统下先交叉编译好 mosquitto 再移植到开发板中,至于最后 PC 端使用 Linux 还是 Windows 都可以。
??注意事先要配置好交叉编译环境
一、下载依赖包
??编译 mosquitto 需要依赖 libuuid 和 openssl。因此需要下载下面三个文件,注意最好版本保持一致,其他不保证成功:
二、交叉编译
??以下编译均在已经配置好交叉编译环境的 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-arm 为 mqtt-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,让我们来一 查看详情