自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Garmin 新手维护升级SDK记录

摘要:本文详细介绍了Garmin智能手表应用开发的环境搭建流程。主要内容包括:1)Windows系统下需要安装ConnectIQ SDK、VSCode和Java 11环境;2)VSCode中配置Garmin插件和开发者密钥;3)创建新项目、编译运行及调试方法;4)真机测试的关键步骤(需创建对应日志文件);5)简要提及应用发布流程。文章特别强调了真机测试时的文件放置和日志记录技巧,为开发者提供了实用的操作指南。

2026-01-19 10:40:31 1244

原创 Telink BLE 低功耗唤醒GPIO配置

因为我们配置成输出,所以,输入是没有信号的,所以使用cpu_set_gpio_wakeup是可以提供PB5在低功耗条件下也是保持有电的,可以持续输出高电平。1. 使能 GPIO 的 Pad 唤醒功能,保留 VDDIO_AMS 供电 4.6.5 节 Table 4-7。PB5配置输出模式,输出高电平,低功耗配置为了保障VDDIO_AMS供电给PB5,让它在低功耗的条件下依然保持有电;2. 配置 GPIO 为高电平唤醒(与高电平输出一致) 4.6.5 节 Table 4-7。

2026-01-07 11:59:40 237

原创 Qemu linux

好的,我们来一步步地实现在 Ubuntu 20.04 虚拟机中,使用 QEMU 运行你现有的 Linux-5.10.200 内核和 Busybox,目标是开发板。ext4。

2025-11-28 11:39:27 851

原创 linux 驱动学习

↓ (包含)↓ (包含)↓ (匹配)struct platform_device ←→ struct device_node (设备树)↓ (包含)↓ (关联)↓ (实现)驱动操作函数 (open, read, write等)核心逻辑模块结构作为驱动的容器平台驱动提供设备匹配和生命周期管理设备树描述硬件资源配置文件操作提供用户空间接口这些结构通过内核的驱动模型有机地连接在一起。

2025-11-26 14:34:20 251

原创 并发编程同步机制详解

竞态条件:多个线程同时访问共享资源数据不一致:读写顺序不确定导致数据错误死锁:多个线程相互等待资源原子操作:不可中断的一个或一系列操作自旋锁:线程通过循环等待尝试获取锁信号量:控制多个线程对共享资源访问的计数器互斥锁:保证同一时间只有一个线程进入临界区特性原子操作自旋锁信号量互斥锁实现机制硬件指令忙等待计数器+等待队列等待队列阻塞方式不阻塞忙等待阻塞睡眠阻塞睡眠阻塞性能开销极小中等(CPU时间)较大(上下文切换)较大(上下文切换)适用场景简单变量操作短临界区、多核。

2025-11-26 10:58:21 281

原创 蓝牙SN和NESN

SN 和 NESN 通过简单的 1 位翻转机制,在低功耗蓝牙中实现了高效的确认、重传和流量控制。发送方:新包 SN 翻转,重传 SN 不变;根据接收方的 NESN 判断是否重传。接收方:匹配 SN 则更新 NESN,否则触发重传;通过 NESN 控制发送方速率。这一设计在保证可靠性的同时,最大程度减少了协议开销,是蓝牙低功耗特性的重要支撑。

2025-11-21 11:18:23 557

原创 华为手机获取蓝牙log信息

生成标准bugreport。# 或者指定输出目录。

2025-11-14 11:19:59 219

原创 Qemu GDB

QEMU 端-s(开启 gdb 服务器)和-S(暂停等待调试)是核心,缺一不可(否则要么无法连接,要么错过启动初期代码)。内核端(提供调试符号)和禁用 KASLR(nokaslr或)是必须的,否则 gdb 无法正确解析代码。配合内核启动参数可查看输出,辅助调试。通过这些配置,就能用 gdb 单步调试 QEMU 中的 Linux 内核或用户态程序了。

2025-11-07 09:42:40 1023

原创 Linux学习

在 Linux 命令里,

2025-11-07 09:24:57 214

原创 Qemu的tftp

退出(“X”=Exit)。保存后,之前的配置修改就会生效(重启 TFTP 服务后生效)。此时文件应能正常下载(若配置了进度条,会显示传输过程)。是字母,不是数字)。(确认文件名是否正确),直接按 Enter。dht11_test是你想要传送的文件。:保存完成后,按下 Ctrl + X。:按下键盘上的 Ctrl + O。保存(“O”=Output),

