自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (2)
  • 收藏
  • 关注

原创 BLE 技术(九)--- SIG MESH Models 是如何设计的(下)?

SIG 设计或定义了哪些MESH Models?一个Model 通常定义了哪些 states、messages、behavior / procedure?MESH client model 与MESH server model 之间传输的messages 如何由Access Layer 承载、Transport Layer 加解密认证和分段重组的?MESH State transition 是如何进行的?用户如何配置MESH 节点元素?用户如何及时获知MESH 节点元素的故障或错误信息?

2021-06-22 22:08:08 2708 2

原创 BLE 技术(八)--- BLE MESH 各层报文是如何设计的(上)?

前篇博文从解决问题的角度介绍了SIG MESH 协议的设计方案,本篇博文从MESH 消息报文在各协议层的传递过程,介绍SIG 是如何设计MESH 报文结构的,又是如何处理MESH 报文消息的?Bearer Layer 有哪几种报文格式?各报文每个字段是如何实现设计功能的?Provisioning Process 是如何进行的?Key Refresh 和IV Update 是如何进行的?Network Layer 是如何实现认证加密和模糊混淆的?Transport Layer 是如何分段重组的?

2021-06-15 22:11:04 2598 1

原创 BLE 技术(七)--- BLE MESH 是如何设计的?

BLE 协议难以满足物联网时代大规模设备互相通信的需求,于是SIG 在2017 年发布了BLE MESH 协议。SIG MESH 是如何实现大规模设备间多对多通信的?SIG MESH 是如何定义消息报文的?SIG MESH 采用了怎样的消息传递模型?SIG MESH 设备间是如何寻址的?物联网通信的安全性日益重要,SIG MESH 是如何应对各种网络攻击,保证通信安全的?SIG MESH 设备需要持续接收可能发给自己的消息报文,如何支持低功耗节点入网呢?如何支持现有大量的BLE GATT 设备入网呢?

2021-05-31 21:57:27 5577 5

原创 IOT-OS之RT-Thread(十八)--- 如何使用MQTT 协议实现OneNET 远程监控?

物联网时代,我们想把周边的嵌入式设备接入Internet,依托云平台提供的各种服务,实现对嵌入式设备的远程监测和控制,甚至是远程OTA 升级等。各大云平台厂商经常谈到的“云-管/网-边-端”是什么?我们如何将本地设备接入云平台呢?以OneNET 云平台为例,平台域和设备域分别如何配置才能让设备顺利接入云平台?物联网设备接入云平台常用MQTT 协议通信,Paho-MQTT 的实现原理是怎样的?OneNET SDK的实现逻辑是怎样的?我们如何开发应用实现数据点上传、响应下发命令、远程OTA 升级等功能呢?

2021-05-16 23:10:24 1321 1

原创 Web技术(七):如何使用并实现MQTT 消息订阅-发布模型?

物联网时代,大量的嵌入式设备需要接入网络,并完成复杂的消息传递过程。基于请求响应的单对单同步通信协议 -- HTTP 已经难以满足大规模物联网设备的通信需求,因此需要为物联网通信设计一种新的消息传递机制,MQTT 实现的订阅-发布消息模型就可以满足物联网通信需求。什么是订阅-发布消息模型呢?这种消息传递模型有哪些应用呢?订阅-发布消息模型除了用于复杂网络节点间的通信,是否可用于进程或服务间通信呢?MQTT 是如何实现消息订阅-发布机制的呢?MQTT 又是如何保证网络通信安全的呢?

2021-05-12 19:09:19 5047 3

原创 如何为BLE 设备添加OTA DFU 空中升级服务(下)?

前文介绍了BLE 设备实现OTA DFU 的工作原理和执行过程,现在的重点是,如何为自己开发的BLE 工程添加BLE DFU Service 呢?DFU Service 根据是否需要配对绑定,还可以分为Buttonless DFU without bonds service 和Buttonless DFU with bonds service 两种,往我们的工程中添加这两种DFU 服务有何区别呢?这两种DFU Service 分别依赖哪些Libraries?我们如何解决添加DFU 过程中遇到的问题?

