如何在飞凌嵌入式T113-i开发板的Buildroot中移植MQTT协议?

在实际的项目开发中,工程师朋友们可能会需要在文件系统中移植一些工具或协议,那么该如何进行移植操作呢?

我们可以通过添加package包配置的方式在OK113i-S开发板的Buildroot中移植新功能。本篇文章,小编就以在Buildroot移植MQTT协议为例为大家介绍。

在这里插入图片描述

配置文件介绍

首先了解一下在Buildroot中移植功能时涉及到的配置文件。

查看飞凌嵌入式OK113i-S开发板源码中已有的配置文件,可以看到在路径 buildroot/buildroot-201902/package/mosquitto 里边包括以下几个文件:

  • Config.in
  • mosquitto.mk
  • mosquitto.hash
  • mosquitto.service
  • S50mosquitto

Config.in

Config.in文件通过 BR2_PACKAGE_** 作为开关来告知Buildroot需要哪个包参与编译,开关在 buildroot/buildroot-201902/configs/ 下面的 OK113I_linux_defconfig 配置文件中赋值,类似于内核中的Kconfig文件。

例如:

package/Config.in中写了调用关系

source "package/mosquitto/Config.in";

package/mosquitto/Config.in中写了BR2_PACKAGE_MOSQUITTO信息。

在这里插入图片描述

demo.mk

这个文件中声明一些包的信息,比如:指定包的版本、包源码下载链接、存放路径、编译规则、工具链等。编译时会按照这个文件中的下载地址和版本下载源码包到指定路径并进行编译和文件拷贝,相当于Makefile文件。

例如:mosquitto.mk

文件开头先写了软件包版本和下载地址,我们在浏览器访问该地址可以找到对应版本的软件包。编译时,如果源码中没有该文件,就会自动下载。

  • mosguitto-1.5.8.tar.gz
  • mosguitto-1.5.8.tar.gz.asc

除此之外文件中还定义了其他的编译规则,包括文件拷贝路径等内容。

demo.hash

这个文件会记录下载的源码包的hash校验码,防止下载的源码包出错。

demo.service

此文件是为systemd服务 ,systemd开机后会依据此文件启动demo服务,在demo.mk中会指定此文件的源路径已经安装路径。目前OK113i-S开发板没有使用该服务,因此可以不用管它。

S50demo

此文件类是demo.service,是目前OK113i-S开发板在使用的开机服务类型。

在以上5种文件中Config.indemo.mk是必须的,其他文件按需配置即可。具体配置内容可参考已有文件或根据实际情况进行书写。Mosquitto已经有写好的配置文件,可以直接用,一般配置文件由项目的维护者或开发者提供,如果自己移植的文件没有配置文件,可以参考已有配置文件写一个。

执行

我们需要在buildroot/buildroot-201902中执行

make OK113I_linux_defconfig

然后执行

make menuconfig ARCH=arm

在图形配置界面进行配置(如果执行报错,请先安装该指令:sudo apt-get update 和 sudo apt-get install ncurses)。

进入图形配置界面后输入“/”搜索要配置的功能,如图搜索Mosquitto看到的信息,按提示选“1”可进入目标选项,按“空格”选择后保存并退出。

在这里插入图片描述

配置完成后,在当前目录下执行 ./build.sh对文件系统进行编译,编译完成后可查看文件系统中是否已经有对应文件。(注:如果没有网络,则编译时不能自动下载源码包,需要到下载地址手动下载源码包并放到源码包存放路径中。)

MQTT的测试验证

修改OK113i-S开发板的 /etc/mosquitto/mosquitto.conf 文件,在#user mosquitto后加一行user root,重启服务或者开发板。也可以杀掉进程并重新执行:

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

然后进行测试——

订阅test主题:

mosquitto_sub -t test &

发布test主题:

mosquitto_pub -t test -m "hello world"

能看到返回的 hello world 字样,就说明移植成功了。

以上就是在飞凌嵌入式OK113i-S开发板的Buildroot中移植MQTT协议的方法,供屏幕前的工程师小伙伴参考。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同构异机迁移方案2_目标服务器仅安装数据库软件scp物理文件

源端和目标端的数据库版本需要保持一致,补丁版本可以不一致,目标端磁盘空间不能小于源端空间,目标端只需要安装 Oracle 软件即可。 特别说明:本文档案例Oracle的安装路径不同,数据目录一致,采用scp的方式实…

关于Django部署

首先了解一下开发环境服务器跟生产环境服务器有何不同。 一、我们通过 python manage.py runserver 启动开发环境服务器,这条命令背后做了哪些事情? 1、首先加载Django项目的设置(settings) 2、检查数据库迁移,确保数…

Leetcode92:反转链表II(区间反转链表)

一、题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a…

Multisim14.0仿真(五十一)基于LM555定时器的分频器设计

一、1KHz脉冲设置&#xff1a; 二、555脉冲电路&#xff1a; 三、仿真电路&#xff1a; 四、运行仿真&#xff1a;

Day 1. 学习linux高级编程之Shell命令和IO

1.C语言基础 现阶段学习安排 2.IO编程 多任务编程&#xff08;进程、线程&#xff09; 网络编程 数据库编程 3.数据结构 linux软件编程 1.linux&#xff1a; 操作系统&#xff1a;linux其实是操作系统的内核 系统调用&#xff1a;linux内核的函数接口 操作流程&#xff…

