自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Megahertz66的博客

MHZ 的技术分享小窝

  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 滤波算法[2]----理解离散贝叶斯滤波器(上)

本篇博客可以让你快速的了解离散贝叶斯算法的本质和其实现逻辑。

2024-06-04 22:20:41 664

原创 g-h Filter 详细讲解

本文能带你很好的了解 g-h filter和其内部的原理,让你更好的设计自己的滤波器。

2024-05-26 20:51:25 682

原创 Cmake练习2 error: ‘mysqrt‘ was not declared in this scope

cmake practical2 step2 error: ‘mysqrt’ was not declared in this scope在 cmake 官方练习2中出现了 error: 'mysqrt' was not declared in this scope错误,我对照了步骤看了好几遍,觉得哪里都没有和教程上有出入。但是还是出现了报错。

2024-04-26 23:37:15 309

原创 w64devkit 下载,不需要下载MinGW了

在 linux 上大家常用的编译工具就是 gcc,这些工具 windows 上也是有的,常用的就是 MingGW。 MingGW 是 Minimalist GNU Windows 也就是 “Windows上的极简 GNU” 的意思。而这里我推荐使用 w64devkit 。这里后面我为大家准备了 3 种下载方式,总有一个适合你,嘿嘿!!

2024-04-26 21:54:26 753

原创 Cmake入门学习指南

cmake 的官方的教程,里面的内容很简单,并且有简单的习题帮助你理解 cmake。

2024-04-25 23:17:17 344

原创 cmake practice no such file or directory

cmake 出现 no such file or directory 时的解决思路。

2024-04-25 23:15:30 637

原创 LwIP代码收发报流程分析(2)数据包的接收

我们一起分析了 LwIP 是如何将 ICMP echo 也就是 Ping 报文发送出去的过程,在这篇博客中我们将一起分析 LwIP 是如何接收网络数据包的,为后面我们将其移植到 CH32 MCU 上做做预习。这次还是选 LwIP 官方代码中的 ping 例程作为代码分析的对象,代码位置在文件中。由于本博客主要是分析 LwIP 的接收数据包流程的,相关的代码也只选取围绕这一主旨的,其他的一些方面的细节,只要在流程清晰的情况下再找到代码自己看看一般就能明白。或者大家也可以论可以留言~ 咱们一起讨论、学习。

2024-04-20 21:08:55 661 2

原创 LwIP代码收发报流程分析(1)数据包的发送

到此我们已经梳理出 LwIP 的发包函数, 整理的流程就是首先根据你的网络数据的类型和协议建立socket,并且对其进行填充形成完整的报文。最后再调用网卡驱动中的函数对组好的数据包进行发送。

2024-04-15 23:22:19 961 1

翻译 g-h Filter 详细讲解(上) [翻译]

直观地介绍g-h滤波器,也称为α-β滤波器,它是包括卡尔曼滤波器在内的一系列滤波器。一旦你理解了本章,你就会理解卡尔曼滤波器背后的概念。

2024-04-10 22:45:47 75

原创 一本想教会你滤波算法书

这本书的名字叫做 《Kalman Filters and Random Signals in Python》 原著的作者 Roger Labbe 是一名在航天航空领域工作近 20 年的资深软件工程师。从今天开始,这个博客系列会翻译一本 500 页左右的滤波算法的书,该书的原文连接我会放到后面的文中。所以我发翻译也是合乎规则的。

2024-04-10 21:01:39 500

原创 WCH恒沁单片机-CH32V307学习记录2----FreeRTOS移植

前面用了 5 篇博客详细介绍了 FreeRTOS 在 ARM Cortex-M3 MCU 上是如何运行的。现在我直接用之前的 RISC-V MCU 开发板子(CH32V307VCT6)再次对 FreeRTOS 进行移植,其实也不能说是从头到尾的移植,因为在官方的软件包中已经包含了对 FreeRTOS 移植的例子,但是这个软件包中很多通用的文件都是公用的,这样我们在实际使用的时候就不容易把某一个部分的功能处理的拉出来作为单独项目,这篇博客我就是打算帮助大家更快的解决这个问题。

2024-04-06 22:18:33 1553 1

原创 FreeRTOS从代码层面进行原理分析(5 对实时性的探究)

