- 博客(59)
- 资源 (2)
- 收藏
- 关注
原创 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 356
原创 w64devkit 下载,不需要下载MinGW了
在 linux 上大家常用的编译工具就是 gcc,这些工具 windows 上也是有的,常用的就是 MingGW。 MingGW 是 Minimalist GNU Windows 也就是 “Windows上的极简 GNU” 的意思。而这里我推荐使用 w64devkit 。这里后面我为大家准备了 3 种下载方式,总有一个适合你,嘿嘿!!
2024-04-26 21:54:26 1058
原创 cmake practice no such file or directory
cmake 出现 no such file or directory 时的解决思路。
2024-04-25 23:15:30 931
原创 LwIP代码收发报流程分析(2)数据包的接收
我们一起分析了 LwIP 是如何将 ICMP echo 也就是 Ping 报文发送出去的过程,在这篇博客中我们将一起分析 LwIP 是如何接收网络数据包的,为后面我们将其移植到 CH32 MCU 上做做预习。这次还是选 LwIP 官方代码中的 ping 例程作为代码分析的对象,代码位置在文件中。由于本博客主要是分析 LwIP 的接收数据包流程的,相关的代码也只选取围绕这一主旨的,其他的一些方面的细节,只要在流程清晰的情况下再找到代码自己看看一般就能明白。或者大家也可以论可以留言~ 咱们一起讨论、学习。
2024-04-20 21:08:55 780 2
原创 LwIP代码收发报流程分析(1)数据包的发送
到此我们已经梳理出 LwIP 的发包函数, 整理的流程就是首先根据你的网络数据的类型和协议建立socket,并且对其进行填充形成完整的报文。最后再调用网卡驱动中的函数对组好的数据包进行发送。
2024-04-15 23:22:19 1205 1
翻译 g-h Filter 详细讲解(上) [翻译]
直观地介绍g-h滤波器,也称为α-β滤波器,它是包括卡尔曼滤波器在内的一系列滤波器。一旦你理解了本章,你就会理解卡尔曼滤波器背后的概念。
2024-04-10 22:45:47 113
原创 一本想教会你滤波算法书
这本书的名字叫做 《Kalman Filters and Random Signals in Python》 原著的作者 Roger Labbe 是一名在航天航空领域工作近 20 年的资深软件工程师。从今天开始,这个博客系列会翻译一本 500 页左右的滤波算法的书,该书的原文连接我会放到后面的文中。所以我发翻译也是合乎规则的。
2024-04-10 21:01:39 555
原创 WCH恒沁单片机-CH32V307学习记录2----FreeRTOS移植
前面用了 5 篇博客详细介绍了 FreeRTOS 在 ARM Cortex-M3 MCU 上是如何运行的。现在我直接用之前的 RISC-V MCU 开发板子(CH32V307VCT6)再次对 FreeRTOS 进行移植,其实也不能说是从头到尾的移植,因为在官方的软件包中已经包含了对 FreeRTOS 移植的例子,但是这个软件包中很多通用的文件都是公用的,这样我们在实际使用的时候就不容易把某一个部分的功能处理的拉出来作为单独项目,这篇博客我就是打算帮助大家更快的解决这个问题。
2024-04-06 22:18:33 1694 1
原创 FreeRTOS从代码层面进行原理分析(5 对实时性的探究)
本篇博客测试了在 STM32F103RCT6 上 FreeRTOS 切换任务所需的时间。并且距离切换速度的高效。
2024-03-30 23:49:56 798
原创 FreeRTOS从代码层面进行原理分析(4 移植)
通过之前博客对 FreeRTOS 的学习。然我们能够直接很简单的把FreeRTOS移植到我们自己的板子上。
2024-03-29 22:26:26 674
原创 FreeRTOS从代码层面进行原理分析(3 任务的切换)
通过本文可以很好的了解 freertos 任务的切换过程。让你能更好的使用 freertos。
2024-03-25 23:40:29 1108
原创 FreeRTOS从代码层面进行原理分析(1 任务的建立)
在这篇文章中。我们一起通过代码分析了FreeRTOS在创建任务的时候都做了什么具体的工作。
2024-03-24 20:30:00 1060
原创 PDF合并工具
为了帮助同事做报销,就临时用 Python 使用 PDF 库打包了一个PDF文件合并工具,这个虽然对于很多程序员来说都是很简单的事情,但是对于一些不是很了解计算机技术的人确实是一个很尴尬的功能。很多 PDF 编辑软件的这个合并功能都要求是高级版本才能进行操作。下面话不多说,给大家讲解一下软件的用法。
2024-02-18 14:32:54 640
原创 为什么RISC-V的指令结构如此的奇怪
RISC-V B-type 指令为何立即数如此奇怪,原来其原因是为了减少硬件资源。更深一步为了减少芯片面积,牛!
2024-01-23 21:54:58 571 2
原创 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 293
原创 HDLBits 练习 Always if2 并给出逻辑简化过程
在前面的练习中我们使用了简单的逻辑门与一些逻辑门的组合。这些电路都可以作为组合电路的例子。组合意味着这个电路的输出只是输入的函数(数学意义上的)。数学上的函数就意味着当你给定一个输入的时候对应的只会有一个输出。因此有一种方式可以清晰的列出所有组合逻辑的所有可能的输入和与之对应的输出。这中方式就是真值表。对于有N个输入的布尔函数,有2N种可能的输入组合。真值表的每一行代表一种输入的组合,所以真值表一般都有 2^N 列。输出的那一列表示每一种可能的输入。上面的真值表三个输入对应一个输出。
2023-09-05 21:02:35 228
原创 HDLBits 练习 Always if2
当设计一的电路的时候,你首先应该从电路的角度去思考。你必须不能先写代码,然后就期待它能成为一个真正意义上的电路。语法正确的代码不意味着就一定可以变成合理的电路(组合逻辑 + 触发器)。一般的理由是 “当你没有具体指定一些情况的时候会发生什么?Verilog 的答案是:“保持输出不变”。这种“保持输出不变” 的行为意味着当前的状态需要保存下来,这就会产生锁存器。组合逻辑(例如:逻辑门)是不能记录任何状态的。注意警告“(10240): … inferring latch(es)”信息。
2023-08-31 23:19:00 207
原创 虚拟网络设备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 1080
原创 从源码上分析网络命名空间如何建立
network-namespace环境linux kernel-4.9.37介绍Network namespaces网络命名空间可以理解为是完全独立丝毫没有相互影响的另一套协议栈。疑问Q1:网络命名空间之间为什么不能通讯?A1:因为没有网卡设备。真实的网卡设备一般在 根命名空间使用。需要是由 veth(virtual Ethernet) 充当网络命名空间的网卡设备。Q2:网络命名空间之间的网络通讯流程是什么样的?A1:具体就流程就是 veth 的工作流程,会将数据包直接塞到接收侧的 rx
2021-07-29 15:59:43 624
原创 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 1858
原创 TC源码分析二,内核中流控代码的位置
tc源码分析二,内核中流控代码的位置使用的内核版本Linux 4.3问题探索我们要研究源码除了好奇代码的书写方式之外最关心的还是代码的实际逻辑,这样就能便于我们理解内部究竟发生了什么。在研究Linux内核中关于流控的代码之前我有两个疑惑:流控的代码是如何与网卡发生关联的?流控相关代码是何时被调用的?问题分析1.关联网卡设备首先要知道的是在内核中所有的流控相关的操作都在 F:\Hert\Studycode\linux-4.9.37\net\sched 目录下。 流控子系统也是在该目录下
2021-06-21 20:49:24 1673
原创 TC源码分析一,tc命令
TCTraffic ControlTC 框架可以理解为一个控发不控收的框架,在 ingress 的位置只能做简单的控制,且不能有其他子项。如想对 ingress 进行控制请参考 IMQ 以及 ifb。流控方式SHAPING: 限流,平滑激增流量使得网络更加稳定。只适用于出口的流量。SCHEDULING: 调度,管理类数据包传输,按优先级分配带宽。只适用于出口流量。POLICING : 策略,用于入口流量。DROPPING : 丢弃,超过带宽的流量,可以用于入口和
2021-06-18 17:08:56 2060
原创 Creeping Featurism 是什么意思
Creeping Featurism([ˈkriːpɪŋ] [ˈfiːtʃəizrm ) 蔓延特征是指在系统在随着时间的推移变得更加复杂,更多的功能被添加。这种趋势并不是当时实际设计系统的原始计划。 Creeping featurism 长被用在软硬件的开发设计中。一般软件或硬件开发,这些增加的功能通常以稳定性,简单性或错误的重大设计目标为代价。 Creeping featurism 也被称为 Creeping featuritis。...
2021-06-15 17:18:06 214
原创 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 180
原创 Git常用命令-备忘
便于理解的图几个关于GIT的问题问:如果我和别人都克隆同一个项目别人提交我也提交,这会是怎么样的一个场景?答:只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,push命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。别名这个功能可以有效的让你省打几个字来实现命令,但是估计用久了原本的命令就忘记了吧,汗!$ git config --global alia
2021-06-15 16:57:33 208
原创 使用select注意事项
使用select注意事项,监测的文件描述符一定要处理![待更新-] 为何会产生这种现象!今天在实际使用timerfd 以及select过程中,发现FD_ISSET并不能有效检测文件描述符。实际现象就是一直可以进这个if。后来终于发现,如果你不使用read等将文件描述符的内容进行读出,那么select函数会认为这个描述符始终处于置位状态,进而导致了这个现象。下面的代码,可以实际的测试一下,重点观察注释掉read前后的差异。如果注掉read就会无限进入判断。注意,初始超时时间,是指第一次到期的时间#
2021-06-06 23:59:37 437
原创 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 4346 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 2312
w64devkit 可用于替换 MinGW, w64devkit 的一大特点是其小巧且自包含很广
2024-04-26
OpenOCD X64 版本
2024-03-28
PDF合成工具,将多个PDF进行简单合并
2024-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人