- 博客(60)
- 收藏
- 关注

原创 UWB技术了解
随着各手机厂商在其旗舰级上支持了UWB模块,和UWB相关的衍生应用也越来越广泛。例如苹果的AirTag无线追踪器,以及小米的“一指连”,手机指向支持UWB技术的电风扇,手机上会弹出一个控制卡片,进而实现对风扇的操控,无需实体遥控器,除此以外,小米“一指连”还实现了智能电视投屏、智能门锁靠近即开等操作。另外UWB在室内定位或者说小空间内的定位应用也很广泛,因为UWB采用的时基于飞行时间(ToF-base)的测距方式+ UWB信号的脉冲极短,因此它的精度很高,一般情况下能达到10cm的精度。
2024-02-20 20:07:23
4192

原创 使用Strace定位Linux下线程泄露
Linux下我们可以通过通过命令行输入free查看系统的整体内存消耗情况,以及通过输入查看进程实际消耗物理内存VmRss的方式了解到进程所消耗的内存。因此我们可以通过输入命令行的方式进行对比查看了解当内存泄露时,具体是哪个进程泄露的。但是想要查看线程所消耗的内存则需要借助外部工具了,这里我们介绍下通过strace工具查看进程内存增长时,具体是哪个线程增长的。
2024-01-30 15:00:03
1705

原创 GUI和AWTK介绍
GUI(图形化界面)目前在我们的生活中无处不在,以至于我们都很少关注到他为我们所带来的巨大改变,GUI出现于1970年一群天才之手,后伴随着PC由面向企业到面向个人的发展,再经乔布斯和比尔盖茨等发掘应用逐渐进入到大众视野。AWTK是我们国产的GUI开源引擎,其代码干净利落,思路清晰,而且各种更新频繁各种特性在不断的进行支持,同时对于开发者的支持做的也很好经常碰到问题后在github上上午提问,下午可能就有答复了。
2023-04-16 21:36:57
4335

