物联网协议是指在物联网环境中用于设备间通信和数据传输的协议。根据不同的作用,物联网协议可分为传输协议、通信协议和行业协议。传输协议:一般负责子网内设备间的组网及通信。例如 Wi-Fi、Ethernet、NFC、 Zigbee、Bluetooth、GPRS、3G/4G/5G等。这些协议能够确保在网络上传输的数据的安全性和可靠性。通讯协议:主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。例如 MQTT、CoAP、HTTP等。行业协议:某个行业范围内统一的标准协议。例如车联网 JT/T808、视频GB/T 28181等。01传输协议协议协议描述和...
一、前言以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。使用过Linux的童鞋们肯定知道linux系统无法直接操作硬件层,打开linux或者rt_thread代码会发现代码中都会有device的源文件,没错,这就是驱动层。二、实现原理原理就是将硬件操作的接口全都放到驱动链表上,在驱动层实现device的open、read、write等操作。当然这样做也有弊端,就是驱动find的时候需要遍历一遍驱动链表,这样会增加代码运行时间。三...
TBOX简介TBOX是一个用c语言实现的跨平台开发库。针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了各个平台独有的一些特性进行优化。这个项目的目的,是为了使C开发更加的简单高效。目前支持的平台有: Windows, Macosx, Linux, Android, iOS, *BSD等等。通过xmake支持各种编译模式:Release: 正式版编译,禁用调试信息、断言,各种检测机制,启用编译器优化Debug: 调试模式,默认启用详细调试信息、断言、内存越界检测、内存泄漏...
1. 前言玩过Linux的朋友, 是不是对Linux无所不能的串口Shell命令控制台羡慕不已, 要是自己做的STM32F系列低档次的MCU也有这种控制交互能力, 会给调试/维护和配置省下多少麻烦事呀, 比如启动/关闭调试或自检模式, 打印调试信息, 配置系统参数, 传输文件等等, 也有相当多的朋友凭借自己出色的编程能力可以实现这些功能, 这里提出我的这个解决方案, 以作交流.本平台(xc_shell)具备以下性能特点:大量主要代码, 和具体硬件无关, 移植性强,代码文件少.只有在处理用户的输入命令时, 才占用CPU资源, 且代码可裁剪到1KB SRAM和4KB Flash;用户可以非常灵活的添...
1. 函数宏介绍函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。函数宏本质上为宏,可以直接进行定义,例如:#define INT_SWAP(a,b) \ int tmp = a; \ a = b; \ b = tmp但上述的宏具有一个明显的缺点:当遇到 if、while 等语句且不使用花括号仅调用宏时,实际作用范围在宏的第一个分号后便结束。即 a = b 和 b = tmp 均不受控制语句所作用。因此,在工程中,一般使用三种方式来对函数宏进行封装,分别为...
一位项目经理带着一名硬件工程师和一名软件工程师一同坐车去参加研讨会,结果汽车在半路抛锚,于是三人就“如何修理汽车”展开了激烈的讨论。硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”项目经理托着腮帮子邪魅一笑:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”这时,软件工程师不慌不忙地说出了一句让硬件工程师和项目经理都喷饭的话:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生...”...
本文内容来自于知乎,觉得内容很不错,分享给大家。文末阅读原文可跳转至原回答链接。下文的我代表的是原作者。希望我的经历可以帮到你,帮到其他的在校学生。阶段 1大一到大三这个阶段我与大多数学生相同:学习本专业知识(EE专业),学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等),学习嵌入式项目(来源于实验室项目,自己想到的项目以及各种比赛)。关于如何学习嵌入式软件开发:① 学习51单片机。这个阶段你只需要跟着郭天翔的视频去学,只要求实现功能,不求甚解。但建议能够提出问题,比如“为什么往IO...
摘要:不同的项目,有不同的代码风格,当然也有不同的代码“癖好”。代码看的多了,你就会发现:有的代码喜欢用宏,有的代码喜欢用typedef。那么,使用typedef到底有哪些好处呢?为什么很多人都喜欢用它?1、typedef 的基本使用1.1 typedef与结构体的结合使用typedef是C语言的一个关键字,用来给某个类型起个别名,也就是给C语言中已经存在的一个类型起一个新名字。大家在阅读代码的过程中,会经常见到 typedef 与结构体、联合体、枚举、函数指针声明结合使用。比如下面结构体类型的声明和使用:struct student{ char name[20]; int age;...
最近不少小伙伴在找工作,这里我给大家分享一下面试中经常会遇到的一些嵌入式C语言问题,你看看能答上来几个呢?1用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SEC_YEAR (365*24*60*60)UL考察点:#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数如果你...
来源:https://gitee.com/chenxuuu/llcomLLCOM是一个可运行lua脚本的高自由度串口调试工具。下载exe便携版:https://llcom.papapoi.com/llcom.zipCI快照版:https://ci.appveyor.com/project/chenxuuu/llcom/build/artifacts所有正式版本:https://github.com/chenxuuu/llcom/releases/latest功能列表• 其他串口调试功能具有的功能• 收发日志清晰明了,可同时显示HEX值与实际字符串• 自动保存串口与Lua脚本日志,并附带时间• 串口断开后,如果再次连接,会自动重连• 发送的数据可被用户自定义的Lua脚本提前处理• 右侧快捷发送栏,快捷发...
平时的开发,经常需要用到很多重复的代码,因此有必要花一些时间整理一些常用的、通用的代码,到时候就可以直接拿来用了。如果没有精力自己去整理,也可以用一些网上比较成熟的代码。这个库里包含了很多常用的外设驱动及常用器件的驱动:USART、I2C、SPI、ADC、DAC、RTC、USB、PWM、ILI9341、MPU6050等。本文推荐一个开源的STM32外设驱动库。项目地址:https://github.com/MaJerle/stm32f429 每个驱动的使用都配有单独的keil工程的例子: 每个工程都支持如下四个目标板: 有相关开发板的话可以直接用来测试。 核心代码...
RK3568 Debian11+RT-Thread混合内核部署方案。方案:3个核(Linux或Debian) + 1个核(RT-Thread)以下视频为:YY3568混合部署的演示视频。欢迎关注视频号,我们将准备一场直播,讲解如何在YY3568混合部署Debian+RT-ThreadDebian-AMP工程amp工程,下载链接:http://dd.youyeetoo.cn:5000/sharing/HhtpwagEr登录下载链接,然后点击 “下载” 按钮进行下载。将下载好的固件迁移到ubuntu中。编译构建搭建编译环境sudo apt-get updatesudo apt-get install scons git gnupg flex bison gperf libsdl1.2-dev \libesd-java libwxgtk3.0-dev ...
概要随着科技的飞速发展,计算需求日益复杂和多样化,传统的单核处理器已难以满足所有应用场景的需求。在这样的背景下,异构多核系统应运而生,成为推动计算领域进步的重要力量。异构多核系统不仅提高了计算效率,还优化了能耗,为众多领域带来了革命性的变革。异构多核系统是指在一个芯片上集成多种不同类型的处理器核心,这些核心可能采用不同的指令集架构(ISA),具备不同的性能特性和功耗要求。这些核心可以是高性能的通用处理器核心,也可以是专为特定任务设计的专用核心,如图形处理单元(GPU)、数字信号处理器(DSP)或神经网络处理器(NPU...
文章描述基于Rhealstone的系统实时性的测量基准的框架--R-Rhealstone框架。在嵌入式软件设计和集成中,实时多任务操作系统的性能分析是至关重要的,它需要保证应用的时间限制得到满足,即是运行时间不能超过应用的时间限制。为了选择满足用于特定应用的嵌入式系统的一个适当的操作系统,我们需要对操作系统服务进行分析。这些操作系统服务是由形成性能指标的参数确定的,既定的性能指标包括上下文切换时间、任务抢占时间、中断延迟时间、信号量混洗时间、死锁解除时间、信息传输延迟。关于实时操作系统对性能指标进行分析,是为了选择满足用于特定应...
这篇文章主要描述利用RT-THREAD+CherryUSB制作DapLink调试器(R_DapLink)全流程。这里先感谢网友:sakumisu提供cherryUSB协议栈的技术支持。什么是下载调试器 简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。什么是标准 简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。符合某种内核的单片机Q,都可以使用这种协议来下载程序。JTAG和SWD其实都是一种标准的协议。比如JTAG和SWD,都支特下载ARMQ内核单片机的程序...
当今世界,随着科技的不断进步,生物识别技术已经成为了安全和身份验证领域的热门话题之一。如:人脸识别,指纹识别,虹膜比对,掌纹识别等。其中,掌纹识别技术作为一种生物特征识别方法,因其高度精准和高度安全性而备受关注。在这一背景下,越来越多的应用领域开始采用掌纹识别技术,包括金融、安全、物流和智能门禁等。本文将介绍如何在X86架构的嵌入式系统上部署一个开源的掌纹识别算法。本文我们主要描述掌纹识别开源库:EDCC-Palmprint-Recognition,并且运行在风火轮科技的youyeetoo X1开发板(x86开发板)。youyeetoo X1 是一款由深圳风火轮...
市面上有许多嵌入式GUI库可供选择,包括开源GUI库和闭源GUI库,开源GUI库:LVGL,EmWin等;闭源GUI库:TouchGFX,柿饼GUI等。本次开发教程的测试板卡来自创龙科技的TLT113-EVM国产工业评估板,基于全志科技T113-i双核ARM Cortex-A7 + 玄铁C906 RISC-V + HiFi4 DSP异构多核处理器设计,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,稳定可...
Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和丰富的功能而备受青睐。Qt能够为工业领域带来什么好处:- Qt提供了强大的图形引擎,使开发人员能够创建具有吸引力和高性能的用户界面。 - Qt允许开发人员根据具体需求定制用户界面和功能。这对于满足不同行业和项目的独特需求至关重要,使工业应用能够实现个性化的解决方案- Qt提供了丰富的库和工具,涵盖了各种应用程序开发需求,包括图形、网络通信、多...
概述本次评测开发板--创龙T113-i工业开发板,这是一款基于全志科技处T113-i理器, 采用双Cortex-A7 + Xuantie C906 RISC-V + HiFi4 DSP,可运行Linux操作系统,外设驱动丰富,网络功能强大,支持1080P@60fps JPEG/MJPEG视频硬件编码,以及4K@30fps H.265、4K@24fps H.264视频硬件解码。创龙T113-i开发板开箱创龙T113-i的包装非常精致,包装盒上醒目的印有创龙科技的LOGO,内部缓冲棉结构设计很充足,充分保护了内部设备免受运输途中的损害。T113-i开发板和LVDS显示屏都是用静电袋进行包装,可以防止人体静电导致设备损坏。创龙T113-i提供了丰富配件,...
号外,号外。。。深圳风火轮科技又推出新品啦--youyeetoo X1。youyeetoo X1 是一款由深圳风火轮科技推出的x86架构单板电脑(SBC),可运行全功能版的windows和Linux, 具备低成本,高性能的特点(11代Intel CPU N5105),它主要面向AIOT和自动控制 市场,尺寸只有手掌大(115 * 75mm),接口却非常丰富,内置了3路串口UART,2路HDMI,6路USB口、1路I2C、1路SPI、5路GPIO等 AIOT物联网常用的接口,还能接7寸MIPI触摸屏。本篇文章我们在实战开发,将youyeetoo X1部署成mqtt网关。下面我们看看需要做哪些工作:切换系统youyeetoo X1默认为windows系统,我们mq...
什么是libbpf-bootstraplibbpf-bootstrap是一个开源项目,旨在帮助开发者快速启动和开发使用eBPF(Extended Berkeley Packet Filter)和libbpf的程序。eBPF是一种可以在Linux内核中运行的程序,提供了强大的网络过滤、系统调用监控和性能分析等功能。libbpf是一个库,用于加载和管理eBPF程序和map。libbpf-bootstrap提供了一些样例程序和模板,帮助开发者理解如何使用libbpf创建、加载、管理eBPF程序,并与这些程序进行交互。libbpf-bootstrap开源链接:https://github.com/libbpf/libbpf-bootstrap/「以下是libbpf-bootstrap的一些主要特性:」样例程...
bpftrace 通过高度抽象的封装来使用 eBPF,大多数功能只需要寥寥几笔就可以运行起来,可以很快让我们搞清楚 eBPF 是什么样的,而暂时不关心 eBPF 复杂的内部机理。由于 bpftrace 深受 AWK 和 c 的影响,bpftrace 使用起来于 AWK 非常相似,那些内核 hook 注入点几乎可以按普通字符串匹配来理解,非常容易上手。前面我们介绍了如何部署bpftrace工具,并且介绍了如何运行bpftrace脚本,这篇文章将介绍bpftrace脚本的语法。bpftrace脚本语法脚本格式bpftrace脚本基本格式如下:probe:filter: { actions;}bpftrace语法深受AWK的影响,{前的部分相...
在前面我已经分享了关于ebpf入门的文章:。这篇文章介绍一个基于ebpf技术的强大工具--bpftrace。在现代计算机系统中,了解系统的内部运行情况对于诊断问题、优化性能以及进行安全监控至关重要。bpftrace作为一款强大的跟踪工具,为开发人员和系统管理员提供了一种独特的方式来监视和分析Linux系统的内部运行。本文描述bpftrace的原理和使用。bpftrace「bpftrace是基于eBPF和BBC实现了通过探针机制采集内核和程序运行的信息,然后用图表等方式将信息展示出来,帮助开发者找到隐藏较深的Bug、安全问题和性能瓶颈。」「bpftrace是一种高级跟踪,适用于...
前言非常荣幸参与这次的开发板评测,感谢杭州平头哥半导体有限公司和Beagle社区的支持,我拿到了全球首款高性能 TH1520 RISC-V SBC开发板 BeagleV-Ahead。BeagleV AHead 开发板采用平头哥的曳影TH1520 作为主控,是Beagle家族开源的RISC-V 单板计算机(SBC),非常适合开源社区的RISC-V 开发人员。BeagleV AHead 传承了Beagle 开发板的统一设计语言,采用BeagleBone Black 的外形尺寸,完全一样的P8 和P9 扩展接口,所以支持现有的BeagleBone扩展板。BeagleV Ahead 搭载强大的四核RISC-V 处理器、丰富的配置,却具备超高性价比,是一款物美价廉、偏...
RTools工具是之前开源的一个工具,其目的是将平时要用到的工具集成在一起,方便使用;也有一段时间没有更新新功能了。本次新功能增加的同时,UI重构了一遍。更加方面快捷,后续将不断新增加功能。在实际项目开发中HTTP是我们经常使用的,嵌入式设备往往作为客户端,而服务器一般都是部署在云端等设备上,这对于调试过程其实是很不方便的,其实网上也有更多工具可以在自己的PC上一键部署为HTTP服务器。例如:MyWebServer工具。虽然有像MyWebServer工具这么方便的工具,但是对于博主来说,还是不太便捷的,又要打开一个工具,所以想着将MyWebServer工...
笔者在很早之前就看eBPF这类似的文章,那时候看这个技术一脸懵逼,不知道它是用来做什么,可以解决什么问题。所以也没有太关注这个技术。很庆幸最近刚好有机会研究这个技术。什么是BPF「BPF的全称是Berkaley Packet Filter,即伯克利报文过法器,它的设计思想来源于 1992 年Steven McCanne和Van Jacobson写的一篇论文“The BSD packet filter. A New architecture for user-level packet apture' (《BSD数据包过滤器:一种用于用户级数据包捕获的新休系结构》)。最初,BPF是在 BSD 内核实现的,后来,由于其出色的设计思想,其他操作系统也将其引入包...
REventBus背景在实际的项目开发中,经常会遇到业务与业务,组件与组件,业务与组件之间的通信,举个例子:当有烟雾传感器检测到烟雾超标时,需要打开排气扇排气,同时显示烟雾浓度显示到显示器中,供管理人员检视。处理这样的逻辑有几种策略。如下:排气扇任务和显示器任务,不断的查询烟雾浓度,各自处理检测烟雾浓度是否超标。烟雾模块提供注册监听接口,排气扇任务和显示器任务分别注册监听,当浓度超标时,告知监听任务。以上两种策略都存在很大的问题,问题分析:第一种策略,每一个任务都需要不断检查判断,这会导致资源的浪费,而且代码也会...
现在很多项目开发都逐渐的迁移到Linux环境下。但是Linux开发单片机就没有像Windows下开发那么方便,它没有对应开发工具(KEIL,IAR等),它们自带烧录等功能。所以在Linux上开发单片机需要安装下载固件的工具--JLink。JLink环境搭建我的开发环境是Ubuntu 20.04JLink环境搭建比较简单,安装包下载链接:https://www.segger.com/downloads/jlink/JLink_Linux_V788b_x86_64.deb在Ubuntu的terminal中执行如下命令:rice@rice:~/jlink_test$ wget https://www.segger.com/downloads/jlink/JLink_Linux_V788b_x86_64.deb--2023-05-11 11:51:48-- htt...
风火轮近来又推出一款新的嵌入式主板YY3568,它是一款基于瑞芯微RK3568 4核处理器的ARM主板,性价比极高;现在瑞芯微的旗舰款是rk3588主打性能,这个rk3568是主打性价比的定位,接口丰富,算力能满足大部份端级的需求,价格又做到极低,用到机器人、广告机、门禁闸机,自动售卖机控制等等走量的场景最适合,给这个本来就热闹的市场加入了新的活力!采用核心板+功能底板的设计方式RK3568采用四核64位Cortex-A55处理器,全新ARM V8.2-A架构,主频高达2.0GHZ,Mali G52,1TOPS算力。丰富的接口:5路串口,1路CAN,30针排针扩展接口丰富的显示接口:2路D...
概述RPC(Remote Procedure call)远程过程调用。其分为两部分:远程过程和过程调用。远程过程是指每台机器上提供的服务,过程调用就是对远程过程调用以及数据传输。RPC用通俗的语言描述:客户端在不知道调用细节的情况下,调用存在于远程设备上的某个对象,就像调用本地应用程序中的对象一样。RPC比较正式的描述:一种通过传输介质从远程设备程序上请求服务,而不需要了解底层传输介质的协议。按照我对RPC的理解,我将RPC分为三层:接口层,协议层,传输层。接口层:客户端实现了服务端的接口代理,而服务端的接口为具体实现。协议层:客户端根据规...