2025-11-04 14:06:14 255

原创 qemu的文件系统内存不足

核心问题是初始创建的镜像容量不足,通过dd扩展物理大小 +resize2fs调整文件系统大小即可解决。扩展后建议预留足够空间(至少 1GB),避免后续添加工具或文件时再次出现空间不足。

2025-11-04 11:19:08 238

原创 蓝牙协议6.1

2025-10-23 14:38:26 814

原创 Tlink BLE 低功耗管理

低功耗管理(LowPower Management)也可以称为功耗管理(Power Management),本⽂档中会简称为 PM。

2025-10-22 15:40:01 795

原创 Telink BLE Host

BLE host 包括 L2CAP、ATT、SMP、GATT、GAP 等层,⽤⼾层的应⽤都是基于host层实现的。BLE 的L2CAP 层是经典蓝⽛L2CAP层的简化版本,它在基础模式下,不执⾏分段和重组,不涉及流程控制和 重传机制,仅使⽤固定信道进⾏通信。L2CAP的简化结构如下图所⽰,简单说就是将应⽤层数据分包发给BLE controller,将 BLE controller 收到的数据打包成不同 CID 数据上报给 host 层。

2025-10-22 14:55:26 788

原创 ​Telink BLE Controller

Controller API 的声明在 stack/ble/ll 和 stack/ble/hci ⽬录下的头⽂件中,其中 ll ⽬录下根据 Link Layer 状态 机功能的分类分为ll.h、ll_adv.h、ll_scan.h、ll_ext_adv.h、ll_pm.h、ll_whitelist.h,user 可以根据 Link Layer 的功能去寻找,⽐如跟advertising相关功能的API就应该都在ll_adv.h中声明。(1) 第⼀种⽅式是每个event的回调函数单独注册。

2025-10-22 10:24:30 1034

原创 Telink BLE SDK软件架构

这样的设计的⽬的是节省codesize 和ram_code,不需要使⽤的 状态的相关代码不会被编译进来。在Scaninterval 上收到正确的BLEpacket后,将收包数据先缓存在软件RXfifo中(对应code中的my_fifo_t blt_rxfifo),blt_sdk_main_loop 函数会检查软件 RX fifo 中是否有数据,如果发现正确的 adv 数据会通过 event“HCI_SUB_EVT_LE_ADVERTISING_REPORT”将其 report 给 BLE host。

2025-10-21 18:34:51 1134

原创 Telink 系统中断

如果⽤⼾没有增加新的中断,则不⽤考虑两个系统 中断的时间问题;(2) system timer 和 RF 两个系统中断是为了处理 BLE 任务,由于BLE的时序较为严格,不能被延时太久。所以客⼾增加的中断,处理时间不能过⻓,建议在。2. 所有中断共⽤同⼀个中断硬件⼊⼝,最终会触发软件irq_handler函数,在该函数⾥⾯通过读取相关中断的 状态位来判断对应中断是否被触发。这意味着客⼾增加的中断可能⽆法实时响应,且理论上最⼤可能出现的延迟时间为200us。如果时间过⻓,可能出现BLE时序同步出错,造成。

2025-10-20 18:28:42 198

原创 Telink GPIO模块

B85m 系列芯⽚共有5组36个GPIO,分别为:GPIO_PA0~GPIO_PA7、GPIO_PB0~GPIO_PB7、GPIO_PC0 ~ GPIO_PC7、GPIO_PD0 ~ GPIO_PD7、GPIO_PE0 ~ GPIO_PE3。3) 也可以使⽤以上两种⽅式混⽤:在app_config.h中提前定义⼀些,gpio_init加以执⾏,在user_init中设定 另外⼀些。2) 可以在user_init 函数中通过 GPIO 状态控制函数(gpio_set_input_en 等) 加以设定;

2025-10-20 18:08:54 864

原创 Telink 时钟模块

功耗优化:16MHz RC振荡器比24MHz PLL方案功耗显著更低精度需求:16MHz为定时器提供62.5ns分辨率,满足大多数应用需求成本控制:避免为定时器也使用复杂的PLL时钟生成电路系统稳定性:定时器使用独立时钟源,不受系统时钟调节影响射频时序:16MHz更便于BLE等射频协议的精确时序控制外设兼容性:24MHz便于生成各种标准外设时钟频率这种设计在性能、功耗和成本之间取得了最佳平衡,特别适合物联网设备对低功耗和成本敏感的应用场景。