2021-04-21 21:04:27 1657 1

原创 如何为BLE 设备实现OTA DFU 空中升级功能(上)?

我们开发的BLE peripheral 设备通常都有代码升级的需求,不管是解决先前的bug,还是增加新的功能。很多BLE peripheral 仅留出一个BLE 无线通讯接口,我们如何通过OTA 方式实现BLE 程序代码的空中升级呢?BLE DFU 的工作原理和升级过程是怎样的?如何实现无任何人工干预的OTA 升级?我们如何保证BLE DFU 过程的安全性?如何校验DFU Package 与当前固件是否兼容?BLE DFU 对存储空间有何要求?Unbonded DFU 和Bonded DFU 有何区别?

2021-04-16 20:59:36 2875 2

原创 如何抓包分析BLE 空口报文(GAP + GATT + LESC procedure)?

对于通讯协议,我们要了解通讯过程的详细信息,需要获取通讯过程中交互的报文以及时间,如何抓取BLE 通讯报文呢?如何解析抓取到的BLE 报文呢?通过抓取到的BLE 数据包,我们可以看到BLE 设备都广播了哪些信息?如何建立连接的?如何交换feature、更新连接参数、payload length、PHY的?如何发现并访问Service、Characteristic、Characteristic Descriptor 的?如何配对并加密链路的?如何协商出LTK 的?如何分发IRK、CSRK 的?

2021-04-12 01:48:17 4855 4

原创 如何实现BLE 最大数据吞吐率并满足设计功耗要求?

我们开发BLE 设备多数都有两点要求:一是低功耗,电池供电需要持续工作数周甚至数个月;二是将BLE peripheral 产生的数据快速传送给central,传输数据功耗较高,提高传输速率缩短传输时间也有利于降低平均功耗。我们该如何设置广播参数与连接参数以达到我们要求的功耗呢?该如何设置连接参数与报文长度(PDU / MTU)以尽可能达到最大传输速率呢?

2021-04-08 23:54:25 1977 2

原创 代码调试跟踪与优化(三)--- 如何调试Fault 异常?

我们在开发嵌入式代码时,经常会遇到处理器无法启动或系统停止响应的情况,比较常见的是处理器触发了Fault 异常,并停留在Fault 异常处理程序内循环,我们如何分析产生Fault 异常的原因呢?如何借助fault status / address registers 获知产生fault 的原因呢?如何跟踪定位产生fault 的具体代码行呢?有哪些调试工具可以帮我们快速分析定位解决fault 呢?如何设计fault handlers 以输出fault log 帮我们快速定位分析解决系统bug?

2021-03-24 20:08:40 3676 3

原创 代码调试跟踪与优化(二)--- 如何调试嵌入式代码?

我们在进行嵌入式系统开发调试时,受限于嵌入式芯片资源和性能,一般采用远程调试。在调试嵌入式底层代码时,gdbserver 无法运行,我们该怎么调试底层代码呢?J-LINK、ST-LINK、CMSIS-DAP 等硬件调试器在嵌入式开发调试过程中扮演了怎样的角色呢?目标芯片内部是如何处理Debug and Trace 信号的?我们如何借助VS Code Cortex-Debug 或IDE 实现可视化调试的?如何借助SEGGER Ozone 和SystemView 实现可视化实时监测跟踪系统运行详情的?

2021-03-21 22:36:51 2226 2

原创 代码调试跟踪与优化(一)--- 如何用GDB 调试代码?

我们在开发软件时,免不了引入一些Bug,这就需要借助各种调试跟踪工具,通过查看当前的执行指令、内存数据、运行日志等信息,分析出产生bug 的可能原因,并给出解决方案。本文主要以GDB 为例,简单介绍GDB 的调试原理是怎样的?GDB 常用的调试命令有哪些?GDB 如何配合VSCode实现可视化调试?GDB 远程调试是如何实现的?

2021-03-17 01:09:11 2472 2

原创 数据结构与算法分析(十八)--- 如何使用动态规划高效寻找最优解?

