- 博客(403)
- 资源 (3)
- 收藏
- 关注
原创 【网络分析技巧】如何从报文中分析流量大小和瞬时流量大小
使用 wireshark 图形化分析流量问题,自从学会这个新技能,效率杠杠的,如果你也有遇到要分析流量问题的,可以试试,包你满意。至于更多精彩内容,请关注公众号《机器灵魂注入师》。
2024-06-25 23:26:12
430
原创 ABA分析方法 — 软硬件开发必备的一种分析问题绝佳套路
可能你从很多地方听过这个名词,无论是在软件开发还是硬件领域(比较典型的领域:汽车、消费电子、医疗等行业),ABA验证都是一种快速分析故障的一个方法,第一次听到这个词,当时是不是一脸懵逼,本文就深度带你了解下ABA的分析方法。简要概述就是:怀疑A模块导致系统故障,将B模块替换A模块,故障消失,再将A模块替换回来,故障复现,则说明A模块是导致系统故障的原因其实,ABA分析问题,可能很多人在工作中都或多或少用过这个方法,只是没有这个概念,说明白了就是控制变量和对比验证,没什么高大上的东西。
2024-03-29 11:53:38
4737
2
原创 【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息
和 是 语言中的两个内置宏,你可以理解为两个字符串值,这两个宏用于记录编译时的时间,也就是预编译的时候,编译器以字符串的形式赋予这两个宏当前编译程序系统的时间。所以这两个宏的重要特性就很简单粗暴了在嵌入式软件开发的过程中,尤其是比较复杂的软件系统,是需要不断迭代版本的。由于大系统迭代版本比较多,且涉及到多个模块开发人员的合作,在解bug、对齐各个模块软件状态等情况下,一个独特的版本信息是至关重要的。一般而言,开发人员会采用诸如 的方式去定义版本号,但是这种方式存在一些弊端:不能告知这个版本的具体生成时间
2022-12-04 17:44:39
736
原创 【Keil】编译选项设置 Warning 为 error
众所周知,一般而言,编译程序过程中的warning警告并不会影响可执行文件的生成,只有error才会让可执行文件无法生成。warning是温柔的,只会善意地提醒你的代码可能有些不够完美,error则是严厉地指出你的代码致命之处。其实,warning是一种致命的慢性毒药,不断累积的warning让整个代码工程逐渐千疮百孔,最后不堪一击。所以把每一个warning都当做error对待,才是码神们写出优秀代码的重要一环。为了满足某些强迫症患者或是某些资本家对底下人的不信任的情况,优秀的keil。
2022-11-26 00:35:27
2542
原创 【神器】嘉立创EDA推荐及一些技巧
首先要选一个画板的软件,因为懒得画封装,最后选择了嘉立创EDA,直接用了提供的封装,我只需要布局画线就好了。然后很快就画好了,很喜欢嘉立创一站式的服务,直接单板下单,也自动生成BOM,顺手把元器件都买了。
2022-10-30 11:45:49
9155
3
原创 嘉立创EDA的一些使用技巧
在软件中,在 放置->器件中搜索上述编号,然后选择放置,即可使用。点选几个器件后,可以选择组合,让他们能一直保持相对位置。对齐工具很好用,用来设置两个器件之间的距离很方便。铺铜也很方便,框选后,选择网络后就自动铺铜了。
2022-10-30 11:19:45
13906
原创 【好书推荐】程序是怎样跑起来的
这本书在豆瓣评分中高达 `8.1` 分,算是口碑不错,有时间值得一看。这本书讲的是程序在计算机中如何被执行的,程序运行的本质是什么,主要涉及了一些C语言和硬件底层相关的知识,当然还有很多 CSer 应该掌握的知识,感觉知识点和 `计算机是怎样跑起来的` 这本书的内容重合度比较高,两者算是查漏补缺吧。至于受众,最好是学了点编程语言,但是对计算机底层还有程序在计算机中是如何运行所知甚少的初学者,嵌入式方向的工程师们如果对底层知之甚少也最好浏览一下,补补基础。
2022-09-10 18:43:58
635
2
原创 【神器】MarkDown-沉浸写作的利器
自从用上了 Markdown 这个工具,博主更喜欢去写作了,键盘飞舞,码字跟码代码一样让人心情愉悦。本文只是推荐,并没有提供详细的教程,虽然可以但是没有必要。因为使用起来实在是太简单了,兴许不到半个小时你就用起来游刃有余了,再加上网上教程都烂大街了。当然如果想比较系统地了解和学习Markdown,可以看看《了不起的Markdown》这本书。其实我觉得无论你从事什么行业,如果喜欢写文字,不妨尝试一下 Markdown,绝对不会让你失望。更多精彩内容,请点击 优快云 博客地址:。......
2022-08-07 14:16:45
927
原创 【神器】截图+贴图工具 Snipaste
今天介绍的这款神器,名唤 “**Snipaste**”。毫不夸张地说,这是我使用过的最好的**截图+ 贴图**软件,关键如此好的软件竟然是免费的,五星好评,实在是因为最高只有五星。
2022-07-17 17:09:19
1278
原创 【RT-Thread】使用 Finsh 查看线程状态中的 sp 代表什么意思?
佛说:“一切有为法,如梦幻泡影,如露亦如电,应作如是观。”–《金刚经》详解 sp 含义最近使用 RT-Thread 的 Finsh 输入 list_thread 命令查看线程状态时,突然注意到多个线程在 sp 这一项内容上竟然是相同的,如下所示:thread pri status sp stack size max used left tick error-------- --- ------- ---------- ---------- ------ ----.
2022-04-19 21:58:36
1787
原创 【锻体篇-硬件开发】获取精准的电流信号 -- 电路设计与注意事项
朋友像棉被,感到温暖是因为你自己的温度。概述在嵌入式开发领域,一个设计优秀的硬件就像一副健壮的躯体,配以聪明的大脑(软件),就能够发挥出其强大的威力。对于电流信号,电气特性中的基本元素,我们经常需要对其进行测量,然后根据其值得到一些有用的信息,诸如功率、功耗等等。一般来说,不同的产品的电流形式各有不同,大小不同、形式不同(直流或者交流)等等,根据对应情况也有不同的测量方法。比如我们常在示波器中使用的电流钳采用的就是电磁感应的方式,这种方式是非接触的,比较安全,也不会对电路有太多干扰,但是精度做的.
2022-04-18 08:00:00
1176
原创 【锻体篇-硬件开发】TL431可控精密稳压源的应用和注意事项
基本应用Vref =2.495V稳压基准Vref (范围: 2.5 V ~ 36 V),计算公式如图,由于Iref只有几微安,计算时可忽略不计。注意事项电流IKA的范围是1mA~100mA,所以限流电阻R3(上图标识的)要按此要求计算选取。Vref电压与地之间最好不要增加电容,容易造成稳压不准确。如果增加的话,选取10uF(本人测试可用)或者以上。原因如下(来自TI 的TL431的规格书的A),如果用容量为0.01~8uF范围内的电容器并联在TL431上,很有可能使TL4
2022-04-17 22:26:21
1373
原创 【晓 BUG系列】在 MDK 开发环境中,可以仿真但是烧录运行失败
“人家把他一辈子的经验都写下来,卖19元9毛一本,多划算。”– 包益民最近在使用 MDK 开发单片机程序,使用的 RTOS 操作系统是 RT-Thread, 编译器是 AC6 ,优化等级为 -O0。首先,我的程序是已经勾选了 Reset and Run 这个选项:其次,我遇到的情况更加复杂:只有仿真可以使用,给板子复位都不能运行。但是当我选择 AC5 或者将优化等级提高的时候,程序运行是正常的,这让我有点疑惑,一般来说优化等级越低越不容易出错才对。在网上看了很多文章也没有解决,直到看到了.
2022-04-13 23:02:26
1412
5
原创 【嵌入式常用算法】累加和校验算法(CheckSum算法)
“我这一生都是坚定不移的唯物主义者,唯有你,我希望有来生。”– 周恩来一、概述因为我们所处的环境之中,存在各种或强或弱的信号,这些不速之客总会对电路存在或多或少的干扰,尤其是对于数字信号,很可能会导致传输的数据变得与原来相差甚远。对于很多注重安全的场合,尤其是一些数据可能会影响一些硬件的动作(诸如嵌入式的一些设备、机器人的控制等),错误的数据可能会带来一些比较严重的风险,不进行适当的检测和约束,可能会造成严重的安全事故。如何避免这种意外事故呢?很容易想到两点:纠正错误数据和放弃错误数据。本文所.
2022-04-11 22:51:51
4651
3
原创 【RTOS 进阶修炼】如何设定 RTOS 中的任务栈(线程栈)大小
嗨,你为什么那么努力?因为我想去的地方很远,想买的东西很贵,喜欢的人很优秀!– 来自网络热句,出处未知概述首先说明的是,在 RT-Thread 中,将本文提及的 任务 称之为 线程。在使用 RTOS 开发项目时,一个任务会拥有自己独立的线程栈,用来在任务调度时保存该任务的当前上下文内容,比如当前 CPU 寄存器的值、函数的局部变量等。不同的任务复杂程度不同,需要的栈大小也不同,给多了浪费(毕竟单片机中的 RAM 贵的一匹),给少了更严重,栈溢出造成的后果会让整个系统崩溃。所以,一个合适的栈大小.
2022-04-10 22:51:56
6213
原创 【嵌入式基础小知识】详解单片机中的程序和变量是如何分布的以及一些注意事项
“我固然不是了不起的跑步者,而是处于极为平凡的——毋宁说是凡庸的——水准。然而这个问题根本不重要。我超越了昨天的自己,哪怕只是那么一丁点儿,才更为重要。在长跑中,如果说有什么必须战胜的对手,那就是过去的自己。”– 村上春树《 当我谈跑步时,我谈些什么》一、程序与变量的存储区分布情况下面的截图来自于:RT-Thread 官方文档之《RT-Thread 程序内存分布》:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thre.
2022-04-07 08:00:00
1189
1
原创 【嵌入式基础小知识】简单聊聊 IIC 总线
早上醒来,充分地好好活这一天,最近我只留心这件事。现在我不说谎了,读书也逐渐不是为了虚荣与算计。以前老爱仰赖明天、敷衍当下,现在也不会了。只是一天一天,非常珍惜地过日子。 太宰治 – 《小说灯笼》一、概述IIC-BUS,是 Inter-Integrated Circuit Bus 的缩写,顾名思义,简单、方便地连接各种外设芯片,一种双向2线制同步串行总线。二、基本特征基本特征如下:串行(只有一根数据线,只能一位一位 bit 发送和接收)同步(两边使用共同的时钟线:无论是接收还是发送.
2022-04-01 08:00:00
2085
原创 课程笔记 -- 《ARM微控制器与嵌入式系统》
推荐最近看了清华大学曾鸣老师的嵌入式开发入门课程《ARM微控制器与嵌入式系统》,感觉讲得非常好,将很多概念深入浅出地讲了出来,知识的深度和广度都有,尤其是对底层知识的讲解,很多知识感觉是我之前要通过很多资料才能弄懂的,突然感慨,如果能早点看,是否会更早收获这么多的干货知识呢,对于入门或者打算查漏补缺的各位同行们,建议按自己节奏过一遍课程,一定会有不错的收获的。文中主要涉及到的知识点包括:CPU 基础结构堆栈ARM.
2022-03-27 11:16:30
774
原创 【嵌入式基础小知识】Nand Flash VS Nor Flash
一、概述在嵌入式领域,我们经常会遇到 Flash 这个存储介质,通常是用来存储程序或者数据的。但是如果细究起来,目前常用的 Flash 主要分为 Nand Flash 和 Nor Flash,他们都是嵌入式开发中的常客。面对这两种不同的 Flash 类型,肯定有很多人傻傻分不清吧,本文就来唠嗑唠嗑。二、对比2.1、记住他们的名字很多人老是记不住这两个 flash 的具体名字,其实很简单,既然取了名字,这名....
2022-03-19 18:08:04
4463
4
原创 【C语言内功心法】inline -- 提高函数的运行效率
记得早先少年时大家诚诚恳恳说一句 是一句清早上火车站长街黑暗无行人卖豆浆的小店冒着热气从前的日色变得慢车,马,邮件都慢一生只够爱一个人从前的锁也好看钥匙精美有样子你锁了 人家就懂了木心 – 《从前慢 》一、inline 为何诞生?在使用 C 语言进行编程时,如果有一些函数被频繁调用,就会不断地有函数跳转的操作,随之也会频繁带来入栈、出栈等操作,不经影响效率,还会大量占用栈等空间。如何解决这个问题?我们可以选择用类似的代码段直接实现该函数功能,这样就不存在函数调用带来的各种问.
2022-03-17 23:35:42
3283
2
原创 【超级详细教程】移植 RT-Thread Nano到 GD32F10x系列
准备工作下载 RT-Thread Nano 源码:https://github.com/RT-Thread/rtthread-nano/archive/refs/heads/master.zip。目前的最新版本是 3.15(写于2022-3-1)新建 GD32F10x系列的 裸机Keil工程这篇文章已经讲述的很清楚了,我就不赘述了。当然你随便找一个能成功运行的keil工程也可以了。【超级详细教程】给 GD32F10x 系列建立keil工程移植 RT-Thread实现RT-Thread的基本
2022-03-06 16:18:42
10330
1
原创 【超级详细教程】给 GD32F10x 系列建立keil工程
网友:郑爷爷,什么是朋友?郑渊洁:孩子将玩具当朋友,成人将朋友当玩具。如想获取本文相关资料和最后的工程文件,请关注公众号《嵌入式小散修》,回复 GD32F10x系列建立keil模板工程资料。准备首先,下载 GD32F10x 系列软件包和 keil支持包:http://www.gd32mcu.com/cn/download/7?kw=GD32F1目前 GD32F10x 固件库的最新版本是 2.2.2,keil支持包的版本为 2.02,如下所示:(写于2022-3-2)安装 GD32F10.
2022-03-02 23:58:06
4239
原创 使用 CircuitPython 开发RP2040(树莓派pico)
一、概述基于芯片 RP2040 和CircuitPython 实现的功能,比如usb hid (鼠标、键盘之类)。二、环境配置进入网址:https://circuitpython.org/board/raspberry_pi_pico/,点击下载最新版的 .UF2文件(下载最前面的即可,该文件是circuitpython为raspberry_pi_pico专门配置的)。将下载的文件放入 pico 的虚拟U盘中(按BOOTSEL键不松手,然后按reset键后松手,接着松开BOOTSEL键,电脑即可识
2022-02-28 22:14:10
3061
1
原创 leetcode刷刷题 ---- 76. 最小覆盖子串(C语言版)
无论如何也不能成为平庸和老去的一代。– 微信公众号“MacTalk”题目来自于 leetcode 的[76. 最小覆盖子串](https://leetcode-cn.com/problems/final-value-of-variable-after-performing-operations/)。不愧是困难评级的,确实花了不少时间。先看看具体的题目内容:给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符.
2022-02-08 22:40:06
1052
1
原创 原因分析:同样的测试用例, 在Leecode执行测试用例没错、本地执行没错,提交却出错
成功的反义词不是失败,而是平庸。在刷 leetcode 题目的时候,碰到一道题,测试用例是对的,本地使用自己的IDE也没问题,就是提交出了问题。折腾了好久,提交失败无数次,都怀疑人生了。在 leetcode 的讨论区搜到如下内容:这样就解释的通了:测试用例只有一个,而提交相当于测试很多个用例,这些用例共享所有的静态变量,某个变量使用到的静态变量可能被上一个测试用例修改过了,造成结果出了问题。最后把所有的静态变量干掉就提交成功了。所以在刷 leetcode 的要注意:不要使用静态变量(包括.
2022-02-08 18:23:05
2469
原创 常见 C 语言标准库函数的使用
求取字符串的长度:size_t strlen(const char* str)输入字符串 str,返回其长度(不包括\0),需要包含头文件 string.h。
2022-02-08 16:07:50
973
原创 读书笔记 -- 《计算机是怎样跑起来的》
一、计算机的三大原则计算机的三大原则:计算机是执行输入、运算、输出的机器程序是指令和数据的集合计算机的处理方式有时与人们的思维习惯不同对计算机来说什么都是数字,理解新技术要用计算机思维,当然为了贴近人类,计算机在不断地进化,开发方式也在进步,也会越来越方便,机器的交互方式更趋向于人类的方式。二、计算机的组成(构造一个微型计算机)最重要的三个部分:CPU、内存和 I/O。使用 DMA 往内存里写入数据(此时要隔离 CPU 和内存之间的联系),可以减少 CPU 的使用量,增加系
2022-01-24 23:13:44
2203
原创 【RT-Thread内核详解系列】基于优先级的全抢占式调度算法的实现
The unexamined life is not worth living.未经审视的人生是不值得过的。– 苏格拉底一、原理概述RT-Thread 是一款嵌入式实时操作系统(RTOS),同时也是一款优秀的物联网操作系统,相对于裸机的轮询调度算法,它使用的线程(任务)调度算法是基于优先级的全抢占式多线程调度算法,该算法大大增强了系统的实时响应,大大扩展了系统的应用场景。该调度算法在每次调度任务时,总会选择优先级最高的就绪任务执行,保证优先级高的任务得到最及时的响应。下面,我们来详细讲解该调.
2022-01-09 00:29:03
3396
原创 【画图软件推荐】draw.io
推荐一款强大优秀且免费的画图软件在线:https://app.diagrams.net/windowa 桌面下载:https://github.com/jgraph/drawio-desktop/releases/tag/v16.1.2推荐素描体(设置)效果如下:
2022-01-03 16:58:42
368
原创 《Cortex-M3 权威指南 笔记》
因了命途中的你们,我才没有荒芜了青春。– 莫言一、介绍整个 MCU 只有Cortex-M3 处理器内核(中央处理单元(CPU))和调试器是ARM设计的,而存储器,外设,I/O以及其它功能块是芯片制造厂商添加的。ARM TrustZone® 技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务。(这个M3不一定有)16位的Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度Thumb-2指令集:.
2022-01-03 15:49:47
3448
原创 《Linux 学习笔记》 -- 常用命令行
一些预备知识Linux 命令的提示符Linux 命令的格式比如 这里的 ~ 就是如下路径:重要的单词绝对路径和相对路径按 tab 键,可以补全命令目录/文件操作命令pwd (print working directory):打印当前所在工作路径cdmkdirrmdirlscprm 删除cat 打印文件内容touch 给文件修改时间,如果没有该文件,重新创建新的文件改变文件权限和属性chgrp:改变文件所属用户组c
2022-01-02 20:46:13
990
原创 基于 Wio Terminal 实现的网络天气预报助理
一、项目概述本项目实现如下功能:制作一个自动联网的天气预报仪,在设计界面显示温湿度、天气情况、空气质量以及未来三天内的天气变化。同时显示一个电子时钟信息,方便查看时间。实现该项目的使用的套件是 Seeed 推出的 Wio Terminal,Wio Terminal 使用功基于SAMD51的微控制器,使用Realtek RTL8720DN 提供的无线连接,同时支持蓝牙和WIFI,为物联网项目提供了平台。与Arduino 和 MicroPython 兼容。[外链图片转存失败,源站可能有防盗链机制,
2021-12-25 11:15:22
1022
原创 【NuMaker-M2354试用】MicroSD 模块测评
总之岁月漫长,然而值得等待。村上春树 – 《如果我们的语言是威士忌》一、概述NuMaker-M2354 是新唐针对 M2354KJFAE 微控制器推出的一款开发板,资源相当丰富,以下是新唐官网关于这块板子的简要介绍:NuMaker-M2354 由两部分组成,采用 NuMicro® M2354KJFAE 微控制器的主控板,与 Nu-Link2-Me 除错刻录器。使用者只需使用此开发板就可以开发、刻录并验证应用程序。NuMaker-M2354 可作为安全项目评估、开发、验证以及功耗监控的平台。Nu.
2021-12-19 15:03:34
605
原创 【seeed Wio Terminal】实现在 arduino 中使用 LvGL GUI
我把我整个的灵魂都给你,连同它的怪癖,耍小脾气,忽明忽暗,一千八百种坏毛病。它真讨厌,只有一点好,爱你。– 王小波安装 seeed 的 LVGL arduino 包从 github 中下载 Seeed_Arduino_LvGL repositories,下载地址:Seeed-Studio/Seeed_Arduino_LvGL然后按如下方式安装示例与资料https://wiki.seeedstudio.com/Wio-Terminal-LVGL/LVGL 官方资料LVGL gith.
2021-12-06 22:32:58
673
原创 函数自动初始化的机制 -- __attribute__((section(x)))的使用
一、简要介绍__attribute__ 是 GNU C 实现的编译属性设置机制,也就是通过给函数或者变量声明属性值,以便让编译器能够对要编译的程序进行优化处理。更多详细内容,请看这篇官网文档:《Unixwiz.net - Software Consulting Central -- Using GNU C __attribute__》而对于 section 这个关键字,我们可.
2021-11-27 11:43:15
7539
原创 一种使用 PNP 作为开关管点亮LED的奇怪做法
从今天起,你要去做一个不动声色的大人了,不准情绪化,不准偷偷想念,不准回头看,去过自己另外的生活!你要明白,不是所有的鱼都会生活在同一片海里。终于懂得,纵使无奈不情愿,生命里很多人也只是过客而已。– 村上春树《舞!舞!舞!》以前一直以为 PNP 管作为开关使用,只能作为上管使用,就是如下的使用方法:但是看到有人拿来当做下管使用,如下所示:刚开始以为不是常亮,因为我觉得:管子一旦打开, PNP 管的 C极和E极就会短接,E极的电压就会被拉低到零,就不会满足 E、B极间有压差的情况,之后管子会.
2021-11-21 17:06:32
2933
1
原创 【RT-Thread 软件包】之 “MultiButton”:按键使用利器
我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。为此也要去论是非,否则道理不给你明白,有趣的事也不让你遇到。我开始得太晚了,很可能做不成什么,但我总得申明我的态度。——王小波 《沉默的大多数》一、概述MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。以下是相关的官方资料:RT-Thread multibutton软件包地址.
2021-11-18 00:06:05
917
原创 验证:为RT-Thread内核增加一种新的查找字节最低非0位的算法
人生最苦痛的是梦醒了无路可走。做梦的人是幸福的;倘没有看出可走的路,最要紧的是不要去惊醒他。– 鲁迅 《娜拉走后怎么样》概述该篇文章来源于:《验证:为RT-Thread内核增加一种新的查找字节最低非0位的算法》在 RT-Thread 的内核代码中,有一种查找最低非零位的算法,主要采用查表的方法,通过时间换空间的方式,为系统寻找线程的最高优先级提供了一种高效的方法。通过查看内核代码里面的 kservice.c 文件,我们可以看到如下源代码:const rt_uint8_t __lowest_.
2021-11-07 17:47:06
316
人工智能基础(高中版).pdf
2019-07-06
四旋翼STM32F411CCU6的最小系统板设计
2018-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人