2025-10-20 17:37:07 732

原创 Telink MCU地址分配

默认情况下,SDKlibrary 使⽤了 stack 的 size 不超过 256 byte,但由于 stack 的使⽤ size 取决于 stack 最深 位置的地址,所以最终stack的使⽤量跟⽤⼾上层的程序设计是有关的。当⽤⼾的Sram使⽤较多时,需要明确知道⾃⼰的程序使⽤了多少stack,这个⽆法通过list⽂件来分析,只 能让应⽤程序运⾏起来,确保其运⾏了程序中所有的可能使⽤stack⽐较深的code后,将MCUreset,读取 Sram 空间去确定stack的使⽤量。

2025-10-20 16:54:26 1273

原创 Silicon EFR32xG22 UART+LDMA

2. python脚本是为了将bin文件烧录进flash实现的。为什么这么实现,因为程序代码处理不过来,所以每处理一包数据对其进行延时,然后继续处理。1. 工程是进行数据搬运的,中间可以添加写flash的代码操作。-d 23 连续两包数据之间的延时23ms。-s 240 一包buffer传输大小。-p 115200 串口速率。

2025-10-14 17:34:15 271

原创 Silicon EFR32xG22 bootloader学习

MEMORYFLASH (rx) : ORIGIN = 0x0, LENGTH = 0x12000 /* Flash内存:可读可执行,起始地址0x0,长度72KB */RAM (rwx) : ORIGIN = 0x20000004, LENGTH = 0x7ffc /* RAM内存:可读可写可执行,起始地址0x20000004,长度32KB-4字节 */

2025-09-26 10:45:52 930

原创 使用 Gecko Bootloader 时如何调试?

调试插件为引导加载程序提供对调试输出的支持。如果插件配置为启用调试打印,则将通过串行线输出 (SWO) 打印简短的调试消息,可以通过多种方式访问,包括使用 Simplicity Commander 以及连接到无线入门套件 TCP/IP 接口的端口 4900。如果组件配置为启用调试打印,则将通过串行线输出 (SWO) 打印简短的调试消息,可以通过多种方式访问,包括使用 Simplicity Commander 以及连接到无线入门套件 TCP/IP 接口的端口 4900。这将启用引导加载程序中的调试。

2025-09-25 16:57:58 248

原创 Ellisys工具

Ellisys 提供了一系列专业的协议分析仪,其中是最知名的产品。它不是一个简单的数据包嗅探器,而是一个全栈、可视化、时间关联的综合分析平台。核心价值:帮助工程师深度诊断和解决蓝牙产品开发中遇到的复杂问题,从射频层的信号质量到协议栈的逻辑错误,再到应用层的交互问题。

2025-09-22 16:09:35 1263

原创 蓝牙框架图

下层为上层服务:每一层都为其上层提供特定的服务,并依赖其下层提供服务。控制器 vs. 主机:HCI是重要的分界线,区分了硬件和软件。L2CAP是核心:它是承上启下的关键层。配置文件是关键:最终的用户功能由配置文件定义,确保了不同厂商设备的互联互通。这个分层结构使得蓝牙技术既灵活又强大,能够适应从低速数据传输到高质量音频流等各种应用场景。

2025-09-22 14:39:12 355

原创 蓝牙协议-RFCOMM

RFCOMM,全称为,即射频通信协议。在蓝牙设备之间模拟传统的RS-232串行端口,提供一条可靠的数据流传输通道。可以把它想象成一条“虚拟的串口线”,它抽象了底层无线的复杂性,让上层应用程序感觉像是在使用一条有线串口电缆进行通信。方面描述是什么射频通信协议,蓝牙上的“虚拟串口线”核心特点串口仿真、基于L2CAP、支持多路复用、可靠传输、流控核心功能建立虚拟串口连接、传输数据流、管理多会话主要用途替代有线串口,为高层配置文件提供传输载体,实现通用数据通信依赖协议L2CAP承载的配置文件等典型场景。

2025-09-22 14:27:15 624

原创 蓝牙协议-OBEX