原创 《程序员代码之外的生存指南》中“努力工作的价值,以及为什么自己总是逃避努力工作”的思考
今天恰巧在《软技能,代码之外的生存指南》中看到了“努力工作的价值,以及为什么你总是逃避努力工作”这一章,看完之后对我造成了一定的触动,我也想借此机会谈谈自己对于努力工作的看法。
2021-12-21 22:38:08
315
1
原创 MicroROS简述
MicroROS是ROS 2的轻量级版本,专为资源受限的微控制器(MCU)设计。它通过精简ROS 2功能和引入中间代理(Agent),使MCU设备能无缝接入ROS网络。Agent负责协议转换和动态发现,让MCU设备直接使用ROS API进行开发,无需手动解析数据。MicroROS解决了机器人系统中高端处理器与底层MCU的通信断层问题,提高了开发效率和实时性,同时支持边缘计算和ROS生态复用。其出现背景包括ROS 2无法在MCU运行、硬件层与应用层通信效率低下等痛点,为机器人开发提供了更灵活的解决方案。
2025-06-03 20:15:50
363
原创 FreeRTOS - 定时器踩坑记录(注意用不好真的会崩)
在STM32设备上,使用FreeRTOS时遇到设备重启后反复崩溃的问题。经过排查,发现与FreeRTOS定时器的使用不规范有关。具体表现为定时器回调函数执行时间过长,导致定时器消息队列堆积,最终引发系统崩溃。通过分析栈回溯和定时器源码,确认了问题的根源,并提出了增加定时器队列大小和优化回调函数执行时间的解决方案。文章详细介绍了排查过程,并总结了FreeRTOS定时器的使用规范,以避免类似问题的发生。
2025-05-22 17:11:51
786
原创 小智AI机器人 - 语音代码梳理1
本篇主要是梳理和记录与语音相关功能的整体代码框架是怎么样的,有哪些模块它们又分别起到什么作用,先对与语音相关的整体代码结构有个初步的了解,这部分内容也比较多所以会分开来记录。
2025-05-19 20:20:51
1039
原创 小智AI机器人 - 语音相关方案了解2( 3D Speaker + 大模型 TTS )
本篇主要是记录下自己所了解到的小智AI聊天机器人背后的语音技术的后半部分(`声纹识别 3D Speaker + 大模型 TTS - 火山引擎 + 大模型TTS - CosyVoice`)。
2025-05-19 16:28:07
702
原创 小智AI机器人 - 语音相关方案了解1(ESP-SR + SenseVoice)
本篇主要是记录下自己所了解到的小智AI聊天机器人背后的语音技术的一部分(`ESP-SR+SenseVoice`),这块内容有点多所以估计要拆成几篇去记录了。
2025-05-19 15:30:55
1302
原创 一种简单的将app.hex和boot.hex进行合并的方法
在开发调试过程中,我们一般采用将bootloader的程序如boot.hex和的程序如app.hex进行分别下载的方式,即采用两次下载。但是在产线上为了增加生产效率,一般都会要求研发提供一种只烧录一次即可的办法,这时我们经常采用将boot.hex与app.hex进行合并生成一个后重新烧录的方式。
2025-02-23 20:43:24
358
原创 聊一聊 - FreeRTOS的调度器是如何接管main函数的
我们知道在使用FreeRTOS时,当我们在main函数中调用了之后,FreeRTOS的任务调度器就接管了main()了,且不会运行main中之后的代码了。之前我一直认为FreeRTOS中有类似于while(1)地方,所以调用了();之后就不会再往下继续运行了。然后带着这种想法我去查看了FreeRTOS的代码,可是走进()的实现,并没有找到有任何wihle(1)的地方。于是为了找到答案,我重新梳理了下FreeRTOS的任务调度器是如何接管main。
2025-01-09 20:31:15
832
原创 N32使用定时器TIM1注意事项
在N32G003上进行裸机驱动代码编写时,碰到一个使用TIM1输出PWM一直没有波形的问题。本来想着以自己多年的开发经验,写个裸机的驱动不是轻而易举,没想到还是花费了点时间,这里发出来和大家分享一下。
2025-01-07 20:59:03
1370
原创 一种好用简单的软件定时器写法(支持裸机)
分享一种我近些年经常使用,好用简单的裸机软件定时器写法可以运行在各类单片机的裸机中,这块的设计主要参考开源GUI引擎AWTK的定时器实现。不需要操作系统的接口,也不需要链表,简单好用易懂。
2024-12-24 19:00:59
886
原创 ROS2 - Python工程创建和工程解析
本文主要介绍如何创建、编写、编译、运行ROS2的python工程。开发环境是基于Ubuntu的Linux虚拟机。本文中很多的学习资源来源于ROS2官网colcon是对 ROS 构建工具catkin_make、catkin_make_isolated、catkin_tools和ament_tools的迭代。据我初步了解ROS1使用的是catkin_make、catkin_make_isolated、catkin_tools。
2024-12-18 21:46:18
1434
原创 ROS2 - 创建自定义消息和srv文件【上】
限于篇幅本文是介绍如何创建自定义msg和srv的上半部分。上半部分:详细讲解创建过程中的每一步是如何实施的以及为什么要这样做。下半部分:详细介绍编译以及验证过程。
2024-12-18 17:37:55
1627
原创 ROS2 学习笔记系列文章索引
随着AI的发展以及ChatGPT的出现,大家逐渐看到了解决机器人最棘手的机器人大脑问题的可能性,同时随着像中国等比较发达的国家逐渐进入人口老龄化,未来年轻劳动力势必会缺失。在这一系列因素之下,发展机器人,提前布局和进入机器人相关方面的研究再次被整个国家,公司以及资本市场所看好。作为一名开发者,我一直希望自己能够做出或者说参与做出能够改变和造福整个社会的产品,从而为这个社会留下一些有用的东西,来体现自己的价值。在我看来机器人是一个很有价值的产品,所以希望能在空闲之余去对其做一些了解。
2024-12-08 22:21:57
480
原创 ROS2 - C++工程创建和工程解析
本文主要介绍如何创建、编写、编译、运行ROS2的C++工程。开发环境是基于Ubuntu的Linux虚拟机。
2024-12-08 22:19:25
1302
原创 FreeRTOS的辅助调试手段
在使用FreeRTOS开发的过程中,经常碰到因内存不足以及线程栈溢出而产生的崩溃问题。起初对FreeRTOS不熟悉,碰到这种崩溃问题就是通过map文件反向查看是不是崩在了FreeRTOS的线程或者定时器调度中,如果是这几个里面那么大概率是线程或者定时器的资源不足,导致的崩溃,然后尝试增加资源再次进行尝试。等空下来去查看FreeRTOS有哪些调试手段,发现人家本身提供的就有“线程栈溢出钩子函数”以及“内存分配失败的钩子函数”,只是自己没有用起来。下面简单介绍下这两种调试手段怎么使用。
2024-11-26 20:00:41
816
原创 内存碎片是如何产生的?
近期听到大家在讨论不要在FreeRTOS中使用JSON ,因为在做JSON解析的过程中会产生,很多小的内存碎片。导致最后内存申请不出来,间接的产生内存泄漏。为什么使用JSON会产生内存碎片?内存是怎么分配的?内存碎片到底是怎么产生的?是只有FreeRTOS中才会有内存碎片吗?Linux操作系统使用内存时有没有内存碎片?决定是否存在内存碎片的到底是什么?于是在网上找了一些资料围绕着上述问题进行了一些记录。这里和大家分享一下。
2024-11-20 18:56:14
916
原创 DC-DC充放电原理
最近用了一款充放电芯片SC8815,可以通过配置该芯片的寄存器结合外围电路,自动对充放电进行管理。虽然芯片用起来了,但是充放电到底是如何实现的还是不太清楚,于是去了解了一些DC-DC充放电相关的知识。这里进行下记录另外为什么说充放电会去讨论升压和降压相关的原理呢?这是因为,首先充电肯定是电压高的一方向电压低的一方去充,然后现如今不同快充之间的区别经常是充电电压的不同,例如常见的66w和120w快充,一般是11V / 6A 和 20V / 6A。
2024-07-07 15:24:05
1653
原创 AUTOSAR学习
前段时间参加系统架构师的软考,其中案例分析中的嵌入式题目是分析autosar架构,但是自己只是听说过汽车领域正在使用这个架构,实际上这个架构到底是什么?以及它有什么作用,则是全然不知,最终作为一个嵌入式工程师,案例题也没有选择这个嵌入式题目。其实软考会考这个东西再一定层面上就说明,国家或者当前社会这块的人才是有些稀缺的,然后想通过这种软考让更多的人去了解autosar架构。另外最近在看机器人领域的工作,发现和ROS(机器人操作系统)相关的开发工作中很多都提到了要对autosar有一定的了解。
2024-06-12 17:35:36
3379
原创 STM32的时钟介绍
最近因为工作需要又重新接触到了大学时期经常使用的STM32单片机。本以为自己工作了那么多年,再加上大学时期经常使用单片机,对于在STM32上面开发应该是手到擒来。但是在真正开发时还是碰到了很多问题,特别是时钟这块,经常被各种SYSCLK,HCLK, APB, AHB, PLL等搞的晕头转向,调试时也不知道该如何下手,于是决定花点时间把STM32单片机的时钟给梳理下,弄清楚后再进行开发,否则只是一味的去试不仅消耗时间多,而且很难得到最正确的那个解。
2024-05-29 21:13:54
1618
原创 STM32CubeMX 生成的代码框架解析 - 最小化工程篇(含FreeRTOS)
最近因为工作中要用到STM32+FreeRTOS进行开发,因此借助此次机会学习下STM32CubeMX生成的带有FreeRTOS的工程代码。熟悉下其生成代码的结构,以及一些细节。这篇的话我想首先分析下,最简单的结构是什么样的,即所有的都按照默认来,不增加外设驱动,不对FreeRTOS进行过多的配置,我称之为最小化工程。后面再通过写一些增加驱动、FreeRTOS的各项配置等来进行对比,进一步加强理解。文件夹总目录下分别有4个文件夹Core、Drivers、MDK-ARM、Middlewares。
2024-03-25 17:00:03
3467
原创 STM32 使用gcc编译介绍
我们在STM32上进行开发时,一般都是基于Keil5进行编译下载,Keil5中默认集成了arm的编译工具链。这种方式的优点是简单方便,但是相对应的不够灵活。例如我们在实际开发过程中经常一套代码需要在不同的RTOS和硬件平台上运行,为了更好的维护这套代码,我们一般会对RTOS和硬件驱动进行抽象,不同的RTOS和硬件平台分别是实现这些抽象。然后通过编译时传入不同参数来确定最终要使用的RTOS和硬件平台。这种情况如果利用Keil5去直接编译就比较麻烦,因此我们需要借助makefile去组织和管理代码。
2024-03-23 11:43:17
1960
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人