- 博客(64)
- 资源 (16)
- 收藏
- 关注

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

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

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

原创 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
9052
15

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

原创 RT-Thread线程间通信源码解析
目前网上有许多讲解RT-Thread的IPC(信号量、互斥量、事件、邮箱、队列)相关文档,但仅停留在API的使用,鲜有从源码角度讲解其实现原理。野火出版的《RT-Thread内核实现与应用开发实战指南》不仅讲解了线程调度等实现原理,还讲解了IPC的实现原理,本文仅仅是作为学习笔记来简短叙述下IPC的实现原理,想深入学习的话可以参考野火的这本书,也可以直接阅读源码。目录一、线程内置定时器二、IPC父类对象三、信号量四、互斥量五、事件六、邮箱七、消息队列一、线程内置定时器.
2020-05-24 21:02:58
3408
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
6298
9
原创 win11右键菜单改回win10模式
win11右键菜单非常不好用,经常需要点击最下方的“显示更多选项”,下面是win11右键菜单改回win10模式的方法。
2025-04-26 21:52:53
249
原创 QT自动获取编译日期与git commit ID
有时候我们希望软件版本号中携带日期,而每次手动修改日期比较麻烦,可以利用__DATE__来自动获取编译时的日期。另外软件也可以自动获取git 的commit ID,方便代码回溯和对齐。
2024-09-04 13:38:08
613
原创 repo下载报错SyntaxError: invalid syntax
repo下载报错SyntaxError: invalid syntax解决方法
2023-11-14 14:25:15
4233
7
原创 HP203B气压温度传感器驱动
设备树代码如下,需要注意的是在设备中描述的I2C器件地址是7位的,不是8位的,否则I2C子系统初始化时会提示找不到设备。废话不多说,直接上代码。
2023-11-14 09:50:19
562
原创 lwip多网卡自适应选择
可知,当上层有数据要发送时,lwip会查找已注册的网卡中适合的网卡,条件为:网卡已启动、网卡链接成功、已获取到ip,如果指定了源ip则在符合上述条件的网卡中找到和源ip地址一致的网卡,否则使用默认网卡。当系统中有多个网卡时,lwip会选择第一个网卡作为默认网卡,ping、tftp、iperf都会选择第一个网卡来进行,没有办法使用第二个网卡(一些命令可以通过-i选项选择网卡,有些命令则没有提供),此时需要修改lwip中发送数据时网卡选择的逻辑。
2023-10-24 10:06:35
1549
6
原创 内存泄漏定位工具
这里基于RT-Thread写了一个内存泄漏定位工具(实际和RTT无关,什么系统都可以用,要适当修改),原理非常简单:申请内存时,记录申请的内存地址、大小,以及申请内存这行代码所在的文件名和行号,当释放内存时,根据内存地址找到之前的记录并删除,最后留下的记录就极有可能是发生内存的代码(当然有些内存是常驻的,需要使用者自己辨别)。申请内存时会记录代码所在的文件名,MEM_TRACE_FILE_NAME_LEN就是文件名的最大长度,最终记录的只有最后级的文件名,不包含路径,所以16字节应该是够用的。
2023-08-28 15:57:29
867
原创 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
565
原创 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
5733
2
原创 压缩算法在单片机升级中的应用
在项目开发过程中,难免会遇到需要在线升级的情况,而升级包过大会导致升级所需久,影响产品性能和用户体验,因此我们可以将需要升级的程序压缩,然后在bootloader中解压。差分升级实际上就是对比出两个升级包的差异,然后再对差异进行压缩。这里我们不讲差分,只讲压缩。 压缩算法有很多,QuickLZ是比较适合单片机的一种轻量级无损压缩算法。QuickLZ是一个号称压缩速度最快的压缩库,以下是几种较流行的压缩库的压缩率和速度对比。虽然QuickLZ的压缩率没有Zlib高,但压缩率相差无.........
2022-05-14 01:28:02
5959
11
原创 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
12422
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
9085
原创 加密算法之PKCS填充
一些加密方式,例如AES的ECB、CBC、PCBC模式加密时,如果明文分块没有对齐,则需要填充,填充有很多种方式,本章描述的正是填充方式。公钥加密标准(Public Key Cryptography Standards, PKCS),由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。下表是PKCS规范汇总,稍作了解即可。版本名称简介PKCS #12.1RSA
2022-03-31 01:03:43
11646
原创 使用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
10191
5
原创 嵌入式中重要的编程模型
本文章来源于极客重生,作者极客重生。一、背景模型是对事物共性的抽象,编程模型就是对编程的共性的抽象。什么是编程的共性呢?最重要的共性就是:程序设计时,代码的抽象方式、组织方式或复用方式。编程模型主要是方法与思想。编程模型处于方法或思想性的层面,在很多情况下,也可称为编程方法、编程方式、编程模式或编程技术、编程范式。在这里就当做同一种说法。当面对一个新问题时,通常的想法是通过分析,不断的转化和转换,得到本质相同的熟悉的、或抽象的、简单的一个问题,这就是化归思想。把初始的问题或对象称为原型.
2021-10-24 23:25:17
1457
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
638
原创 提升BLE吞吐速率的方法
一个带BLE的项目中,有个需求是通过手机升级设备的单片机程序,单片机通过CC2640R2F间接和手机通信。本文记录了调试过程中提升BLE吞吐速率的一些方法,能力有限,如有错误,欢迎指正。 由于BLE的低功耗特性,每个连接事件可以交换一次数据,一次连接事件仅能传输20字节有效数据,故对于大数据量传输来说,吞吐量是非常低的。假设每次传输的升级包数据是128字节,连接间隔是30ms,每次传输16字节有效数据,那么需要8次连接事件,即最快240ms才能发送有效128字节升级包数据。假设...
2021-08-07 18:14:43
1782
原创 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
1589
转载 动态图分析Zigbee路由过程
原文链接:https://blog.csdn.net/weixin_48407519/article/details/108692748 Zigbee路由机制 之 表路由 Zigbee基于使用的场景采用了多种路由方式,主要的机制包括以下几种 表路由Many-to-one/源路由广
2021-03-29 01:32:39
1010
转载 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
695
转载 Zigbee路由
本文原地址:https://blog.csdn.net/jason_lm/article/details/82223079 1. 定义及概述 路由的定义是:将数据从源节点传输到目的节点。路由这个词本义是动词,指将网络数据传输(transfer)到目标节点的动作,这个动作需要多个节点参与;有时也可能是名词,表示路由路径,指从源到目标这条传输路径。本文讨论的zig
2021-03-28 23:26:40
1754
转载 【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
432
转载 第五章: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
604
转载 第四章:zigbee学习笔记之网络层帧格式分析(上)
本文原地址:https://blog.csdn.net/tainjau/article/details/81674323 写在前面 zigbee相关文章链接: 第一章:zigbee学习笔记之简介(上) 第二章:zigbee学习笔记之简介(下) 第三章:zigbee学习笔记之物理层和mac层帧格式分析 第四章:zigbee学习笔记之网络层帧格式分析(上) 第五章:zigb
2021-03-28 00:55:25
1387
转载 第三章: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
2390
转载 第二章:zigbee学习笔记之简介(下)
注:本文原地址:https://blog.csdn.net/tainjau/article/details/81583145 写在前面 zigbee相关文章链接: 第一章:zigbee学习笔记之简介(上) 第二章:zigbee学习笔记之简介(下) 第三章:zigbee学习笔记之物理层和mac层帧格式分析 第四章:zigbee学习笔记之网络层帧格式分析(上) 第五章:zigbee学习笔记
2021-03-28 00:46:48
473
转载 第一章:zigbee学习笔记之简介(上)
注:文章转载自https://blog.csdn.net/tainjau/article/details/81540013 写在前面: 最近开始搞智能家居的项目,之前只是了解过zigbee,但是并未深入学习过,所以工作之余,忙里偷闲下,学习一下zigbee协议栈。 这里我学习的方式是以抓包器+官方文档来学习,目前想先把协议这块看懂,将来看数据包时候就能大概知道发生什么事了。 zigbee相关
2021-03-28 00:13:08
707
原创 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
1996
nRF52832抓包环境搭建.rar
2021-04-09
SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part05.rar
2021-03-29
SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part04.rar
2021-03-29
SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part03.rar
2021-03-29
SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part02.rar
2021-03-29
SimplicityStudio-v5-EmberZnet 6.9.0.0-WIN10.part01.rar
2021-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人