自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dokin

一枚嵌入式码农

  • 博客(62)
  • 资源 (16)
  • 收藏
  • 关注

原创 Linux内存泄漏排查经验案例

本文记录了linux的slab内存泄漏的排查过程和方法。

2024-02-23 14:46:10 1043

原创 Linux死机排查方法——内存日志

本文所描述的内存日志,并不是将内核的printk重定向到内存中,因为printk的打印太多了,如果将日志写入到内存中,那就比正常的串口printk快的多,对系统的影响最小。简而言之,这种方法就是将关键模块的日志保存在内存中,等到下一次启动时,再将这些日志全部dump出来。

2024-02-06 15:22:10 2189

原创 嵌入式消息订阅发布模式软件框架

消息的定义如下,一条消息由消息ID和携带的数据构成,如果消息很简单没有数据,那么数据可以为空。rt_msg仅仅是对针对用户开放的一个定义,实际上SoftBus.c中还定义了**_rt_msg**,_rt_msg是在rt_msg的基础上进行了扩展,可以认为他们之间存在一种继承关系。rt_msg msg;/* 消息实体 *//* 消息类型 *//* 源服务ID *//* 发送方的应答处理函数或动态订阅处理函数 *//* 同步消息指针,用于接收同步消息 *//* 指向下一_rt_msg节点 */

2022-06-14 00:47:54 4329 86

原创 FSEC大学生电动方程式赛车电气系统设计

摘要近年来新能源汽车在中国掀起了一股热潮,而电动方程式赛车也因此得到了更广泛的关注。电控系统是电动方程式赛车的核心,涉及嵌入式、传感器、电力拖动、无线数据传输等多项技术。本文以Attacker赛车队的第二代电动方程式赛车为研究对象,自主开发整车控制器和无线数据采集系统。整车控制器(VCU)、电机控制器(MCU)和电池管理系统(BMS)被称为新能源汽车三大核心技术。本文首先对电动方程式赛车的电机、电机控制器、电池管理系统进行选型,继而针对中国大学生方程式汽车大赛规则,开发整车控制器。...

2022-04-05 22:25:17 18439 10

原创 SPI主从机DMA通信

目录1.硬件方案2.SPI通信问题3.DMA超时检测机制4.半双工通信5.从机部分代码6.注意事项1.硬件方案由于项目中单片机的串口资源不够,所以使用SPI来代替串口,通信双方分别是Hi3516EV300和STM32L051,前者作为SPI主机,后者作为SPI从机。硬件连接关系如下图所示。SPI主从机硬件连接关系SPI通信需要由主机发起,也就是由主机产生CLK,从机被动应答,那么当从机需要主动发送数据的时候怎么办呢?办法就是用额外的引脚来告知主机来取数据,这个引脚在

2021-01-10 02:43:14 5174 14

原创 STM32 PVD的使用(掉电检测)

有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制——PVD(Programmable Voltage Detecter),即可编程电压检测器。通过PVD我们可以设定一个基准电压,当芯片的供电电压高于或低于该基准电压时便产生PVD中断,我们可以在PVD中断里做一些处理。本文以STM32L051为例,来说明PVD的使用。以下是STM32L051用户手册中对PVD的描述,根据这张图我们可以知道,PVD中断在内部是连接在中断线16的,软件上可以配置

2020-07-27 01:21:58 18862 5

原创 RT-Thread线程间通信源码解析

目前网上有许多讲解RT-Thread的IPC(信号量、互斥量、事件、邮箱、队列)相关文档,但仅停留在API的使用,鲜有从源码角度讲解其实现原理。野火出版的《RT-Thread内核实现与应用开发实战指南》不仅讲解了线程调度等实现原理,还讲解了IPC的实现原理,本文仅仅是作为学习笔记来简短叙述下IPC的实现原理,想深入学习的话可以参考野火的这本书,也可以直接阅读源码。目录一、线程内置定时器二、IPC父类对象三、信号量四、互斥量五、事件六、邮箱七、消息队列一、线程内置定时器.

2020-05-24 21:02:58 2296 2

原创 SFUD源码浅析