Unity类银河恶魔城学习记录1-10 PlayerWallJump源代码 P37

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; u…

海外YouTube视频点赞刷单悬赏任务投资理财源码/tiktok国际版刷单理财

测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.7&#xff0c;根目录public&#xff0c;伪静态Laravel5&#xff0c;开启SSL证书 前端&#xff1a;修改网站的默认文档 index.html 为第一个&#xff0c; index.php 改成第二个 &#xff0c;或者前端访问 index.…

Android 应用添加系统签名权限的几种方式实现介绍

Android 应用添加系统签名权限的几种方式实现介绍 文章目录 Android 应用添加系统签名权限的几种方式实现介绍一、前言二、Android 应用添加系统签名权限的几种方式介绍1、在Android Studio添加系统签名文件2、源码编译apk添加系统签名Android.mkAndroid.bp 3、源码编译app代码…

OJ_整数奇偶排序

题干 c实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<algorithm> using namespace std;//compare函数不交换返回true bool compare(int a, int b) {//1.a奇数&#xff0c;b偶数&#xff0c;不交换//2.a奇数&#xff0c;b奇数&#xff0c;a比b…

C语言实现跳表(附源码)

最近在刷一些链表的题目&#xff0c;在leetcode上有一道设计跳表的题目&#xff0c;也是通过查阅各种资料&#xff0c;自己实现出来&#xff0c;感觉这是种很神奇的数据结构。 一.简介 跳表与红黑树&#xff0c;AVL树等&#xff0c;都是一种有序集合&#xff0c;那既然是有序…

2023年09月CCF-GESP编程能力等级认证Python编程六级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( ) A:输入 B:输出 C:控制 D:记录 答案:A 第2题 以下关于…

ffmpeg 输入文件,输入出udp-ts 指定pid

要使用FFmpeg将输入文件转换为UDP传输流&#xff08;TS&#xff09;并指定特定的PID&#xff0c;您可以使用以下命令&#xff1a; ffmpeg -i input_file -c:v libx264 -preset ultrafast -tune zerolatency -f mpegts -map 0:v:0 -map 0:a:0 -pid 0x12345678 udp://output_addr…

解决java,C#,php,python MD5加密不一致问题

JAVA写法 public static String md5Base64(final String str, final String key) throws Exception {if ((null == str) || "".equals(str)) {return "";}MessageDigest messagedigest;messagedigest = MessageDigest.getInstance("MD5");Strin…

Prompt Engneering(提示词工程)

大模型的目标是理解和生成人类语言。给定一些词语&#xff0c;语言模型可以预测下一个词语可能是什么&#xff0c;或者给定的一些词语生层对应内容。 那么如何引导它们产生期望的输出&#xff0c;或者说如何提问&#xff0c;就成为了一个关键的问题。这就引入了一个重要的概念…

QStandardItemModel与QTableView里如何设置复选框居中

笔者为这个问题思索了不少时间&#xff0c;这个问题就是c qt里创建了一个QStandardItemModel设置了表格的表头&#xff0c;往表格填充数据时&#xff0c;数据的复选框左对齐&#xff0c;想要设置复选框居中对齐&#xff0c;不知道如何处理&#xff0c;这里给出代码与运行效果&a…

用Python画一条祥龙,祝您新年龙腾万里

用Python画一条祥龙&#xff0c;祝您新年龙腾万里 龙年到了&#xff0c;祝大家新年龙行龘龘&#xff0c;龙腾万里&#xff01; 从2021年开始&#xff0c;我每年都用Python画一幅当年生肖的图。 用Python标准库turtle画一头金牛&#xff0c;祝您新年牛气冲天&#xff01; 用P…

vscode 括号 python函数括号补全

解决方法 在setting.json中添加 “python.analysis.completeFunctionParens”: true 打开设置&#xff1b; 点击图中按钮打开setting.json文件 添加 “python.analysis.completeFunctionParens”: true

apipost 简单的性能压测总结

1、简单的使用机型牌评估 1&#xff09;jdk默认256M给100用&#xff0c;推荐给1000人同时用JVM 堆栈建议2G~4G&#xff08;目前定了机型4核8G内存 2T磁盘做radio0存储&#xff09;&#xff1b; 2&#xff09;数据库配置文件写了占了2G内存&#xff08;my.cnf文件&#xff09…

Python算法100例-1.3 牛顿迭代法求方程根

完整源代码项目地址&#xff0c;关注博主私信’源代码’后可获取 1&#xff0e;问题描述 编写用牛顿迭代法求方程根的函数。方程为 a x 3 b x 2 c x d 0 ax^3bx^2cxd0 ax3bx2cxd0&#xff0c;系数a、b、c、d由主函数输入&#xff0c;求x在1附近的一个实根。求出根后&…

详解SkyWalking前端监控的性能指标

SkyWalking 从8.2.0版本开始支持对前端浏览器端的性能进行监控&#xff0c;不仅可以像以前一样监控浏览器发送给后端服务的与请求&#xff0c;还能看到前端的渲染速度、错误日志等信息——这些信息是获取最终用户体验的最有效指标。实现的方式是引入skywalking-client-js库&…