本篇博客测试了在 STM32F103RCT6 上 FreeRTOS 切换任务所需的时间。并且距离切换速度的高效。

2024-03-30 23:49:56 701

原创 FreeRTOS从代码层面进行原理分析(4 移植)

通过之前博客对 FreeRTOS 的学习。然我们能够直接很简单的把FreeRTOS移植到我们自己的板子上。

2024-03-29 22:26:26 653

原创 使用 OpenOCD 来调试 STM32

本文介绍了 STM32 在 Windows 上进行编译以及调试。

2024-03-28 22:22:30 1315

原创 在Windows上交叉编译STM32(环境搭建)

本文详细的讲解了如何在Windows上交叉编译STM32的环境配置。

2024-03-26 23:52:25 676

原创 FreeRTOS从代码层面进行原理分析(3 任务的切换)

通过本文可以很好的了解 freertos 任务的切换过程。让你能更好的使用 freertos。

2024-03-25 23:40:29 1082

原创 FreeRTOS从代码层面进行原理分析(2 任务的启动)

通过本文可以很好的了解 FreeRTOS 是如何对创建好的任务进行调用的。

2024-03-25 22:49:13 767

原创 FreeRTOS从代码层面进行原理分析(1 任务的建立)

在这篇文章中。我们一起通过代码分析了FreeRTOS在创建任务的时候都做了什么具体的工作。

2024-03-24 20:30:00 1001

原创 STM32中MicroLIB的关闭为什么会导致卡死----解析

更好的理解 MicroLIB 的开启和关闭究竟是怎么导致单片机卡死的。

2024-03-16 23:50:27 1062

原创 WCH恒沁单片机-CH32V307学习记录1----启动代码分析

启动流程的代码看起来和 RAM 系列的没啥区别,内部逻辑都是一样的。

2024-03-12 21:45:35 985

原创 PDF合并工具

为了帮助同事做报销,就临时用 Python 使用 PDF 库打包了一个PDF文件合并工具,这个虽然对于很多程序员来说都是很简单的事情,但是对于一些不是很了解计算机技术的人确实是一个很尴尬的功能。很多 PDF 编辑软件的这个合并功能都要求是高级版本才能进行操作。下面话不多说,给大家讲解一下软件的用法。

2024-02-18 14:32:54 621

原创 为什么RISC-V的指令结构如此的奇怪

RISC-V B-type 指令为何立即数如此奇怪,原来其原因是为了减少硬件资源。更深一步为了减少芯片面积,牛!

2024-01-23 21:54:58 518 2

原创 卡诺图一学就会

简单的讲解了卡诺图的使用方式。

2023-10-08 23:50:27 1324

原创 iptables 内部调用过程

