李肖遥的专栏

一个逍遥不羁的码农,微信公众号「技术让梦想更伟大」

  • 博客(2032)
  • 资源 (5)
  • 收藏
  • 关注

原创 开干!逍遥的小蜜圈

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥Who Am I 大家好,我是「逍遥的小蜜圈」星球的星主,如果大家关注我早一点,一定看了我的简单的自我介绍,关于我 — 聊...

2020-12-13 15:30:06 2370 10

原创 【技术让梦想更伟大】专辑 | 原创汇总

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥想做一个有态度的公众号,原创是我的态度,这样的话不仅自己可以学习到新的知识,巩固自己所学,也可以与大家一起分享。做公众号一...

2020-12-08 22:14:00 2318 7

原创 嵌入式开发找50W+工作必备的技能栈

一名合格的嵌入式工程师,不仅需要扎实的底层编程能力,还要理解电子电路、实时操作系统以及各种工业通信协议,甚至需要熟悉特定领域的功能安全标准。个人观点:不必精通所有协议,但至少应掌握UART、I²C、SPI和CAN,并理解不同协议在速率、距离、拓扑上的适用场景。:最基础的外设,但也是控制逻辑的核心。:UART(调试输出)、I²C(传感器)、SPI(高速外设)、CAN(汽车网络)、LIN(低成本汽车总线)。:能够快速读懂MCU的外围电路,包括电源分配、晶振连接、调试接口等,是定位硬件问题的基本功。

2026-04-14 22:09:48 136

转载 嵌入式系统开发中该如何选择数据结构?

举个通俗例子:原始链表按从小到大存储1-10的数字,第一层索引每隔2个节点提取一个(1、3、5...),第二层索引再从第一层索引中每隔2个节点提取(1、5、9),查找节点8时,先从顶层索引快速定位到5-9区间,再向下层索引缩小范围,最后落到原始链表精准查找,全程跳过大量无效节点,无需逐一遍历。构建有序跳表,优先级高的任务排在链表前端,同时建立多级优先级索引,适配资源受限的MCU级RTOS,代码量远低于红黑树调度器,调度响应速度远超普通链表,同时支持动态调整任务优先级,兼顾了实时性与代码精简性。

2026-04-13 22:10:19 2

原创 每周一家公司职场内幕——大疆DJI

技术/研发岗(算法、嵌入式、飞控、硬件):20-35k/月,硕士年薪30万起,SP/SSP Offer 40-60万,顶尖博士80-100万+从深圳车公庙20平米的仓库,到如今占据全球无人机市场七八成份额的隐形巨头,大疆用20年时间,书写了一个“技术信仰”的传奇。在中国科技公司里,有靠补贴长大的,有靠流量起家的,还有靠“硬核”杀出一条血路的。工业级(农业、电力、安防)高速增长,全球渗透率低,空间巨大。手持影像2025年强势崛起,运动相机、全景相机双第一,依托无人机技术与渠道,持续挤压GoPro、影石。

2026-04-09 22:08:53 499

转载 分享一个适合嵌入式开发的EFSM 框架

它描述的是:一个系统在任意时刻只能处于有限个状态中的某一个,当接收到一个外部事件后,根据当前状态和事件类型,执行特定的动作并转移到下一个状态。EFSM 不是什么革命性的新技术,但它用极少的代码量(不到 800 行)展示了一个工业级状态机框架该有的样子:表驱动的清晰架构、创建时的严格校验、运行时的历史记录、异常场景的灵活处理。在嵌入式领域,FSM 的身影无处不在:通信协议的握手流程、设备的上下电管理、UI 界面的页面切换、电机控制的运行模式……展示了 4 个状态和关键事件驱动的转移路径。

2026-04-08 22:06:40 29

转载 适合嵌入式新手实战的五个项目!

本文精选5个难度递进的小项目,覆盖基础外设控制到简单智能系统搭建,帮助快速掌握核心技能。优先级排序:LED流水灯→按键检测→串口通信→I2C传感器→温控系统。技术延伸:添加LCD显示或WiFi模块实现远程监控。核心目标:掌握GPIO输出控制与延时函数。核心目标:理解GPIO输入模式与中断机制。核心目标:学习I2C总线协议与传感器驱动。核心目标:整合传感器、控制算法与执行机构。技术延伸:尝试用定时器中断替代软件延时。核心目标:掌握UART协议与数据帧处理。技术延伸:尝试多设备挂载与冲突处理。