对于多阶段决策问题,我们使用回溯剪枝算法虽然可以穷举所有可行解,但复杂度太高阶。现实问题通常只关注最优解,针对多阶段决策最优解问题,我们可以使用动态规划算法大幅降低求解复杂度。动态规划的核心是划分阶段和可供决策的状态,然后找到阶段递推的状态转移方程,以便从初始状态递推到目标最优解。由于动态规划后面阶段的最优解通常跟前一阶段多个状态相关,因此存在大量的重叠子问题,通常使用备忘录或状态转移表解决重叠子问题重复求解的问题。如果后面阶段的最优解跟前面阶段无关,只需要选择最快逼近目标值的状态分支,可用贪心算法更高效。

2021-01-15 22:56:18 1000

原创 数据结构与算法分析(十七)--- 怎么用回溯剪枝高效穷举所有可行解?

当我们遇到一个比较复杂的问题时,通常会想到将一个复杂的问题分解为多个简单的等价子问题去解决。关键是如何分解复杂问题呢?我们可以从两个大的维度去分解:一个是从空间维度上将原大规模问题分解为多个等价的小规模子问题,再把容易求得的小规模子问题的解合并即可得到原大规模问题的解,这就是分治算法;另一种是从时间维度上将原多阶段决策问题分解为多个等价的单阶段决策子问题,再按照DFS 深度优先遍历顺序尝试所以的决策组合,所有满足约束条件的解的组合共同构成原多阶段决策问题的解,这就是回溯剪枝算法,本文以排列组合为例介绍其原理

2021-01-10 23:20:29 698 2

原创 GitHub社会化编程 --- 基础篇

一、社会化编程GitHub创造了社会化编程的概念。随着GitHub的出现,软件开发者们才真正意义上拥有了源代码。世界上任何人都可以比从前更容易获得源代码,所有人都平等的拥有了更改源代码的权利,并在自由更改后加以公开。这在软件开发领域是一场巨大的革命,而革命领导者GitHub的口号便是“社会化编程”。如今,世界众多程序员都在通过GitHub公开源代码,同时利用GitHub支持着自己日常的软件开发。...

2020-12-28 19:00:49 685

原创 数据结构与算法分析(十六)--- 如何设计更高效的字符串匹配算法?(BF + RK + KMP + BMH)

字符处理操作中最常用的是字符串匹配查找算法,本文从最基础的Brute Force 匹配算法开始,分析可能对其的优化方向,就像将基础排序算法优化为归并、快速等高级排序算法一样精彩。首先,从字符比较过程入手,借助哈希值唯一标识的作用,将模式串比较时间从O(m)降低到O(1)。然后,充分利用前面已经比较过的匹配信息,让主串游标不回退,将整个文本串比较时间从O(m*n) 降低到O(n)。最后,利用字符匹配自身的规律,从后往前寻找坏字符,跳过跟主串坏字符不可能匹配的情况,将最好情况时间复杂度提升到O(n/m)。

2020-12-20 16:55:19 684

原创 数据结构与算法分析(十五)--- String 和Regex 支持的字符处理操作(C++11)

字符处理是计算机的核心任务之一,各种编程语言也为字符处理提供了丰富的库函数。由于字符处理中查找匹配操作很常用,C++ 为此设计了string class 和regex class,以保证整个字符串复制传递的最优化。本文介绍了string class 支持的字符串创建、赋值、销毁操作,元素访问、容量管理操作,字符序列比较、新增、删除、替换操作,字符数值转换操作,查找、匹配操作等。C++ 提供了regex class 允许开发者使用正则表达式实现更复杂的字符序列查找、匹配、替换、分割操作。

2020-12-15 21:57:02 479

原创 数据结构与算法分析(十四)--- 字符串和字符处理函数库(C11)

计算机的两大核心任务是数值计算和字符处理,分别对应数学语言和自然语言,各种计算机编程语言也分别为数值计算和字符处理提供了丰富的库函数。本文从字符编码与字符类型开始,介绍常用的字符串和字符数组操作函数,包括字符类型识别、大小写转换,数值格式与字符串格式的互相转换,字符串和字符数组的比较、拼接、复制替换、查找匹配、分割等操作。

