自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Nimble-内存管理

mbuf(内存缓冲区的缩写)是网络堆栈中的一个常见概念。mbuf 用于在数据包数据穿过堆栈时保存数据包数据。mbuf 通常还存储数据包随附的标头信息或其他网络堆栈信息。mbuf 及其相关函数库的开发旨在使常见的网络堆栈操作(如剥离和添加协议标头)尽可能高效且无复制。最简单的形式是,mbuf 是一个内存块,其中有一些空间保留用于内部信息,还有一个指针,用于将内存块“链接”在一起以创建“数据包”。这是 mbuf 的一个非常重要的方面:能够将 mbuf 链接在一起以创建更大的“数据包”(mbuf 链)。

2024-06-03 15:32:22 64

原创 nimble-HCI UART Transport 移植

这篇文档主要介绍将Amlogic W1 BT driver移植到nimble蓝牙协议栈中,W1 BT transport类型为HCI UART.

2024-06-03 15:11:49 48

原创 btstack ble ota开发笔记(3)-mcuboot & nordic-dfu集成

至此,我们使用nordic dfu和mcuboot实现了一个完整的ota demo.

2023-09-14 16:52:18 204 1

原创 btstack ble ota开发笔记(2)-mcuboot移植

紧接上一篇文章,要实现一个完整的ota demo,除了实现ota image的传输通道外,还需要“bootloader”这个角色来帮我们实现ota image的校验、安全、引导以及启动,这里我选择开源的组件mcuboot,下面开始介绍mcuboot在stm32f4-discovery上的移植。首先估算下bootloader & application image的大小,确定好flash的分布情况,因为后续会涉及到flash的操作(读、写、擦除),为了方便程序的编写,各个image area在flash中的起

2023-07-20 19:54:52 819

原创 记录一次调试A2DP无法播放音乐问题的过程

移植到了我们的RTOS SDK中(在移植之前,我用btstack搭配高通csr8311蓝牙模块做了简单的测试,以确保btstack在配置上没有问题),测试发现,btstack搭配我们公司的controller,连接笔记本电脑,依旧没有问题,可以正常的打电话、播音乐。我们公司的Controller chip量产时间不久,测试覆盖面不大,没有和这一类笔记本电脑测试过,在之前的测试中也遇到因为Controller不完全遵循BT Spec导致的一些问题,所以也可以猜想是否是类似的原因。查看SDP的交互流程,

2023-07-20 15:42:51 667

原创 mcuboot学习笔记

MCUboot 的目标是为引导加载程序,为微控制器系统上的系统闪存布局定义一个通用基础设施,并提供一个安全的引导加载程序,使软件升级变得容易。

2023-03-27 14:06:06 2723 1

原创 btstack ble ota开发笔记(1)-nordic dfu移植

nordic dfu移植到btstack协议栈

2023-02-25 16:33:09 562

翻译 mcuboot bootloader官方设计文档

mcuboot官方设计文档

2023-02-15 20:32:05 1707

原创 btstack经典蓝牙security学习笔记

btstack classic bt security study note

2023-01-09 09:46:58 210

原创 函数调用过程的思考

为了深入理解函数的调用过程,我在STM32上使用JTAG来单步调试,观察通用寄存器和函数调用栈帧;进入bsp_InitUart()之前,PC的值为0x08002B86,等于即将执行的指令地址(此时只是停在了断点处,还没有执行该指令)进入bsp_InitUart()后,第一条指令:push {r4, lr}意思是依次将lr, r4寄存器的内容压栈(按照约定,序号高的寄存器放在高地址),lr中保存的是函数bsp_InitUart()退出后的返回地址。此时lr & pc寄存器的内容如图:执行

2022-03-09 22:50:02 791

原创 btstack-stm32f1/csr8311移植笔记(4)-database driver

首先需要搞清楚我们所用硬件的flash配置情况,我们使用的mcu型号为smt32f103zet6,查看stm32开发手册,得知这个型号是大容量产品:有256 page,page size = 2K,共512K容量的片上flash.#include <stdint.h>#include <string.h> // memcpy#include "hal_flash_bank_stm32.h"#include "stm32f1xx_hal.h"#define STM

2022-01-19 21:39:06 629

原创 btstack-stm32f1/csr8311移植笔记(3)-hci driver & hci log driver

btstack文件树结构:可以看出:1)chipset下是bluekitchen目前所支持的所有bt chip集合2)platform下是可供选择的跑bluekitchen协议栈的软件平台,比如embedded(即裸机系统),freertos,posix,windows等3)example下是各种profile和service demo我们在port下添加stm32f103zet6_csr8x11例程。这样platform对应embedded,chipset对应csr,我们需要做的是实现

2022-01-19 09:02:39 3531 3

原创 btstack-stm32f1/csr8311移植笔记(2)-stm32cubemx生成代码

所需外设配置:UART1:Output:log(blocking)Input:AT command(Interrupt)TX:PA9 RX:PA10UART2:Output:BT TX(Use DMA)Input:BT RX(Use DMA)TX:PA2 RX:PA3 CTS:PA0 RTS:PA1需要开启流控UART3:Output:BT HCI log(blocking)Input:NULLTX:PB10 RX:PB11GPIO:PA7:CSR8X11 Hardware r

2022-01-19 08:52:56 467

原创 btstack-stm32f1/csr8311移植笔记(1)-开发环境配置

bluekitchen是一个代码完全开源的蓝牙协议栈,支持ble,ble mesh,edr。它的功能丰富,且可配置性极高,支持多个不同的软件平台,以及多种知名的蓝牙芯片,具有很高的可移植性,非常适合蓝牙协议栈的学习。bluekitchen github link:https://github.com/xihua13104/bluekitchenbluekitchen port文件夹下已经有很多平台的demo,比如stm32-f4discovery-cc256x,stm32-wb55xx-nucleo-f

2022-01-19 08:44:43 1771 9

原创 如何使用Frontline实时抓取蓝牙协议栈(btstack)HCI Log

1.前言在debug蓝牙协议栈时,hci log是非常有用的debug手段,它能提供蓝牙协议层面的交互信息。常用的hci log分析工具有frontline,wireshark,ellisys。常规的做法是在协议栈中实现btsnoop,将hci log按照btsnoop格式生成log文件,这通常需要文件系统的支持。这种方法的缺点很明显,需要文件系统支持,且不支持实时的录制hci log。接下来我要介绍一种使用frontline实时录制hci log的方法,不需要协议栈支持btsnoop以及文件系统,仅需要

2021-01-02 13:24:51 5213 8

原创 Cunit在嵌入式平台上的移植(STM32)

前言最近在公司为新开发的bluetooth chip写driver,根据流程在做integrate test之前要先为自己的模块做unit test。之前也从没写过unit test,查了很多资料,发现现有比较通用的unit test 框架都是为C++,java,python等写的,基本没看到有用于C语言的。最后找到一个比较合适的cunit 测试框架,但它是用于windows平台的C测试框架,所...

2019-10-27 20:09:31 2541 4

空空如也

空空如也

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

TA关注的人

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