OBEX,全称为,即对象交换协议。提供一种简单、高效的方式来在设备之间交换各种“对象”数据。这里的“对象”是一个广义概念,可以是一个文件、一张图片、一条通讯录联系人信息、一个日历项,甚至是一个简单的命令。可以把它想象成蓝牙设备之间的“文件传输和数据处理通用语言”。它最初由红外数据协会为红外传输设计,但由于其出色的简洁性和有效性,被蓝牙技术联盟采纳,成为蓝牙协议中传输文件和数据的重要工具。方面描述是什么对象交换协议,设备间数据交换的“通用语言”核心特点客户端-服务器模型会话协议简单高效与传输无关。

2025-09-22 14:24:36 780

原创 蓝牙协议-HSP

HSP,全称为,即耳机配置文件。它是蓝牙协议中最早、最基础的用于语音通信的配置文件。提供手机与蓝牙耳机之间最基本的通信能力,使得用户能够通过耳机进行通话。可以把它看作是蓝牙耳机功能的“最小可行产品”,实现了最核心的“接电话”和“挂电话”的需求。方面描述是什么耳机配置文件,蓝牙语音通信的鼻祖和基础版本核心特点功能极其基础、强制使用CVSD编码、已被HFP取代核心功能接听来电、结束通话、调节音量主要用途提供最基础的无线通话能力,作为新旧设备兼容的后备方案典型场景已淘汰的古旧设备、连接兼容性回退。

2025-09-22 14:13:21 1273

原创 蓝牙协议-HFP

HFP,全称为,即免提配置文件。允许一个蓝牙设备(如车载套件或耳机)充当另一个设备(如手机)的远程音频输入和输出设备,专门用于拨打和接听电话。可以把它想象成你手机的无线耳朵和嘴巴。它让您可以在不直接手持手机的情况下进行通话,从而实现“免提”操作,这在驾驶或移动中尤为关键。方面描述是什么免提配置文件,手机的“无线耳朵和嘴巴”核心特点双向全双工音频丰富的控制信令、角色明确(AG&HF)、语音级音质核心功能通话控制、音频路由、状态同步、音量调节、电量查询(可选)主要用途。

2025-09-22 14:01:28 1271

原创 蓝牙协议-A2DP

A2DP,全称为,即高级音频分发配置文件。提供一种标准化的方法,将高品质的立体声音频从一个蓝牙设备(源)单向传输到另一个蓝牙设备(接收器)。可以把它想象成一条“无线音频线”,专门用于传输音乐级别的音频流,而不是通话级别的语音(后者由HSP/HFP负责)。编码器开发者特点常见于SBC强制支持,基础音质,效率一般所有蓝牙音频设备AACApple等效率高于SBC,苹果设备首选iPhone, iPad, 多数高端耳机aptXQualcomm音质优于SBC,延迟较低众多安卓手机、耳机aptX HD。

2025-09-22 13:57:57 1408

原创 蓝牙协议-L2CAP

L2CAP,全称为,即逻辑链路控制与适配协议。它在蓝牙协议栈中扮演着“交通枢纽”或“多路复用器”的角色。承接上层多个不同应用程序的数据,将其复用到一条单一的底层逻辑链路上进行传输,并对接收到的数据进行分路解复用,交给正确的上层应用程序。可以把它想象成一个大型物流中心下层:是基础的运输工具(卡车、飞机,相当于蓝牙的基带协议)。上层:是各种不同的商户(电商、快递公司,相当于RFCOMM、SDP、AVDTP等高层协议)。L2CAP:就是这个物流中心。

2025-09-22 13:51:08 897

原创 蓝牙协议-HID

蓝牙HID协议是基于传统的USB HID协议演化而来的,它借鉴了USB HID的核心概念(如报告描述符),并针对无线和低功耗的需求进行了优化。简而言之,它就是让蓝牙键盘、鼠标、游戏手柄等设备能够与电脑、手机、平板等主机设备无线协作的标准规范。它让我们的数字生活摆脱了线缆的束缚,变得更加自由和便捷。

2025-09-22 13:45:01 938 1

原创 蓝牙协议 SPP

SPP,全称为,即串行端口配置文件。它是蓝牙技术中最经典、最基础,也是应用最广泛的配置文件之一。在两个蓝牙设备之间模拟一条传统的串行电缆(如RS-232),从而让现有的或新的应用程序能够通过蓝牙无线连接进行数据传输,就像它们在使用有线串口一样。可以把它想象成一条“无形的串口线”。它抽象了底层的无线通信细节,为上层的应用程序提供了一个它们非常熟悉的、基于串行通信的编程接口。方面描述是什么串行端口配置文件,蓝牙上的“虚拟串口线”核心特点基于RFCOMM、简单通用、对传统应用兼容性好、点对点核心功能。