2020-12-11 00:54:31 481

原创 从一场面试谈高效学习

近期经历了一场五小时的面试,对软件开发岗的面试流程有了点直观感受,写篇博客记录下自己的一些心得。整个面试过程我总结主要考察以下四个方面:知识体系的深度与广度、提供适用解决方案的能力、方案代码实现并Debug的能力、融入团队协作网络的能力。面试过程主要考察候选人的能力和潜力,校园招聘更看重潜力,社会招聘更看重能力。面试官主要评估候选者的潜力和能力,面试者应尽可能清晰简洁的展现出自己的潜力和能力,让面试官的评估尽可能准确,双方目标一致也可算合作关系了。

2020-11-24 22:34:34 1062 2

原创 如何实现扫码连接BLE 设备的功能(以nRF5 为例)?

本文使用nRF52 开发板作为蓝牙主机,来实现扫码连接指定BLE设备并进行通讯的功能。PC 通过摄像头或扫码枪获得目标设备的MAC 地址信息,并经UART 传给nRF52 DK,蓝牙主机将接收到的地址信息处理为LSB 48-bit 格式后将其设置到扫描过滤器中,并启用匹配即连接功能,nRF52 DK 如果扫描到匹配的目标设备立即向其发起连接。连接建立后,蓝牙主机发现目标设备公开的NUS 服务,并借助该服务以Write/Notify 方式相互传输数据,同时实现了PC通过UART 指令获得RSSI 的功能。

2020-10-31 14:36:35 3981 2

原创 BLE 技术(六)--- GATT Profile + ATT protocol + L2CAP(Core_v5.2)

GATT Profile 采用“Server – Client” 架构,Server 专注于定义如何使用一个或多个属性来实现某种特定的服务,以及如何发现并使用这些服务;Client 专注于定义如何使用一个或多个服务来满足某种特定的应用需求。Server 定义的每个单独服务十分简单、而且是原子化的,可以让每个服务的行为更简单明确,同时让不同服务之间的组合更丰富多样。Client 使用不同的原子服务组合,可以满足丰富多样的场景需求,相同的服务可以在不同应用中复用,满足高内聚、低耦合的设计原则。

2020-09-26 00:46:56 6291

原创 BLE 技术(五)--- Generic Access Profile + Security Manager(Core_v5.2)

GAP(Generic Access Profile) 定义了蓝牙设备之间如何发现彼此、建立连接以及如何实现配对与绑定,同时描述了设备如何实现无需连接的数据传输、如何实现等时同步数据传输、如何建立ACL与CIS 连接、如何建立安全连接实现加密通信。GAP 规范为设备提供四种角色(可分为两组),每组角色都可以借助模式和过程来描述蓝牙设备的状态和行为,比如广播、发现、连接、绑定、周期广播、等时同步广播模式与过程。同时介绍了每组角色跟安全性相关的模式和过程,比如加密、认证、授权、数字签名模式和过程。

2020-09-16 22:11:09 4663

原创 BLE 技术(四)--- 链路层五种通信模式和空口协议设计 (Core_v5.2)

前篇博文LE States and Packets介绍了LE 设备链路层的七种状态与两种基本报文格式,接下来看通信双方如何在广播信道传输这些报文,如何建立并维持双方的连接,如何传输音频数据流,如何管理这些连接特性?

2020-08-06 21:52:28 6342

原创 BLE 技术(三)--- 链路层七种状态与空口报文设计(Core_v5.2)

一、LE 链路层 7种状态:Standby State、Advertising State、Scanning State、Initiating State、Connection State、Isochronous Broadcasting State;二、链路层两种基本报文结构:LE Uncoded PHYs、LE Coded PHY;三种PDU类型:Advertising PDU、Data PDU、Isochronous PDU

2020-08-01 01:08:42 6874 1

原创 BLE 技术(二)--- 协议栈架构与物理层设计 (Core_v5.2)