2026-04-07 22:08:30 20

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 26

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 32

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 13

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 14

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 22

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 11

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 12

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 12

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 8

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 13 1

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 5

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 7

转载 推荐一款嵌入式实时调试的“瑞士军刀“

它学习成本低(基于 printf 语法)、集成简单(几个文件即可)、性能影响极小,并且一旦集成到项目中,就像给固件装上了"黑匣子"——无论是开发阶段的 Bug 追踪,还是产品交付后的现场故障分析,都能发挥价值。每一位嵌入式工程师都经历过这样的场景:一个诡异的 Bug 只在特定时序下才会出现,你挂上 JTAG 打断点,程序一停——通信超时了。下面通过一个温度监控系统的示例,展示 RTEdbg 的典型用法。这就像硬件测试中的"测试插头"——你有 32 个通道,可以自由选择接入哪些来观察当前关注的信息。

2026-04-02 22:10:20 3

转载 整理推荐的嵌入式开发面试题

核心功能:挂载系统分区、执行 OTA 升级脚本、清除数据。:将 JPEG 压缩格式(二进制流)转换为 RGB/BGR 等未压缩格式,步骤:解析文件头、霍夫曼解码、逆 DCT 变换、去量化、色彩空间转换(YCrCb→RGB)。:根文件系统(rootfs)是 Linux 启动后挂载的第一个文件系统,提供用户空间基础环境(命令、库、配置文件、设备节点等),是用户态程序运行的载体。总线设备驱动:I2C 接口的温湿度传感器(SHT30)、SPI 接口的显示屏(OLED),适配设备树,实现设备探测、数据读写逻辑;

2026-04-01 22:08:40 27

转载 函数指针重构应用

在嵌入式软件开发中,从简单的回调函数到复杂的状态机,从启动代码到驱动框架,函数指针几乎无处不在。在嵌入式开发中,经常需要处理不同的命令、事件或消息。状态机用于处理具有多个状态和状态转换的系统。在嵌入式系统中,启动代码(Startup Code)是系统上电后执行的第一段代码。函数指针在启动代码中扮演着重要角色,特别是在中断向量表和初始化函数表的实现中。中断向量表是一个函数指针数组,每个元素对应一个中断处理函数的地址。将函数指针存储在数组中,通过索引直接调用对应的函数。• 新增状态需要修改多处代码。

2026-03-30 22:09:41 19

转载 嵌入式也要避免编程实践?

新手常按「够用就行」给 128、256 字节,结果该任务调用层级一深、局部变量一大,直接栈溢出,表现就是某任务一执行就 HardFault,排查半天才发现是栈爆了。很多中大型项目,代码模块比较多,很多人编译代码时,看到满屏的警告跟没看见一样,只要编译不报错了就觉得万事大吉。你在中断里改了某个全局变量,主循环在用它,另一个模块也在用它,最后谁改的、什么时候改的根本理不清。如果外设通信失败,代码继续往下执行,后面的操作都会基于错误的假设。更关键的是,malloc的执行时间是不确定的,这在实时系统中是个大忌。

2026-03-28 22:10:09 42

转载 看透C语言了

31行 :通过b指令,判断cpsr中的状态位,如果小于等于(ble),则跳转到0x4000801c位置,否则往下执行。26-27行:i++ :从栈中i值到r3,然后将1累加到寄存器r3。这几行代码,为我们在栈顶预留了12字节的空间,r7指向分配的栈顶。废话不多说,直接上c代码,这个代码非常简单,就不多说了。从上图可以得出,if代码块翻译成汇编代码的思路就是,:将寄存器写入值0,然后将该值压入栈0x04位置,28-29 行:将i的值写入到栈,然后再读出到r3。将i的值累加到sum。

2026-03-26 22:08:46 68

转载 代码异常时,这样做能精确定位程序的执行位置