SFUD--SFUD 全称 Serial Flash Universal Driver,是一款开源的串行 SPI Flash 通用驱动库,目前已经成为RT-Thread的一个软件包,作者正是RT-Thread的技术总监——armink,github地址为:https://github.com/armink/SFUD,关于SFUD的介绍可以在这个仓库上了解。关于SFUD的裸机移植,则可以参考这篇文章...

2020-03-25 23:37:54 5198 9

原创 repo下载报错SyntaxError: invalid syntax

repo下载报错SyntaxError: invalid syntax解决方法

2023-11-14 14:25:15 3516 6

原创 HP203B气压温度传感器驱动

设备树代码如下,需要注意的是在设备中描述的I2C器件地址是7位的,不是8位的,否则I2C子系统初始化时会提示找不到设备。废话不多说,直接上代码。

2023-11-14 09:50:19 286

原创 lwip多网卡自适应选择

可知,当上层有数据要发送时,lwip会查找已注册的网卡中适合的网卡,条件为:网卡已启动、网卡链接成功、已获取到ip,如果指定了源ip则在符合上述条件的网卡中找到和源ip地址一致的网卡,否则使用默认网卡。当系统中有多个网卡时,lwip会选择第一个网卡作为默认网卡,ping、tftp、iperf都会选择第一个网卡来进行,没有办法使用第二个网卡(一些命令可以通过-i选项选择网卡,有些命令则没有提供),此时需要修改lwip中发送数据时网卡选择的逻辑。

2023-10-24 10:06:35 759 6

原创 内存泄漏定位工具

这里基于RT-Thread写了一个内存泄漏定位工具(实际和RTT无关,什么系统都可以用,要适当修改),原理非常简单:申请内存时,记录申请的内存地址、大小,以及申请内存这行代码所在的文件名和行号,当释放内存时,根据内存地址找到之前的记录并删除,最后留下的记录就极有可能是发生内存的代码(当然有些内存是常驻的,需要使用者自己辨别)。申请内存时会记录代码所在的文件名,MEM_TRACE_FILE_NAME_LEN就是文件名的最大长度,最终记录的只有最后级的文件名,不包含路径,所以16字节应该是够用的。

2023-08-28 15:57:29 407

原创 Scons编译lib库

直接在SConstruct文件所在目录下执行scons命令即可编译,会在src目录下生成libtest.a。比较奇怪的是,在命令行中直接执行arm-none-eabi-gcc -v是可以打印这个交叉编译编译工具链的信息的,证明工具链添加到环境变量中是没有问题的,但是Sconscript脚本中直接这样写env[‘CC’] = ‘arm-none-eabi-gcc’,会提示找不到编译工具链,需要编译工具链的绝对路径。看样子是Scons不会共用系统的环境变量,有知道的同学请留言指导下哈!

2023-08-08 16:53:37 352

原创 SDIO WiFi模组调试经验案例

wifi -o命令用于选择模组的模式,wifi -o 0对应STA模式,wifi -o 1对应AP模式;wifi -s命令用于开启wifi扫描,随后会将扫描到的AP列表打印在控制台;wifi -c命令用于连接目标AP;wifi -d命令用于断开与AP的连接;wifi -f命令用于关闭wifi功能。

2023-07-03 20:36:09 3022 2

原创 网卡驱动死机调试经验案例

网卡驱动死机调试经验案例

2023-05-23 19:36:40 285

原创 基于RT-Thread的lwip网卡优化笔记

本文讲述了如何在rt-thread lwip上优化网卡吞吐速率。

2023-05-19 18:58:31 2339 2

原创 SigmaStar空板烧录

Sigma Star 337芯片串口烧录说明。

2023-01-08 23:07:19 1050 6

原创 蓝牙Inquiry与Inquiry Scan

蓝牙Inquiry与Inquiry Scan的实现原理,以及数据格式。

2023-01-08 22:54:00 2437

原创 BlueZ双模蓝牙音频卡顿问题优化

基于BlueZ蓝牙开源协议栈的音频卡顿问题优化。

2022-10-28 23:24:24 1050

原创 压缩算法在单片机升级中的应用