# 一、BLE System Architecture1. Physical Layer 指定BLE 所用的无线频段、调制解调方式、射频性能等;2. Link Layer 管理BLE 的链路状态和设备间的通信链路,保证上层数据安全可靠传输;3. L2CAP 提供多路复用、分片重组、流量控制等机制;4. SMP 管理BLE 连接通信的安全可靠;5. GATT 将带标签的"Attribute"封装为“Service”,实现面向服务的模块化设计;6. GAP 提供了如何发现、连接、绑定其它设备的方法。

2020-07-30 19:24:46 3911 1

转载 字符编码的设计与演进(ASCII,Unicode,UTF-8,GB18030…)

1. 从ASCII 码说起2. OEM 字符集的衍生3. 多字节字符集(MBCS)和中文字符集4. ANSI标准、国家标准、ISO标准5. Unicode字符集的出现6. 编码系统的变化7. 常见的Unicode编码UCS-2/UTF-16UTF-8GB180308. Unicode相关的常见问题Unicode是两个字节吗?带签名的UTF-8指的是什么意思?Unicode编码和以前的字符集编码有什么区别?乱码问题9. 必要的术语解释

2020-07-27 00:19:33 415

原创 Bluetooth 技术(一)--- 协议栈设计与演进(Core_v5.2 + 6LoWPAN + Mesh)

蓝牙设备最主要的应用领域有四个:数据传输、音频传输、位置服务、设备网络(包括IPv6 组网和mesh 自组网)。数据传输业务从BLE 低功耗蓝牙技术的发布开始快速增长;音频传输业务受限于传统EDR 技术的限制进入瓶颈,LE Audio 技术和LC3 编码技术的发布将会让蓝牙音频业务再次迎来爆发;LE iBeacon 和Direction Finding技术的发布,让蓝牙设备室内定位精度提升到厘米级;IPv6 Over BLE技术让蓝牙设备可以直接访问Internet,BLE mesh则让其支持大规模自组网。

2020-07-18 13:54:42 6189 1

原创 IOT-OS之RT-Thread(十七)--- 如何使用HTTP协议实现OTA空中升级

一、Bootloader OTA 原理Bootloader 框架底层由Flash 驱动提供ROM 或Flash 分区访问的能力,为搬移固件代码提供支持。Bootloader 还应提供解密、解压缩、必要的校验功能,经校验通过后将更新版本代码写入或搬移到Application 分区覆盖正在使用的固件代码,这就完成了固件升级过程。二、HTTP OTA Downloader 实现三、Bootloader OTA 示例

2020-06-25 00:13:33 7156 3

原创 ARM 代码烧录方案与原理详解 --- SWD/JTAG + Bootloader + OTA (ICP + ISP + IAP)

一、ICP(In Circuit Programing):可通过CPU的Debug Access Port 烧录代码,比如ARM 的SWD或JTAG;二、ISP(In System Programing):可借助MCU厂商预置的Bootloader 实现通过板载UART或USB接口烧录代码,比如STM32的System memory可预置ISP代码;三、IAP(In Applicating Programing):由开发者实现Bootloader功能,可提供代码烧录、差分升级、空中升级、一键恢复等功能。

2020-06-22 21:03:48 15651 4

原创 Web技术(六):QUIC 是如何解决TCP 性能瓶颈的?

一、QUIC 如何解决TCP的队头阻塞问题?1.1 TCP 为何会有队头阻塞问题1.2 QUIC 如何解决队头阻塞问题1.3 QUIC 没有队头阻塞的多路复用二、QUIC 如何优化TCP 的连接管理机制?2.1 TCP连接的本质是什么2.2 QUIC 如何减少TCP 建立连接的开销2.3 QUIC 如何实现连接的无感迁移三、QUIC 如何改进TCP 的拥塞控制机制?3.1 TCP 拥塞控制机制的瓶颈在哪?3.2 QUIC 如何降低重传概率3.3 QUIC 如何改进拥塞控制机制

2020-06-10 01:01:41 4208 1

原创 Web技术(五):HTTP/2 是如何解决HTTP/1.1 性能瓶颈的?

