嵌入式
文章平均质量分 63
勤勉之
码字中.....。
展开
-
Free RTOS中的任务睡眠
务睡眠函数是一个非常有用的操作系统API,几乎每个RTOS都提供了一个类似的API给应用程序调用,在ucosii里,它叫OSTimeDly;在Nucleus里,它叫NU_Sleep;在FreeRTOS里,它叫vTaskDelay。它们的目的都是一样的,告诉操作系统:“我现在没有事情要做,请把CPU分配给其它任务,并在某个时间点把我唤醒”,这个时间点就是函数的入参,一般都是以tick为单位,如下所示:关于tick和时间片的详细说明见。转载 2024-04-03 17:19:23 · 569 阅读 · 4 评论 -
【BLE】BLE扫描参数
软件: nRF SKD Ver 15.2, S140 SoftDevice API文档路径: ~/nRF5_SDK_15.2.0_offline_doc/s140/structble__gap__scan__params__t.html1. ble_gap_scan_params_t::active; 值: 1: 主动扫描, 0: 被动扫描;如果需要获得扫描响应,需要 Central 主机设置为主动扫描。如果只是需要广播数据则设置为被动扫描。两者区别在于:主动扫描可以获得广...转载 2021-09-10 16:29:43 · 2234 阅读 · 0 评论 -
【蓝牙BLE】BLE模块FOTA升级方法
近日在蓝牙开发过程中,遇到了FOTA功能的实现,所以去了解了下蓝牙模块的OTA实现方式,下面做一下记录:1.概述FOTA即为 (firmware over the air) 即通过空中无线方式实现设备固件升级。可以通过无线通信方式实现OTA,比如2G/3G/4G/WiFi/蓝牙/NFC/Zigbee,他们都支持OTA。也可以通过有线方式进行固件升级,比如通过UART,USB或者SPI通信接口来升级设备固件。Ota就是远程固件升级即DFU(Device Firmware Update)。不管采用O转载 2021-07-13 11:22:53 · 1851 阅读 · 0 评论 -
【蓝牙开发】低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读
今天在蓝牙功能开发的过程中,学习到的一些知识,在此小记一下:什么是蓝牙service和characteristic?到底怎么理解蓝牙profile?ATT和GATT两者如何区分?什么又是attribute?attribute和characteristic的区别是什么?蓝牙的互联互通为什么能做得这么成功?本文将对以上问题进行阐述,并重点阐述蓝牙协议栈中的ATT层和GATT层,本文偏重理论,如果你对低功耗蓝牙不是很了解,建议配合如下两篇文章一起阅读:1. 蓝牙协议栈架构如文章“深入浅出低功耗蓝牙转载 2021-07-12 17:32:03 · 1515 阅读 · 0 评论 -
【智能硬件】蓝牙扫描间隔和扫描时间窗的原理
原创 2021-05-26 16:02:56 · 1957 阅读 · 0 评论 -
【嵌入式linux】bootloader详细介绍
Bootloader介绍:1、Bootloader是硬件启动的引导程序,是运行操作系统的前提。2、是操作系统内核或者用户应用程序运行之前运行的一小段代码,堆软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;3、嵌入式系统中,整个系统的启动加载任务通常由bootloader完成。4、主要是初始化硬件设置一些环境变量参数,比如加载系统的地址或者连接的主机ip等操作模式自启动模式:bootloader从目标机上的某个固态存储设备上将操作系统加载到ram中,整个过程...原创 2021-05-07 23:39:57 · 2589 阅读 · 1 评论 -
【嵌入式】嵌入式中的总线介绍
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,。按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。扩展资料数据总线原创 2021-05-07 23:38:12 · 1882 阅读 · 2 评论 -
Linux 系统的开机启动顺序(板子的启动顺序)
加载BIOS - > 读取MBR -> boot loader - > 加载内核 - > 启动init进程 ->启动内核模块 - >执行不同级别运行的脚本程序 - > 执行/etc/rc.d/rc.local(本地运行服务) ->执行/bin/login 就可以登陆了。...原创 2018-08-13 17:04:42 · 1046 阅读 · 1 评论 -
【嵌入式linux】进程间通信的几种方式
管道:无名管道PIPO 只能用于亲缘关系的进程间通信 半双工的通信模式。 有名管道 FIFO 可以用于互不相关的两个进程间通信 先进先出规则 信号内核产生信号,用户注册信号处理函数,来进行信号事件的处理共享内存最高效的进程间通信方式,进程可以直接读写内存,不需要任何数据的拷贝 多进程通信过程中。内核分配有共同的内存区,需要访问的进程可以将其映射到自己的私有地址空间。 但是需要依靠互斥锁或者信号量来保证同步性。防止阻塞。共享内存实现:(1)、创建共享内存 ...原创 2021-05-06 23:24:46 · 859 阅读 · 0 评论 -
【嵌入式智能硬件原理】WIFI作为sta连接原理和过程
1、首先选择sta或者ap,如果是ap模式,则此时wifi就是个热点,是供其他设备连接的。如果是sta模式,则此时wifi设备就可以连接其他的ap热点,比如手机连接路由器。此时手机就是sta2、作为sta连接过程中,需要先设置ssid即将要连接的热点的账号(SSID就是这个用于用户识别的的名字,也就是我们经常说到的wifi名。),然后设置加密模式。可选的有好多种,比如WEP安全加密方式和WPA安全加密方式。3、然后设置key即wifi的password。连接过程有三个阶段:终端在连接..原创 2021-05-06 17:47:42 · 2293 阅读 · 1 评论 -
【低功耗蓝牙BLE】连接事件和相关参数
低功耗蓝牙连接相关的知识1、连接事件在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待150μs再发送。连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为1.25ms的整数倍。要确定从设备与主设备的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多少个连...转载 2021-01-27 17:08:58 · 1300 阅读 · 0 评论 -
【C语言】开发常用回调函数举例
开发常用回调函数:开发过程中,如果自己的sdk需要提供外部接口,并且需要提供事件通知给用户,我常用的是注册一个事件回调; 就用ota来举个例子,需要在ota开始的时候和结束的时候给用户一个事件。1、 首先,开发者需要提供注册回调函数的接口;a) 定义结构体Enum{ OTA_START, OTA_FINISH,}Event_id;b) 定义回调函数 void (*ota_event_callback)( Event_id event_id,void *data);c) 定义调用体 ,.原创 2020-12-02 15:38:43 · 507 阅读 · 0 评论 -
【工作记录】工作中需要用到的一些很方便的软件
1、软件开发过程中,经常需要画流程图,所以我找了几个好用的流程图软件,1、visio(这就不说了,大家都知道),2、mindmaster(思维导图,还挺好用)2、看代码,我经常用source insight ,这个网上下载一个,再弄个破解工具,很简单的就装好了。3、对比文档软件,beyond compare :这个比对软件挺好用,二进制也可以比,爽。4、ios软件安装工具:爱思助手。这个百度一下,按教程使用就好。5、测试使用demo代码的小工具(我主要用C),dev-c++:挺小的软件,开源原创 2020-11-13 10:33:18 · 304 阅读 · 1 评论 -
【操作系统】嵌入式开发系统的中断
我的理解是,中断是这样的:(如果有错误,请帮忙指出,thanks)【本文仅作自己的记录,不作为分享】1、各个硬件模块注册到主程序的一个中断函数,该注册函数有个参数是中断处理程序。2、一旦硬件模块调用中断函数以后,中断处理程序会开始运行,传入相应的参数,完成一次中断响应。3、响应完成以后就退出该函数,也会返回到之前的系统运行状态。4、不过,在运行中断以前,响应的寄存器数据会被保存下来,以便中断完成以后可以很快恢复。...原创 2020-10-27 21:23:49 · 502 阅读 · 0 评论 -
【C语言】指针的指针浅析代码示例
char *p =NULL;main{fun(*p);}fun(**p){ //在其中malloc p ,才能在外面main中拿到p。}原创 2020-08-19 18:03:12 · 245 阅读 · 0 评论 -
【操作系统】中断和轮询的异同点
中断的基本概念程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。二、80x86微处理器的中断80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。中断的一般过程:..转载 2020-06-08 16:26:14 · 2655 阅读 · 0 评论 -
【C语言】柔性数组----可变长度的数组
1、什么是柔性数组?柔性数组既数组大小待定的数组, C语言中结构体的最后一个元素可以是大小未知的数组,也就是所谓的0长度,所以我们可以用结构体来创建柔性数组。2、柔性数组有什么用途 ?它的主要用途是为了满足需要变长度的结构体,为了解决使用数组时内存的冗余和数组的越界问题。3、用法:在一个结构体的最后 ,申明一个长度为空的数组,就可以使得这个结构体是可变长的。对于编译器来说,此时长度...转载 2020-04-24 15:43:45 · 1306 阅读 · 1 评论 -
【嵌入式操作系统】FreeRTOS信号量mutex和semaphore的区别
今天学习信号量mutex和semaphore的区别,找到了正点原子的博客介绍,讲的挺详细的。建议大家阅读转载自:https://blog.csdn.net/nippon1218/article/details/790391971 二值信号量1.1 二值信号量简介二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别,互斥信号量拥有...转载 2020-04-23 10:55:19 · 5579 阅读 · 0 评论 -
【C语言】项目开发,小细节总结
u16->u8* 取地址,强转。 u8->u16 atoi int atoi(char *str); 类函数宏定义 例如/ #define set_num (a,15) a=15 在打印的时候,控制log级别,可以给封装的printf传入级别。 然后用宏控制打印。方便调试。 使用宏串联结构体数据赋值 #define COMMOND(NAME) ...原创 2020-04-17 16:03:19 · 597 阅读 · 0 评论 -
【蓝牙mesh】PB-GATT--provision过程中的一种广播传输载体
一个未provision的设备上电后,会发出一个不可连接的beacon广播,和一个可连接的beacon广播,带着自己的UUID信息,去寻找provisioner设备,当然,前提是该设备支持了PB ADV和PB GATT,通常设备都是强烈建议支持这两种bearer的此时,如果你的provisioner是一个手机,那么,完成设备的provision就要用到PB GATT,如果外部的provis...原创 2020-02-13 16:49:23 · 1734 阅读 · 0 评论 -
【蓝牙mesh】PB-ADV-procision过程中的一种provisioning bearers(配置广播载体)
provisioning bearer layer实现了在provision过程中provisioning PDUs的传输。mesh协议中定义了两种provisioning bearersPB_ADV PB_GATT(今日不做讲)未配网设备可以支持PB_ADV或是PB_GATT,建议在未配网设备同时实现两种bearer。provisioner至少支持一种,强烈建议provisioner支持...原创 2020-02-13 16:43:34 · 1455 阅读 · 0 评论 -
【蓝牙mesh】蓝牙Mesh的三种Model
蓝牙Mesh节点集成的Model可以分为三种类型:Server、Client和Control。Server Model:暴露自己的状态(states)给其他Model访问,比如一个灯,可以暴露开和关的状态给其他Model访问,这个灯就可以包含一个Server Model。所有Node默认需要两个Server Model:Configuration Server(0x0000)和Health S...转载 2020-02-11 20:17:04 · 1392 阅读 · 0 评论 -
【蓝牙mesh】蓝牙mesh中的两种设备角色
1、蓝牙mesh网络角色mesh网络中的设备被称为节点(Node),而非mesh网络中的设备称为未经启动配置的设备。将未经启动配置的设备转换为节点的过程称为启动配置。启动配置是一个安全的过程,原本未经启动配置的设备经过启动配置后会拥有一系列加密密钥,并被启动配置的设备识别。启动的设备可以是provisioner(配置角色),或者是provisionee(节点角色)。其中provisionee...转载 2020-02-11 19:59:30 · 2137 阅读 · 2 评论 -
【蓝牙mesh】蓝牙mesh开发简介
一个智能设备在未加入蓝牙Mesh网络之前称为Device,加入Mesh网络(Porvisioning过程)后,称为Node(节点)。每个Node可以包含多个Element(比如智能插排,每一个插孔都是一个Element),一个Element对应一个Unicast address(16bits,32767个地址,bit15=0);每个Element可以包含多个Model(用来发送、接收和处理Mess...转载 2020-02-10 16:37:09 · 1660 阅读 · 0 评论 -
【C语言】callback函数,回调函数简单例子
#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef void (*ota_start_fun)(int *num1,int *...原创 2020-01-02 16:18:50 · 1150 阅读 · 0 评论 -
【C语言】C语言打印16进制出现0xffffff现象的问题剖析!
今天在博问里面看到一个朋友的问题,大致是在网络程序中,打印出来的16进制数,莫名的出现ffffff。例如,某个byte真是值为0xc9,打印出来确是0xffffffc9。其实类似的问题不是只在网络程序中才会出现的,看示例代码: 1 #include <stdio.h> 2 int main() 3 { 4 char c = 0xc9; 5 p...转载 2019-10-12 10:27:28 · 1569 阅读 · 0 评论 -
【嵌入式智能硬件】:低功耗蓝牙GAP模式和规程
1、低功耗蓝牙的GAP(通用属性规范)有四个角色: 广播者(广播者),观察者(扫描者),外围设备(通常说的从设备),中央设备(通常说的主设备)2、模式和规程 低功耗蓝牙GAP具有以下几种模式(主要是从设备所处的状态) 1 广播模式 2 不可发现模式 3 有限可发现模式 4 一般可发现模式 5 不可连接模式 6 定向可连接模式 7 无向可连接模式...原创 2019-09-09 18:35:26 · 469 阅读 · 0 评论 -
【嵌入式智能硬件】:低功耗蓝牙三种发现模式
1、低功耗蓝牙的GAP(通用属性规范)有四个角色: 广播者(广播者),观察者(扫描者),外围设备(通常说的从设备),中央设备(通常说的主设备)2、三种发现模式: 不可发现模式。 有限可发现模式。‘ 一般可发现模式。 它们三个共同由一个AD信息标识设置,也就是2个bit位决定。不可发现模式: ...原创 2019-09-09 18:12:17 · 1344 阅读 · 0 评论 -
【蓝牙】蓝牙协议
gap协议(通用属性规范):定义了设备如何彼此发现、建立连接以及如何实现绑定,同同时描述了设备如何成为广播者和观察者,并且实现无需连接的数据传输。最后,它定义了如何用不同类型的地址来实现隐私性和可解析性。ATT协议(属性协议):定义了客户端与服务器如何相互发送符合标准的消息;GATT(通用属性协议):定义了如何发现和使用服务。特性和描述符的标准方法。...原创 2019-09-06 13:51:01 · 339 阅读 · 0 评论 -
【嵌入式智能硬件】BLE相关协议(GAP&GATT)
一、GAPGAP全名是Generic Access Profile,通用访问配置文件,它定义了蓝牙设备的角色,中心和外设,并且控制他们的连接和广播数据。广播数据有两种方式:广播数据和扫描回复数据,数据包大小最长为31字节,其中广播数据方式是必需的。广播数据就是蓝牙设备自己定时广播数据出来,让周围环境的其它设备可以扫描到它,知道它的存在,是外设主动完成的。而扫描回复数据是可选的,它会根据需要响...转载 2019-08-14 10:42:18 · 1260 阅读 · 0 评论 -
【嵌入式智能硬件】:wifi模块配网,连接家里的路由器
智能家居,物联网,互联网加一堆新的科技名词,下至草根,上至总理,都在谈论,我们已经可以看到下一个将猪吹起来的起风口,创业者在这个领域争先恐后。随之而来的是,智能家居的设备智能化,很多家电设备都安装上了 WiFi 模块, 方便用户通过手机控制和远程查看家里情况,典型的设备如智能插座,智能空调,智能净化器。转入正题,对于智能设备首次配置,这个过程简单来讲就是把 WiFi 设备初始化后,连到家里的无...转载 2019-08-07 14:12:28 · 2647 阅读 · 0 评论