在项目开发过程中,难免会遇到需要在线升级的情况,而升级包过大会导致升级所需久,影响产品性能和用户体验,因此我们可以将需要升级的程序压缩,然后在bootloader中解压。差分升级实际上就是对比出两个升级包的差异,然后再对差异进行压缩。这里我们不讲差分,只讲压缩。 压缩算法有很多,QuickLZ是比较适合单片机的一种轻量级无损压缩算法。QuickLZ是一个号称压缩速度最快的压缩库,以下是几种较流行的压缩库的压缩率和速度对比。虽然QuickLZ的压缩率没有Zlib高,但压缩率相差无.........

2022-05-14 01:28:02 4765 7

原创 AES加密模式总结

目录1. ECB模式(Electronic Code Book Mode)2. CBC模式(Cipher Block Chaining Mode)3. CFB模式(Cipher Feedback Mode)4. OFB模式(Output Feedback Mode)5. CTR模式(Counter Mode)6. PCBC模式(Propagating Cipher Block Chaining Mode)AES,即Advanced Encryption Standard,高级加密

2022-04-16 19:52:52 10399 3

原创 BlueZ调试工具的使用

1. bluetoothctl在编译BlueZ时,如果configure配置添加了“–enable-client”,就会编译生成Bluetoothctl工具。如果类比于WiFi,bluetoothd相当于wpa_supplicant,bluetoothctl相当于wpa_cli。bluetoothctl内部集成了一个shell交互功能,直接在命令行运行bluetoothctl工具即可进入该工具的内部shell,输入help可以查看该工具支持的命令。[bluetooth]# helpMenu main

2022-04-01 00:49:42 6742

原创 加密算法之PKCS填充

一些加密方式,例如AES的ECB、CBC、PCBC模式加密时,如果明文分块没有对齐,则需要填充,填充有很多种方式,本章描述的正是填充方式。公钥加密标准(Public Key Cryptography Standards, PKCS),由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。下表是PKCS规范汇总,稍作了解即可。版本名称简介PKCS #12.1RSA

2022-03-31 01:03:43 9127

原创 使用BlueZ连接蓝牙手柄

一、HOGP协议常见的蓝牙鼠标、蓝牙键盘、蓝牙手柄,它们都属于HID设备,但与有线设备不同的是,有线鼠标等设备属于USB HID设备,而蓝牙鼠标等设备属于Bluetooth HID设备,即协议是一样的,只是通信方式不同。HOGP是HID Over GATT Profile的缩写,即蓝牙HID设备是通过BLE的GATT来实现HID协议的。下图是手机BLE调试APP扫描获取到的手柄广播信息,点击"RAW"后可以看到原始的广播数据,解析结果如下:tpye 0x01:蓝牙的FLAG信息,0x06表示设备仅支持

2022-03-30 23:49:04 4752 2

原创 嵌入式中重要的编程模型

本文章来源于极客重生,作者极客重生。一、背景模型是对事物共性的抽象,编程模型就是对编程的共性的抽象。什么是编程的共性呢?最重要的共性就是:程序设计时,代码的抽象方式、组织方式或复用方式。编程模型主要是方法与思想。编程模型处于方法或思想性的层面,在很多情况下,也可称为编程方法、编程方式、编程模式或编程技术、编程范式。在这里就当做同一种说法。当面对一个新问题时,通常的想法是通过分析,不断的转化和转换,得到本质相同的熟悉的、或抽象的、简单的一个问题,这就是化归思想。把初始的问题或对象称为原型.

2021-10-24 23:25:17 1105 2

原创 N76E003合并boot和app

N76E003的FLASH容量为18KB,这18KB可分为LDROM(Load ROM)和APROM(Application ROM)。LDROM和APROM共用这18KB的FLASH,可以通过配置CONFIG寄存器来决定程序从LDROM启动还是从APROM启动,以及分配给LDROM的空间大小,如图1和图2所示。图1 CONFIG0寄存器描述图2 CONFIG1寄存器描述 由于升级功能引入了boot程序,因此最终需要烧录的文件有2个,需要分别烧录到LDROM...

2021-09-22 00:15:08 499

原创 提升BLE吞吐速率的方法

一个带BLE的项目中,有个需求是通过手机升级设备的单片机程序,单片机通过CC2640R2F间接和手机通信。本文记录了调试过程中提升BLE吞吐速率的一些方法,能力有限,如有错误,欢迎指正。 由于BLE的低功耗特性,每个连接事件可以交换一次数据,一次连接事件仅能传输20字节有效数据,故对于大数据量传输来说,吞吐量是非常低的。假设每次传输的升级包数据是128字节,连接间隔是30ms,每次传输16字节有效数据,那么需要8次连接事件,即最快240ms才能发送有效128字节升级包数据。假设...