iptables 调用过程intiptables_main(int argc, char *argv[]){ // 解析用户输入的 iptables 命令,配置好 handle 参数 ret = do_command4(argc, argv, &table, &handle, false); if (ret) { ret = iptc_commit(handle); iptc_free(handle); }iptc_commit 函数实际的实现是使用 TC_COMM

2023-09-05 21:06:31 273

原创 HDLBits 练习 Always if2 并给出逻辑简化过程

在前面的练习中我们使用了简单的逻辑门与一些逻辑门的组合。这些电路都可以作为组合电路的例子。组合意味着这个电路的输出只是输入的函数(数学意义上的)。数学上的函数就意味着当你给定一个输入的时候对应的只会有一个输出。因此有一种方式可以清晰的列出所有组合逻辑的所有可能的输入和与之对应的输出。这中方式就是真值表。对于有N个输入的布尔函数,有2N种可能的输入组合。真值表的每一行代表一种输入的组合,所以真值表一般都有 2^N 列。输出的那一列表示每一种可能的输入。上面的真值表三个输入对应一个输出。

2023-09-05 21:02:35 218

原创 HDLBits 练习 Always if2

当设计一的电路的时候,你首先应该从电路的角度去思考。你必须不能先写代码,然后就期待它能成为一个真正意义上的电路。语法正确的代码不意味着就一定可以变成合理的电路(组合逻辑 + 触发器)。一般的理由是 “当你没有具体指定一些情况的时候会发生什么?Verilog 的答案是:“保持输出不变”。这种“保持输出不变” 的行为意味着当前的状态需要保存下来,这就会产生锁存器。组合逻辑(例如:逻辑门)是不能记录任何状态的。注意警告“(10240): … inferring latch(es)”信息。

2023-08-31 23:19:00 195

原创 Jellyfin 设置N卡独显加速

独立卡加速可有有效降低解码时的 CPU 负载,而且比 CPU 解码要快~

2023-08-19 11:42:01 3091

原创 小米电视 “无法访问,请检查网络链接是否正常“

小米电视 "无法访问,请检查网络链接是否正常"

2022-09-25 22:38:58 2653 1

原创 Boot&Knernel 中的 Fixed-Link 代码说明

通过此文可以了解到如何配置 linux 中的 fixed-link。

2022-05-23 23:07:10 1291 1

原创 虚拟网络设备veth是如何工作的

veth源码分析环境linux kernel 4.9.37两个网络命名空间的数据是需要通过 veth 才可以进行交互的。前面分析了 网络命名空间,下面看看 veth 究竟是通过什么实现的传输。代码分析veth 实际的代码在 linux-4.9.37\drivers\net\veth.c 中。veth 是注册到 rtnetlink 中,并借助其进行交互。其各种操作都包含在 veth_link_ops 结构中。static __init int veth_init(void){ return

2021-07-29 16:01:34 1044

原创 从源码上分析网络命名空间如何建立

network-namespace环境linux kernel-4.9.37介绍Network namespaces网络命名空间可以理解为是完全独立丝毫没有相互影响的另一套协议栈。疑问Q1:网络命名空间之间为什么不能通讯?A1:因为没有网卡设备。真实的网卡设备一般在 根命名空间使用。需要是由 veth(virtual Ethernet) 充当网络命名空间的网卡设备。Q2:网络命名空间之间的网络通讯流程是什么样的?A1:具体就流程就是 veth 的工作流程,会将数据包直接塞到接收侧的 rx

2021-07-29 15:59:43 599

原创 ubuntu 18.04 升级、切换内核

ubuntu 18.04 切换内核我的 PC 安装了 ubuntu 18.04 ,最近想升级一下内核,可是按照网上的方法怎么也不成功。感觉自己修改的 grub 文件一点效果都没有。最后浪费了很多时间拼凑出了一个好用的办法,记录一下。kernel.ubuntu.com 下载想升级的内核,这里要下载三个前两个 header 和一个image-generic上述下载好的文件放到一个文件夹中,执行 sudo dpkg --install *.debrebootsudo dpkg --

2021-06-28 14:44:31 1829

原创 TC源码分析二,内核中流控代码的位置

tc源码分析二,内核中流控代码的位置使用的内核版本Linux 4.3问题探索我们要研究源码除了好奇代码的书写方式之外最关心的还是代码的实际逻辑,这样就能便于我们理解内部究竟发生了什么。在研究Linux内核中关于流控的代码之前我有两个疑惑:流控的代码是如何与网卡发生关联的?流控相关代码是何时被调用的?问题分析1.关联网卡设备首先要知道的是在内核中所有的流控相关的操作都在 F:\Hert\Studycode\linux-4.9.37\net\sched 目录下。 流控子系统也是在该目录下

2021-06-21 20:49:24 1614

原创 TC源码分析一,tc命令

TCTraffic ControlTC 框架可以理解为一个控发不控收的框架,在 ingress 的位置只能做简单的控制,且不能有其他子项。如想对 ingress 进行控制请参考 IMQ 以及 ifb。流控方式SHAPING: 限流,平滑激增流量使得网络更加稳定。只适用于出口的流量。SCHEDULING: 调度,管理类数据包传输,按优先级分配带宽。只适用于出口流量。POLICING : 策略,用于入口流量。DROPPING : 丢弃,超过带宽的流量,可以用于入口和

2021-06-18 17:08:56 2005

原创 Creeping Featurism 是什么意思

Creeping Featurism([ˈkriːpɪŋ] [ˈfiːtʃəizrm ) 蔓延特征是指在系统在随着时间的推移变得更加复杂,更多的功能被添加。这种趋势并不是当时实际设计系统的原始计划。 Creeping featurism 长被用在软硬件的开发设计中。一般软件或硬件开发,这些增加的功能通常以稳定性,简单性或错误的重大设计目标为代价。 Creeping featurism 也被称为 Creeping featuritis。...

2021-06-15 17:18:06 201

原创 Linux系统挂载硬盘,不好用把电脑吃了

食用前注意以下步骤全新硬盘步骤 1-2-3-4-6-7-8用过的硬盘步骤 5-1-2-3-4-6-7-81查看块设备lsblk -f新进来的硬盘没有文件格式。所以 FSTYPE 项应该是空白的。2查看文件系统df -hl这样可以检查硬盘是否正常挂载到了目录。3查看分区信息sudo fdisk -l在里面找到自己新添加的硬盘。可以从类型,容量等信息以及结合 1 中信息进行确认。4新建分区sudo fdisk /dev/sdb按 m 进入帮助模式n 添加分区p 添加主分区

2021-06-15 17:04:08 166

原创 Git常用命令-备忘

便于理解的图几个关于GIT的问题问:如果我和别人都克隆同一个项目别人提交我也提交,这会是怎么样的一个场景?答:只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,push命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。别名这个功能可以有效的让你省打几个字来实现命令,但是估计用久了原本的命令就忘记了吧,汗!$ git config --global alia

2021-06-15 16:57:33 188

原创 使用select注意事项

使用select注意事项,监测的文件描述符一定要处理![待更新-] 为何会产生这种现象!今天在实际使用timerfd 以及select过程中,发现FD_ISSET并不能有效检测文件描述符。实际现象就是一直可以进这个if。后来终于发现,如果你不使用read等将文件描述符的内容进行读出,那么select函数会认为这个描述符始终处于置位状态,进而导致了这个现象。下面的代码,可以实际的测试一下,重点观察注释掉read前后的差异。如果注掉read就会无限进入判断。注意,初始超时时间,是指第一次到期的时间#

2021-06-06 23:59:37 432

原创 socket 源码分析

socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));arch/sparc/kernel/sys32.S +43 行 /* Each entry is exactly 32 bytes. */do_sys_socket: /* sys_socket(int, int, int) */1: ldswa [%o1 + 0x0] %asi, %o0 sethi %hi(sys_socket), %g12: ldswa [%o1 + 0x8] %asi, %o

2021-06-06 23:54:30 4295 1

原创 解决 Operation not permitted

ping 出现权限问题现象ping XXXXXXXping: sendto: Operation not permitted解决清理掉全部的 iptable 再重新添加# 清理 iptable 慎重! ip6table -Fip6table -Xip6tables -P INPUT ACCEPTip6tables -P OUTPUT ACCEPTip6tables -P FORWARD ACCEPT...

2020-12-17 11:25:42 2232

w64devkit 可用于替换 MinGW, w64devkit 的一大特点是其小巧且自包含很广

w64devkit 可用于替换 MinGW, w64devkit 的一大特点是其小巧且自包含很广。尽管体积小巧,但w64devkit并不牺牲兼容性和性能。它基于最新的GCC版本,并提供对C11、C++17等现代标准的支持。此外,由于使用Glibc作为C运行时库,它能够生成与大多数Linux系统兼容的二进制文件。w64devkit 是 Windows 平台下使用的一个 C/C++ 编译环境。它完全不需要安装,完全离线运行。核心亮点是静态链接所有运行时组件,运行时被优化为尺寸最小化。

2024-04-26

OpenOCD X64 版本

避免从 Github上下载慢的囧境。 下载后无需安装,解压后将其 bin 目录添加到 PC 的 PATH 路径就可以了。 然后在 cmd 下测试 openocd --version ,观察输出确认是否安装成功。

2024-03-28

PDF合成工具,将多个PDF进行简单合并

PDF合成工具,将多个PDF进行简单合并。使用 python 进行打包而成,自己独立编写,安全可靠。适合 X86、X64 的电脑。用起来非常的简单。

2024-02-18

python进制转换工具

二、八、十六进制转换工具,使用起来十分方便,使用 pyw 开发,跨平台可用。需要本地具有 python 环境。

2022-07-25

registerSetbit.pyw

自己写的标志位计算器,快速计算出对应的16、10、8进制。使用python原生GUI库,操作方便,免安装

2020-08-19

空空如也

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

TA关注的人

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