发生异常时,有时MCU是真正“死机”了,例如在进行ESD实验时,MCU可能真的死掉,即使通过NRST引脚复位也无法恢复。2)取消勾选“Reset after Connect”:不勾选此项,调试器只会以“attach”模式连接到正在运行的固件,不会清除RAM和重置外设寄存器,从而保留程序的运行时状态和外设配置。1)取消勾选“Update Target before Debugging”:不勾选此项,启动调试时将不会自动重新烧写固件,而是直接连接到目标设备,并调试目标上当前已有的固件。

2026-03-23 22:07:04 48

转载 2026年,离职潮彻底消失了。。。

他跟着宋老师的课程有条不紊地准备,吃透了 Transformer、Attention 等核心考点,提前攻克了面试高频问题,为秋招做好了万全准备。往期学员通过我们的内推,入职都特别高效,内推很多都是大厂,只有帮助大家学习到技术,找到一份好工作,我们才能收获好的口碑。等等不同的应用场景,在整个授课过程中,老师更加注重是业务与思想的传播,让你轻松应对工作中的问题并且有举一反三的能力。中,把理论和实践相结合,帮助学员用最短的时间进入AI领域并掌握相关知识,快速上手主流深度学习开发框架,

2026-03-20 11:33:58 83

转载 中断服务程序编写规范指南

中断服务程序是嵌入式系统中最关键也最容易出错的部分,遵循这些规范,便于写出安全、高效、可靠的中断服务程序。在嵌入式系统中,中断服务程序(ISR)是响应硬件事件的核心机制,直接决定系统的实时性和可靠性。可重入函数是指在被调用过程中再次被中断并重新进入,仍能正确执行的函数。临界区是指访问共享资源的代码段,在同一时间只能有一个执行流进入。在ISR中使用浮点数时,需要特别注意浮点寄存器的保存和恢复。中断嵌套是指高优先级中断打断正在执行的低优先级中断。使用基元屏蔽(只屏蔽相关中断)volatile使用不当。

2026-03-19 22:11:30 49

转载 开始报名了,这个能退好多税

软考重难知识点、软考最新真题及解析、软考优秀论文、软考官方考纲、软考时事政策文件等 40+ 精华文档。我一直觉得整理重难考点是备考路上的最大绊脚石,这下好了,资料包里有现成的、全新整理的。对于有一定工作经验的同学,我都是推荐直接考高级,无它,唯含金量最高尔。投标加分:很多招标文件中,持有国家级证书可加分,尤其是高级证书;并且,证书不限制报名门槛,一经考取,永久有效,全国范围内通用。升职加薪:备考过程能力升级,证书证明实力,增加升职加薪概率;平时上班忙,只有抽业余时间复习,备考难度拉满,怎么办呢?

2026-03-18 22:10:15 41

转载 8位MCU将会消失江湖吗?