2021-08-07 18:14:43 1395

原创 awk提取字符串并转换成16进制数组

工作中我们常用Linux三剑客之一的awk来格式化文本。例如有一次厂家给了我一个文本,是电量计相关的参数,需要我们从文本中提取数据并写入电量计,文本如下所示(删除了很多),我们需要提取文本中的AlgorithmData数据,例如AlgorithmData0=184C1A4D这一行,我们需要提取出0x18,0x4C,0x1A,0x4D。[FlashData]Interrupt Config=0000User Config=0001Flash Update OK Voltage=28...

2021-07-10 15:17:22 1381

转载 动态图分析Zigbee路由过程

原文链接:https://blog.csdn.net/weixin_48407519/article/details/108692748 Zigbee路由机制 之 表路由 Zigbee基于使用的场景采用了多种路由方式,主要的机制包括以下几种 表路由Many-to-one/源路由广

2021-03-29 01:32:39 898

转载 Zigbee Commissioning

本文原地址:https://blog.csdn.net/jason_lm/article/details/80886617 1. 概述       从事zigbee设备开发的人对commission这个词应该不陌生,可译为"使服役",大概意思对了,但是不太明朗。在HA的规范文档中将其定义为: to put a device in an operatio

2021-03-28 23:28:31 528

转载 Zigbee路由

本文原地址:https://blog.csdn.net/jason_lm/article/details/82223079 1. 定义及概述        路由的定义是:将数据从源节点传输到目的节点。路由这个词本义是动词,指将网络数据传输(transfer)到目标节点的动作,这个动作需要多个节点参与;有时也可能是名词,表示路由路径,指从源到目标这条传输路径。本文讨论的zig

2021-03-28 23:26:40 1543

转载 【ember zigbee】序章:协议栈相关文档学习笔记

原文地址:https://blog.csdn.net/tainjau/article/details/90648114 文章目录 写在前面一、材料出处二、文档解析2.1、EZSP Protocol Reference Guide -- UG1002.2、UA

2021-03-28 01:16:38 343

转载 第五章:zigbee学习笔记之网络层帧格式分析(下)

本文原地址:https://blog.csdn.net/tainjau/article/details/87338803 文章目录 写在前面1、数据帧2、命令帧2.1、路由请求命令(Route Request)2.1.1、命令选择域(Command Opti

2021-03-28 00:56:27 479

转载 第四章:zigbee学习笔记之网络层帧格式分析(上)

本文原地址:https://blog.csdn.net/tainjau/article/details/81674323   写在前面 zigbee相关文章链接: 第一章:zigbee学习笔记之简介(上) 第二章:zigbee学习笔记之简介(下) 第三章:zigbee学习笔记之物理层和mac层帧格式分析 第四章:zigbee学习笔记之网络层帧格式分析(上) 第五章:zigb

2021-03-28 00:55:25 1218

转载 第三章:zigbee学习笔记之物理层和mac层帧格式分析

本文原地址:https://blog.csdn.net/tainjau/article/details/81634681 IEEE802.15.4工作组致力于无线个人区域网络(wireless personal area network, WPAN)的标准化工作,制定的IEEE802.15.4标准规定了WPAN网络的物理层(PHY)和媒体访问层(MAC) 那么接下来的物理层和mac层都是以IEE

2021-03-28 00:53:25 1863

转载 第二章:zigbee学习笔记之简介(下)

注:本文原地址:https://blog.csdn.net/tainjau/article/details/81583145 写在前面 zigbee相关文章链接: 第一章:zigbee学习笔记之简介(上) 第二章:zigbee学习笔记之简介(下) 第三章:zigbee学习笔记之物理层和mac层帧格式分析 第四章:zigbee学习笔记之网络层帧格式分析(上) 第五章:zigbee学习笔记

2021-03-28 00:46:48 393

转载 第一章:zigbee学习笔记之简介(上)