2025-09-22 12:03:31 1546

原创 蓝牙协议-SDP

SDP,全称为,即服务发现协议。它是蓝牙协议栈核心协议之一,专门设计用于让蓝牙设备能够发现其他蓝牙设备提供的服务及其特性。可以把它想象成蓝牙世界的“服务黄页”或“服务菜单”。当一个蓝牙设备(如手机)进入一个新的环境(如咖啡馆),它可以通过SDP查询附近另一个蓝牙设备(如蓝牙音箱、耳机、打印机)提供了哪些服务(如音频传输、文件打印),以及使用这些服务所需的详细信息(如端口号、协议类型、参数等)。方面描述是什么蓝牙服务发现协议,设备的“服务菜单”核心特点基于查询、无连接、基于属性、与设备发现分离核心功能。

2025-09-22 11:57:39 1004

原创 好奇心-LVGL的学习

虽然这个过程,我和它交流了4-5轮,它就实现了,而且修改的很丝滑;感觉AI是所有人都要学,包括我们这些程序源,它会直接将编程的能力拉平,不管你是7-8年的程序员,还是刚入行的新人,都可以很快的上手。以后,思路,框架,想法会是更加重要的。我与deepseek一起学习LVGL,它先是让写个hello world,这个比较简单,研究了一会儿就是先了。环境:VScode下模拟使用LVGL,使用的版本是8.3。我让deepseek给我写了一个家庭控制灯的GUI;AI编程,编程人员的福音。跑出来的现象极度丝滑。

2025-09-19 18:43:27 390

原创 Silicon EFR32xG22 CMU

时钟管理单元(Clock Management Unit, CMU)负责在各种振荡器源之间进行切换,并向外设模块提供时钟。振荡器根据外设的需求自动开启和关闭,以最大限度地减少功耗。

2025-09-16 18:38:02 835

原创 Silicon EFR32xG22 IADC 实现

【代码】Silicon EFR32xG22 IADC 实现。

2025-09-16 14:26:42 304

原创 Silicon EFR32xG22 IADC

由于一个输入被定义为正输入,另一个被定义为负输入,因此根据哪个输入更高,差值可以是正,也可以是负的。增益可0.5x,1x,2x,3x或者4x;2x,3x和4x增益模式需要较慢的ADC CLK,如下表所示,为了将模拟电压转换位数字值,IADC需要一个参考电压来与输入的模拟电压进行比较。由于IADC不能测量大于参考电压的电压,参考电压应高于最大期望测量电压。对于低功耗的周期性IADC采样,还包括在每个IADC采样之间进入能量模式2(EM2)的软件示例。可编程增益:0.5x,1x,2x,3x,或4x。

2025-09-08 18:36:43 888

原创 Telink 电压检测 and 深度休眠检测

这两部分的检测。

2025-09-08 16:25:11 209

原创 C语言的工程积累

产品发布版本,一般选择-O2的优化。

2025-09-01 11:29:21 203

BLE flash管理,telink使用

BLE flash管理,telink使用

2026-05-06

folder search string的windows下的搜索工具

folder search string的windows下的搜索工具

2026-01-22

Ellisys 的安装包

Ellisys 的安装包

2025-09-22

lvgl-lvgl-lvgl-lvgl-lvgl-lvgl-lvgl

可以运行,添加路径

2025-08-29

LVGL在VScode上运行,需要的安装包

1

2025-08-29

蓝牙协议 5.2,官网下载

蓝牙协议 5.2

2023-03-22

python2.7 + scons3.1.2 +mingw64

mingw64是给它们提供编译环境的

2023-02-21

scutils资源,为以后学习使用,备份

scutils资源,为以后学习使用,备份

2023-02-21

Python2.7.13150和pyinstaller-develop.zip

python软件2.7.13150版本和pyinstaller-develop库,python脚本转exe文件。

2018-02-27

Bluetooth5.0

蓝牙协议,This specification can also be found on the official Bluetooth web site: https://www.bluetooth.org/en-us/specification/adopted-specifications

2018-05-02

空空如也

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

TA关注的人

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