一、HTTP/2 概览1. HTTP/1.1 存在的队头阻塞问题,降低了TCP连接利用率;HTTP/2 通过多数据流并发复用TCP连接部分解决了该问题;2. HTTP/1.1 重复传输臃肿的首部字段,降低了网络资源利用率;HTTP/2 通过首部压缩HPACK,大幅减少了传输开销;3. HTTP/1.1 报文各字段长度不固定,只能串行解析;HTTP/2 整个报文都采用二进制编码,且每个字段长度固定,可以并行处理;4. HTTP/1.1 客户端不能接收除响应之外的报文;HTTP/2 支持服务端主动推送。

2020-06-03 00:47:49 2648

原创 Web技术(四):TLS 握手过程与性能优化(TLS 1.2与TLS 1.3对比)

二、TLS 握手协议TLS 协议是由TLS 记录协议和TLS 握手协议这两层协议叠加而成的,位于底层的TLS 记录协议负责进行信息传输和认证加密,位于上层的TLS 握手协议则负责除加密以外的其它各种操作,比如密钥协商交换、身份认证等。TLS 1.2 首次完整握手过程需要2-RTT,会话恢复简短握手过程需要1-RTT,TLS 1.3 在两种情况下均能比前者减少1-RTT。三、TLS 性能优化TLS 可以通过选择更安全高效的加解密算法、使用硬件加速模块、更新的协议、CDN技术等来提高效率。

2020-05-22 00:24:40 5036

原创 Web技术(三):TLS 1.2/1.3 加密原理(AES-GCM + ECDHE-ECDSA/RSA)

一、TLS 加密原理 TLS (Transport Layer Security)通过对称密钥加密法来保证通信的机密性,通过消息认证码MAC来保证通信的完整性和真实性,对称加密与MAC共同构成了认证加密方案同时保证通信的机密性、完整性和真实性。认证加密的共享密钥交换是个难题,Diffie和Hellman两人发明了一套密钥协商方案(Diffie–Hellman key exchange)解决了该问题,为确认通信对端的真实性又产生了数字签名算法,为解决数字签名中无法确认公钥真实性的问题,又提出了证书的概念。

2020-05-14 19:54:47 15111 4

原创 Web技术(二):图解HTTP + HTTPS + HSTS

一、HTTP简介目前使用最广泛的仍是HTTP/1.1,截至2020年4月,W3Techs统计的前1000万网站中支持HTTP/2的大概占43.6%,支持QUIC的仅占4.2%。要了解HTTP/2离不开HTTP/1.1,因此本文先介绍主流的HTTP/1.1版本。HTTP属于应用层协议,底层依赖于TCP/IP协议完成数据报文的传输。如果对HTTP报文有加密传输的需求,在HTTP协议与TCP协议之间还可以增加SSL/TLS协议层,这就构成了HTTPS协议。二、HTTP报文2.1 HTTP Request

2020-05-10 19:52:40 3201

原创 Web技术(一):互联网的设计与演化(URL + HTML + HTTP)

一、Web技术简史1990年底,Tim Berners-Lee 领导的小组已经构建了Web技术的五大要素:HTML、HTTP、URL、Web浏览器、Web服务器。二、Web三大构建技术2.1 URL / URILinux上一切皆文件,Web上一切皆资源,URL可以唯一标识并定位任一MIME资源。2.2 HTML / XMLHTML语言关心的是信息的表现形式,而XML语言关心的是信息本身的格式和数据内容。2.3 HTTP / HTTPSHTTP基于底层的TCP/IP协议完成html页面的传输。

2020-04-27 19:39:30 4992 4

原创 IOT-OS之RT-Thread(十六)--- WLAN管理框架 + AP6181(BCM43362) WiFi模块