注:文章转载自https://blog.csdn.net/tainjau/article/details/81540013 写在前面: 最近开始搞智能家居的项目,之前只是了解过zigbee,但是并未深入学习过,所以工作之余,忙里偷闲下,学习一下zigbee协议栈。 这里我学习的方式是以抓包器+官方文档来学习,目前想先把协议这块看懂,将来看数据包时候就能大概知道发生什么事了。 zigbee相关

2021-03-28 00:13:08 609

原创 SourceInsight代码格式化插件

像VScode、eclipse等功能强大的IDE都有一个一键格式化代码的功能,在SourceInsight里可以通过插件来实现这个功能,这个插件叫AStyle。接下以SourceInsight3.5为例讲解如何安装Astyle。打开SourceInsight,以此点击Options--Custom Commands,点击Add,在Command栏输入Astyle_C,Run栏输入D:\02_Data\AStyle\bin\AStyle.exe --style=ansi -s4 -S -N -L -m0

2021-03-20 01:02:08 1758

原创 SourceInsight快捷注释

SourceInsight没有内置代码快捷注释功能,需要在脚本中添加代码来实现。具体操作步骤:打开Sourceinsight工程,在Project Name栏输入base,打开base工程,如下图所示。打开base工程在base工程中打开Utils.em文件,如下图所示。打开Utils.em后,在代码的最后,加上以下代码。/*注释多行代码的函数*/macro MultiLineComment() { hwnd = GetCurrentWnd() ..

2021-03-20 00:51:26 4205

原创 C++快速入门2——面向对象编程

1、继承的三种权限public:类内类外都能访问。protected:类内和子类可以访问,类外不能访问。private:只允许类内访问,子类和类外都不能访问。2、调整继承权限使用using 类名::变量名或方法,可以控制单个成员或方法的继承权限。使用方法如下,Son继承了Father之后,将Father类里的key权限改为public,外界也可以访问了;如果放在Son类的private下,那么key就变为Son私有的了,不能再被Son的子类所继承。class Father{ protec

2021-01-25 01:29:02 194

EllisysBluetoothAnalyzer.msi

EllisysBluetoothAnalyzer.msi

2022-12-09

低功耗蓝牙和经典蓝牙profile集合

低功耗蓝牙和经典蓝牙profile集合

2022-03-29

nRF52832抓包环境搭建.rar

nRF52832抓包环境搭建,包含pyserial-3.4.tar.gz、python-2.7.16.amd64.msi、Wireshark-win64-2.4.6.exe、nrfsniffer200beta312oct20181c2a221.zip

2021-04-09

SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part05.rar

SimplicityStudio-v5-EmberZnet 6.9.0.0 part5

2021-03-29

SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part04.rar

SimplicityStudio-v5-EmberZnet 6.9.0.0 part4

2021-03-29

SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part03.rar

SimplicityStudio-v5-EmberZnet 6.9.0.0 part3

2021-03-29

SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part02.rar

SimplicityStudio-v5-EmberZnet 6.9.0.0 part2

2021-03-29

SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part01.rar

SimplicityStudio-v5-EmberZnet 6.9.0.0 part1

2021-03-29

Keil.FM33LC0XX_DFP.1.0.4.rar

复旦微FM33LC0系列MCUpack包

2021-03-28

zigbee_Z-Stack 3.0 开发者中文手册.pdf

zigbee_Z-Stack 3.0 开发者中文手册.pdf

2021-03-28

STM32固件分区Demo.zip

STM32固件分区Demo

2021-03-28

Linux-4.9.88.tar.bz2

Linux-4.9.88内核源码

2021-03-28

CC2531驱动.zip

Zigbee抓包工具驱动

2021-03-28

潘多拉开发手册及原理图等资料.zip

潘多拉开发板的裸机开发手册、RT-Thread开发手册、原理图等资料。

2019-09-06

潘多拉开发板手册及原理图.zip

潘多拉开发板的裸机开发手册、RT-Thread开发手册、原理图等资料。

2019-09-06

潘多拉开发板.zip

正点原子潘多拉开发板程序源码,包含裸机例程和RT-Thread例程。

2019-09-06

FSEC大学生电动方程式赛车电气系统设计

本人毕业设计,包含PCB原理图、程序、上位机、毕业论文等

2018-07-06

空空如也

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

TA关注的人

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