即使在2025-2026年面临业绩压力和裁员,Microchip依然在发布新的8位产品(如增强型PIC18系列),并大力推广其8位MCU在边缘AI轻量级应用中的潜力。中国本土厂商在8位MCU领域极其活跃,凭借极致的性价比(部分低至几毛钱人民币)和本地化服务,正在快速替代进口8位MCU,尤其是在消费电子和小家电领域。最后,如果你在做基于8位MCU的项目,不用太担心8位MCU会消失,但也要做(32位MCU的。因为当下8位MCU的需求量其实很大,消费类电子、汽车、家电等随处都有8位MCU的存在。

2026-03-17 22:13:06 46

原创 每周一家公司职场内幕——广和通

通过精准的并购,如收购Sierra Wireless的车载前装业务,以及前瞻性的布局,如成立AI研究院,广和通成功卡位车载、AI等高端高毛利赛道,与移远通信形成了“规模”与“利润”的差异化竞争态势。内部存在明显的华为系、Intel系等派别,晋升与核心资源分配往往与“站队”及上级的私人关系紧密挂钩,“会做不如会讲,会讲不如跟对”的吐槽不绝于耳。最近和一个大学同学联系,才知道他在广和通,不过是在西安的公司,聊了不少不过是电话联系的,没有留下什么文字,所以今天查了下资料以及聊天的内容,来聊一下这家公司。

2026-03-14 22:09:35 294

转载 这组实用嵌入式代码拿来就可以用

文件读写的代码我们几乎每个项目都要写,什么配置参数存储啊、日志落盘啊、固件数据读写啊,太常见了。思路很简单:把 0 地址强转成结构体指针,再去取成员的地址,这个地址的值就是偏移量——因为结构体基地址是 0 嘛。搞嵌入式的应该都知道,结构体的内存布局、对齐方式这些细节经常要关注——通信协议解析、共享内存操作的时候一不注意就踩坑。做 OTA 升级、固件烧写、批量文件拷贝的时候,光看日志刷屏心里没底,加个进度条一目了然。

2026-03-12 22:14:43 44

转载 测试时好好的,一到现场就崩了

虽然大多数情况下,大家习惯配置为8N1(8位数据、无校验、1位停止位),但有不少情况也会用到有校验的情况。坑点: 在有校验模式下,“数据位”的定义在PC与单片机间,可能存在差异,这是导致通信失败的一大常见原因。串口通信的成功,建立在配置精确匹配的基础上。对于单片机,应配置为 9P1,意为 8位数据与1位校验共同组成9位字长 + 1停止位。单片机(如STM32):配置为 8P1 时,可能理解为 7位数据 + 1位校验。最后,在中断程序和主循环中,加入检查错误标志的代码,如果标志置位,把它清除掉。

2026-03-10 22:10:57 64

转载 函数调用太慢,这样解决太强了

关键字修饰普通函数,向编译器发出"建议":将该函数的代码直接展开到调用处,但保留函数的语义完整性。当内联函数在多个地方被展开时,函数体的代码会被复制多份,导致可执行文件(Flash)体积增大。对于一个只有几行代码的简单函数,函数调用的开销可能比函数体本身的执行时间还要长!• ✅ 可以实现一些函数无法实现的功能(如 token 拼接、字符串化)• 可以选择在调用处展开函数体(也可以选择不展开)• 纯粹的文本替换,类似于"查找与替换"• ❌ 只是编译器的"建议",不一定展开。

2026-03-09 22:11:50 50

原创 不是新芯片,不是新框架,小龙虾为啥火爆了

未来的核心竞争力,不再是“你会不会操作”,而是“你会不会提要求”、“你会不会规划”、“你会不会决策”。它先对电脑桌面截图,通过多模态大模型解析屏幕内容,识别Excel文件位置、CRM网页入口、邮箱图标,同时读取Excel内的客户数据,明确任务边界。它给大模型装上了“眼睛、大脑、手和记忆”——能听懂人话,能自己规划步骤,能操控你的电脑,能执行多步骤任务,还能在出错时自己纠错。OpenClaw火爆了,都需要排队去装,是不是有点夸张了啊,火得离谱——不是新芯片,不是新框架,是一只“小龙虾”。

2026-03-08 22:12:27 610

转载 分享一个超强的FreeRTOS跟踪调试工具

通过对比其实你会发现Tracealyzer的功能要比Percepio View强大很多,如果有条件还是可以付费购买Tracealyzer工具。免费工具,旨在帮助你检查任务执行、调试与RTOS相关的问题,它通过使用调试连接来读取跟踪数据,与传统调试工具(如J-Link)一起工作。Percepio View的使用方法和Percepio Tracealyzer有近似的地方。当然,具体的细节这里就不描述了,感兴趣的同学可以参看官方的文档手册。Tracealyzer是收费工具,而今天讲述的这款工具是免费工具。

2026-03-07 22:10:47 68

转载 阿里最年轻P10突然告别,钱少了还是心累了

Qwen 另一位核心负责人 Binyuan Hui 也走了,Qwen3.5、Qwen VL、Qwen Coder 的核心贡献者 Kaixin Li 也发了告别帖, 目前确认离开的至少 3 到 4 人,全是核心骨干。最近一直在用Qwen和Deepseek 671B做大模型的推理和训练工作,也渐渐对大模型熟悉了起来,觉得搞这些大模型和AI相关的真是天才啊,对圈子里的事情也比较关注。再见,我挚爱的 Qwen。这条消息瞬间在社区炸锅了,毕竟Qwen昨天还在发布新模型:Qwen3.5小模型系列,赢得社区一片较好。

2026-03-05 22:13:32 50

原创 单例模式在嵌入式开发中如鱼得水

在嵌入式系统开发中,我们经常需要管理全局性的资源和状态,这些资源在整个系统中应该只有一个实例。在资源受限的嵌入式环境中,单例模式通过精心设计和优化,能够在保证功能完整性的同时,最小化资源消耗。无论是简单的微控制器应用还是复杂的嵌入式Linux系统,单例模式都是管理全局资源的有效工具。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个访问该实例的全局节点,这种方式可以防止外部直接创建实例,保存唯一的实例,且提供全局访问接口。对硬件资源的集中管理可以避免资源冲突和重复初始化。

2026-03-04 22:11:56 390

转载 分享个嵌入式 C 语言宏的高级技巧

记住一点:能用内联函数就用内联函数,只有宏能解决的场景才上宏。宏虽强大,但别滥用。因为是常量表达式,编译器会在编译期算好,最终二进制里只有文件名,完整路径被优化掉了。一份代码,多种实现,这就是宏的魅力。现代CPU都有分支预测器,一旦预测错误,流水线得全部冲掉,性能瞬间暴跌。编译器会把"unlikely"的分支移到函数末尾,让主路径保持紧凑,提高指令缓存命中率。这就是编译期代码生成,每个树类型都有独立的函数集,类型安全,零运行时开销。不仅简洁,更关键的是将来结构体改了,只需要改宏定义,业务代码一行不用动。

2026-03-02 22:12:23 51

转载 带技术团队了~

管理者和资深工程师要给予新人明确、诚实且有建设性的反馈,比如“你的某些设计想法是不错的,但临界区保护可以做得更精细”。比如,团队花一周时间探索将某个AI框架移植到边缘设备,虽然最终因资源问题未采用,但过程中积累的模型压缩和内存优化技巧,被成功应用到了其他产品中。辩论的价值不仅在于选出最优解(比如提前发现某款新芯片的勘误表缺陷),更在于知识共享——当讨论AES加密算法的实现时,整个团队对安全性的理解都加深了。比如有人提出“单元测试覆盖太耗时”,可以开展为期两周的“试错”,尝试新的测试框架,两周后重新评估。

2026-03-01 22:12:54 53

原创 分层架构,是嵌入式工程师的“职业保险”

双击main.c后,笑容逐渐凝固,一个文件,3000行代码,所有功能像一锅杂烩挤在一起。那个3000行的项目,同事花了一个月时间重构,重构过程很痛苦,优秀的嵌入式工程师,不是写出能跑起来的代码,而是写出能轻松维护、轻松扩展、轻松交接的代码,这话真的没错。项目初期,老板总是说:“先做出来,能跑起来就行。每个离职的工程师都在代码里留下自己的“特色”,后来者不敢大改,只能在原有基础上“打补丁”。很多嵌入式开发者出身硬件,擅长寄存器操作,但对软件工程的理解停留在“能用就行”的阶段。”这个问题会改变你的编码思维。

2026-02-28 22:13:50 954

Ymodem协议C语言实现

XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。

2018-08-11

SPSS-RFM分析建模操作手册与数据

做RFM分析的时候要知道RFM分析的数据格式有两种:   一种是交易数据,也就是每次交易占用一行,关键变量是客户ID、交易日期和交易金额;   另一种是客户数据,就是每个客户占用一行,关键变量是客户ID、交易金额、交易次数和最近交易日期。 为了保证数据的准确性,建议采用交易数据格式进行分析,实际上交易数据是可以整理成为客户数据的,而客户数据是无法还原为交易数据的

2018-08-31

状态机的C语言经典实现

关于状态机,基础的知识点可以自行理解,讲解的很多,这里主要是想写一个有限状态机FSM通用的写法,目的在于更好理解,移植,节省代码阅读与调试时间,体现出编程之美。

2020-12-08

modus通信协议C 语言实现

Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动

2018-08-11

空空如也

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

TA关注的人

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