一、WLAN管理框架简介随着物联网快速发展,越来越多的嵌入式设备上搭载了 WIFI 无线网络设备,为了能够管理 WIFI 网络设备,引入了 WLAN 设备管理框架:对下连接具体的 WIFI 驱动,控制 WIFI 的连接、断开、扫描等操作;对上承载不同的应用,为应用提供 WIFI 控制、事件、数据导流等操作。二、WLAN Device实现与AP6181 WLAN驱动移植三、WLAN Protocol实现与LwIP协议栈移植四、WLAN Config 管理与自动连接六、WIFI与Socket网络开发

2020-04-10 20:45:28 4411 5

原创 IOT-OS之RT-Thread(十五)--- SDIO设备对象管理 + AP6181(BCM43362) WiFi模块

一、AP6181 Wi-Fi模块简介 AP6181 Wi-Fi 模组内部实际封装的是Broadcom 43362 芯片,该芯片内部是集成了ARM处理器及RAM/ROM存储空间的,用于运行 Wi-Fi 固件。AP6181 模块是基于SDIO 总线协议进行通信的,因此模块与主控端最底层应该分别是SDIO Card controller与Host controller。二、SDIO设备对象管理三、SDIO 驱动配置

2020-04-07 19:41:10 5301 2

原创 STM32之CubeL4(四)--- SD/MMC + SDIO + HAL

一、SD/MMC/SDIO概念区分MMC(MultiMediaCard)从本质上看,是一种用于固态非易失性存储的规范,定义了诸如卡的形态、尺寸、容量、电气信号、通信协议等方方面面的内容。后来基于不同的考量,进化出了MMC、SD、microSD、SDIO、eMMC等不同的规范。SDIO强调的是接口 I/O功能,不再关注另一端的具体形态(可以是Wi-Fi card、Bluetooth card、GPS card、GSM/GPRS card 、Camera card、Radio/TV card等)。

2020-03-31 02:03:27 5806

原创 IOT-OS之RT-Thread(十四)--- AT命令集 + ESP8266 WiFi模块

一、AT命令集简介AT 命令(Attention Commands)作为主芯片和通讯模块的协议接口,广泛应用于嵌入式开发领域,比如GPRS模块、3G 模块、WiFi/蓝牙/GPS模块等,这些网络扩展模块的硬件接口一般为串口,这样主控设备可以通过简单的命令和硬件设计实现多种网络服务功能。 为了方便用户使用 AT 命令,简单的适配不同的 AT 模块, RT-Thread 提供了 AT 组件用于 AT 设备的连接和数据通讯。二、ESP8266 WiFi模块简介三、AT组件实现原理与ESP8266模块移植

2020-03-24 23:23:24 4893 2

原创 IOT-OS之RT-Thread(十三)--- 网络分层结构 + netdev/SAL原理

一、网络分层结构我们单独介绍网络协议栈时,经常使用TCP/IP分层结构,方便了解每一层的作用及实现原理。但当我们在操作系统中使用网络协议栈(比如LwIP协议栈)时,常把其看作一个整体,只关心协议栈对下层硬件与上层应用的接口,并不关心协议栈内部具体的实现过程。二、RT-Thread网络分层结构2.1 ENC28J60设备驱动层2.2 设备无关接口层netdev2.3 网络协议层LwIP2.4 协议无关接口层SAL2.5 系统调用接口层Socket API三、HTTP Server示例程序

2020-03-18 21:33:36 3796

ATK-ENC28J60以太网模块资料.rar

ENC28J60网卡包括PHY与MAC模块,具有TX/RX缓冲器,使用SPI接口与MCU通信,支持中断引脚触发,可通过NRF Wireless接口插到STM32L475 Pandora等型号的开发板上。上层可以运行TCP/IP协议栈,比如LwIP协议栈,为我们的开发板提供网络服务。

2020-03-25

ATK-ESP8266 WIFI模块资料.rar

ESP8266 是一个完整且自成体系的 Wi-Fi 网络解决方案,能够独立运行,也可以作为从机搭载于其它主机 MCU 运行,支持标准的IEEE802.11 b/g/n协议,完整的TCP/IP协议栈,该模块一般作为从机通过UART接口(默认波特率115200)连接其它主机MCU,通过AT命令集与主机MCU交互,为主机MCU提供WiFi扩展服务。

2020-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除