自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (15)
  • 收藏
  • 关注

原创 NAND FLASH ONFI spec

NAND FLASH ONFI spec

2024-03-19 17:48:54 73

原创 emmc分区

emmc分区

2022-07-17 23:03:23 2500 1

原创 emmc设备模式与状态

emmc状态

2022-07-17 19:56:04 1309

原创 emmc协议 --- emmc概述

emmc协议 --- emmc概述

2022-07-09 22:40:10 1991

原创 存储介质对比

存储介质对比

2022-06-26 17:35:44 282

原创 FTL --DBF、HBF与SDF

FTL --DBF、HBF与SDF

2022-06-09 15:06:56 437

原创 FTL --SLC cache、RD、DR

FTL --SLC cache、RD、DR

2022-06-09 11:49:27 511

原创 FTL --Trim、磨损均衡、掉电恢复、坏块管理

FTL --Trim、磨损均衡、掉电恢复、坏块管理

2022-06-09 10:45:01 541

原创 FTL ---GC

FTL ---GC

2022-06-08 18:42:04 216

原创 FTL介绍 -- FTL映射

FTL介绍 -- FTL映射

2022-06-08 11:48:13 1605 2

原创 NAND Flash概念和特性

NANDFlash 概念&特性

2022-06-07 11:45:41 1039

原创 拆开思维的墙读书笔记 -----第二、三章心态

一、积极的心态什么是积极的心态以全身心的投入到当前在处理的事情当中,从中发现事情的乐趣;为何会没有积极性:1、害怕失败而不敢投入;2、认为获得不到什么而不愿投入;保持积极性的好处:全身心的投入,发现事物的价值和需要被挖掘的东西,从而丰富自己的知识并积累经验;积极性使人更容易坚持下来,最终获得成功;如何保持积极性:1、不惧怕失败;2、不过分关注结果和收获;3、通过实践、复盘,发现自己的收获,发现事物的价值、美好从而提升自己的积极性;4、快乐源于紧张感的释放,

2022-04-10 17:16:46 176

原创 bpf原理与入门

一、bpf架构如上图所示,bpf由六部分构成,以下为其在bpf中的作用:bpf工具:该部分涉及bpf用户态程序、bpf的编译工具,通过bpf编译工具如Clang、LLVM将bpf用户态程序编译成bpf字节码;加载器:可以简单理解为bpf系统调用,将bpf字节码加载到内核;验证器:对bpf程序的合法性进行检查;bpf虚拟机:实现将bpf字节码转化成机器码并运行,使用内核解释器的话需要根据字节码执行对应的机器码,使用JIT可以直接将字节码编码生成机器码;静态跟踪:为内核为bpf程

2022-03-26 17:25:06 4177

原创 C 语言常见考点

一、a++与++a++a:表示先取 a 的内存地址,增加a在内存中的值,然后再把a值作为指令操作数拷贝到寄存器中;a++:表示先取 a 的内存地址,把a值作为指令操作数拷贝到寄存器中,然后增加内存中 a 的值,意味着a的值需要在下一次对a进行寻址才可以体现+1;二、sizeof与strlensizeof:为关键字,以字节形式输出操作数占用的存储空间大小; sizeof指针,不管指针什么类型所占字节宽度与cpu数据总线所占字节数一致; sizeo...

2022-03-17 17:02:47 751

原创 DPDK无锁队列

首先说明下几个关键指针: r->prod.head:接下来开始进行入队的位置; r->prod.tail:已经入队完成的位置; 若r->prod.head > r->prod.tail,说明有core正在执行入队操作,两者相等时说明入队完成; r->cons.head:接下来开始进行出队的位置; r->cons.tail:出队已完成的位置; 若 r->...

2022-03-02 23:15:28 174

原创 自旋锁与互斥锁

一、概念自旋锁:CPU一直检测锁状态尝试进行锁的获取,这种锁等待方式也称旋转或忙等待;互斥锁:当进程或线程获取锁失败时释放CPU,由系统调度转到执行其它进程或线程,这种锁等待方式也可称为阻塞;二、特点和使用场景使用锁的前提条件为系统运行在多处理器CPU下;自旋锁:不释放CPU,适用于希望锁延迟时间短的场景;互斥锁:发生线程或进程调度,存在较大的任务切换上下文开销,适用于等待时间较长的场景。...

2022-03-01 08:39:37 1138

原创 DNS报文格式解析

DNS

2022-02-22 11:58:02 3938

原创 拆开思维里的墙读书笔记 -----第一章 安全感

第一章 安全感物质的价值与成本:物质的获取都需付出一定的成本,比如说时间成本、健康成本、亲情成本、信誉成本,在追求物质时需先度量成本与收益是否合理,是否可以用相同的成本去获取更高的收益;付出与收获:付出相当于是投资,并不能保证一定获得回报,只可能说会得到回报,所以坚持付出不计较回报,总会获得回报;自信与安全感:越有自信则越容易成功,成功越多则越容易拥有安全感;提升安全感:1、小范围冒险: 在失败成本较小的场景下进行冒险,尝试挑战和训练自己的短板,提升自信心;2、远离太容...

2022-01-30 11:51:03 318

原创 盘点指针的坑

1、二级指针,比如说**a,对于其成员a[]也需要申请内存进行指针变量的存放,比较容易出现的情况是函数内部采用*a[10]来存放地址,然后将**a指向的地址赋值给**b通过函数入参返回,由于a[]为函数内部申请的变量,在函数执行完后就释放了,实际上**b没获取到指向的**a的地址,而是访问了野指针;2、指向数据结构体的指针的内部指针成员static int drv_scan_ethdev(void){ struct dirent **eps; int n, i; n

2021-11-25 19:25:47 390

原创 函数入参与参数类型不一致导致的踩内存

1 #include <stdio.h> 2 #include <string.h> 3 4 typedef struct test_s { 5 int a; 6 int b; 7 }test_t; 8 void test_func(test_t *a, int *b) 9 { 10 *b = 2; 11 a->a = ...

2021-11-09 00:09:07 300

原创 程序运行过程

一、程序编译过程gcc HelloWorld.c -E -o HelloWorld.i 预处理:加入头文件,替换宏;gcc HelloWorld.c -S -c HelloWorld.s 编译:包含预处理,将 C 程序转换成汇编程序;gcc HelloWorld.c -c HelloWorld.o 汇编:包含预处理和编译,将汇编程序转换成可链接的二进制程序;gcc HelloWorld.c -o HelloWorld 链接:包含以上所有操作,将可链接的二进制程序和其它别的库链接在一起,.

2021-10-27 21:10:08 425

原创 X86处理器的寄存器与寻址

一、多功能寄存器多功能寄存器二、专用寄存器三、段寄存器

2021-10-16 22:17:41 128

原创 X86处理器与外设的数据读写

1、处理器总线地址总线:传送需要寻址的地址;数据总线:传送cpu与存储器或IO之间读写的数据;控制总线:用于控制读写和访问的是存储器还是IO,大多数计算机系统都有4条控制连线:存储器读控制总线、存储器写控制总线、IO读控制总线、IO写控制总线;2、数据读写 当处理器读取一个存储单元的内容时,通过地址总线向存储器发出一个地址,然后发出存储器读控制信号,最后将从存储器读出的数据通过数据总线送到微处理器,对应存储器写、IO写、IO读的流程也类似;...

2021-10-16 21:49:39 300

原创 linux内核访问文件

一、读写文件读文件是基于页的,内核总是一次传送几个完整的数据页。

2021-10-04 21:52:49 290

原创 记一次回调函数作为参数传入导致的野指针访问

函数名作为函数名为void()类型,同时函数名也作为函数首地址为void*()类型, 对函数名取地址取得的地址也为函数的首地址,其值一样,但类型为void *()类型;由于typedef void (* callback_func_type)();定义的callback_func_type为指针,故void call_callback(callback_func_type * cb)的入参应为**cb,函数名取地址作为参数传入仅为*cb,而函数名赋值给变量callback_func_type ...

2021-09-16 19:13:56 202

原创 页高速缓存

1、address_space对象 属于同一持有者的页缓存描述符的链表,该对象记录在持有者索引节点对象数据结构中。页描述符的mapping字段指向address_space、index字段表示在所有者地址空间中的页偏移量; 页的持有者可能是文件也可能是块设备文件,若为文件则文件的索引节点对象的i_data字段指向address_space对象,索引节点的i_mapping字段指向同一索引节点的i_data字段,address_space的host字段也指向其索引节点;若持有者...

2021-09-11 21:36:58 151

原创 DPDK rte_mbuf结构解析

1、单segment的rte_mbuf2、多segment的rte_mbuf3、间接buffer dpdk使用该方式来进行ip报文的分片,申请直接buf来进行ip头部的存放,申请间接buf直接在rte_mbuf记录分配给其的原mbuf的data地址和长度;在下行发包时将直接buffer和间接buffer进行dma时,ip头部dma的时直接buf上的数据区,间接buffer根据其记录的数据区的物理地址,实际dma的是原mbuf的数据区的地址和分配给其的长度; ...

2021-09-07 21:21:30 1392

原创 块设备驱动

一、文件系统访问块设备的路径系统调用函数调用vfs函数,vfs获取要访问的文件的描述符、偏移量、数据长度等参数;vfs层获取文件的address_mapping结构体,若所请求的磁盘空间在磁盘高速缓存中,则直接通过操作磁盘高速缓存;vfs未获取到文件对应的磁盘缓存,则通过映射层来查找需要访问的磁盘空间地址。文件和磁盘空间都被拆分成块,映射层调用具体文件系统函数,根据文件inode访问文件对应的磁盘索引节点,根据请求的文件块号(逻辑块号,以文件偏移量进行计算)在磁盘索引节点的数据结构中查找对应

2021-08-30 20:36:31 114

原创 Linux设备驱动

一、设备驱动程序模型1、sysfs文件系统 用来体现设备之间的层级关系,设备驱动通过注册kobject、kset、subsystem来创建对应的sysfs目录;kobject:具体的设备对象kset:具有相同层级的设备对象的集合;subsystem:包含多个kset描述设备上下级依赖关系,在kobject创建的sysfs目录下进行体现,在设备的device结构体中,通过parent、children成员进行记录该上下级关系; kset自身通过内嵌的kobj...

2021-08-28 22:53:14 73

原创 Linux IO体系结构--io设备

一、IO设备与CPU的连接CPU通过前端总线(北桥)连接RAM控制器、通过后端总线(南桥)连接外部硬件高速缓存;CPU和IO设备的数据通路属于后端总线,通常称为I/O总线,包括对I/O设备寻址的地址总线和传输数据的数据总线;每个io设备都通过其io控制器提供的io接口上的io端口挂载到io总线连接到cpu,io体系结构如下所示:二、IO端口cpu访问io端口的方法:a、io映射方式:cpu提供的io地址空间来映射io设备的io端口(io地址空间大小为io地址总线可访问的范围,io

2021-08-26 20:14:04 321

原创 dpdk的kni模块实现原理

一、kni虚拟网卡与物理网卡的对比 相同点: kni虚拟网卡驱动与物理网卡驱动一样,需要在linux内核申请虚拟网卡设备的struct net结构体,并注册到网络命名空间,交由linux内核net模块进行网卡资源的操作; 其与网卡驱动一样,kni内核模块需要对该其网卡队列分配用于收发包的mbuf内存,要实现虚拟网卡的收发包方法,已经通过ethtool对虚拟网卡进行管理的接口; 不同点: 与物理网卡驱动不同的是,kni虚...

2021-08-01 18:47:31 620

原创 proc文件系统

/proc/sys/fs/file-max:整个系统所有进程可以打开的文件限制数;/proc/sys/fs/file-nr:单个进程可以打开的文件限制数;/proc/self/pagemap:存放当前进程页表的页帧物理地址信息;/proc/self/map_files/:该目录下存放记录当前进程mmap的线性区的文件,文件名为线性区的起始虚拟地址-结束虚拟地址;/proc/$pid/clear_refs:只写,只用于进程的拥有者,清除用于估算内存使用量的PG_Referenced和AC..

2021-08-01 17:39:40 557

原创 用户空间获取物理地址代码详解

一、背景Linux文件目录中的/proc记录着当前进程的信息,称其为虚拟文件系统。在/proc下有一个链接目录名为self,这意味着哪一个进程打开了它,self中存储的信息就是所链接进程的。self中有一个名为pagemap的文件,专门用来记录所链接进程的物理页号信息。这样通过/proc/pid/pagemap文件,允许一个用户态的进程查看到每个虚拟页映射到的物理页,其内容如下:* /proc/pid/pagemap. This file lets a userspace process fin.

2021-07-21 20:35:22 463

原创 博客或官方网站

http://abcdxyzk.github.io/博客https://download.csdn.net/download/qq_34039018/11041845

2021-07-08 17:03:50 147

原创 虚拟机配置

1、docker配置导入本地镜像:C:\Users\Dell\Downloads>docker load <openEuler-20.03-LTS-x86_64-dvd.iso查看docker镜像:C:\Users\Dell\Downloads>docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEopeneuler-21.03 latest 4367e32711f9 ...

2021-07-08 09:55:21 105

原创 kexec源码分析

一、kexec -l流程:以elf-x86_64为例 kexec-tools程序解析参数后执行my_load: 1、slurp_decompress_file:读取新内核镜像到内存; 2、get_memory_ranges:获取kexec使用的内存地址访问; 3、根据命令-t参数指定的镜像文件类型,执行对应文件类型对象的probe ops进行文件类型的校验,执行elf_x86_64_probe build_elf_exec_inf...

2021-06-30 20:31:11 844

原创 openeuler内核热切换用户态nvwa工具

该工具可作为服务端和客户端运行,服务端和客户端都绑定同一个进程间通信socket,服务端进行服务的注册,监听客户端的请求并执行客户端的请求对应的动作,客户端进行命令的获取并将命令发送到服务端;服务端流程:startServer : ---》loadConfig:解析nvwa-server.yaml、nvwa-restore.yaml中的配置 ---》起goroutine执行runServer: 注册up...

2021-06-30 11:56:55 483

原创 Linux内核vfs

通用文件系统模型对象:1、超级块对象 struct super_block 存放文件系统相关信息,对于基于磁盘的文件系统该对象对应存放在磁盘上的文件系统控制块; --》通过链表进行管理,需要回写对磁盘保证数据一致性2、索引节点对象 struct inode 存放具体文件的信息,基于磁盘的文件系统该对象对应存放在磁盘上的文件控制块,每个索引节点对象对应文件系统中的一个文件;---》通过链表,包括未使用、正在使用、已使用链表进行管理,同时也通过inode_hashtable...

2021-06-28 21:30:57 263

原创 netif_carrier_on/off

通常网络设备会定时地检测设备是否处于可传递状态。当状态发生变化时,会调用netif_carrier_on或者netif_carrier_off来通知内核;从网上设备插拔网线或者另一端的设备关闭或禁止,都会导致连接状态改变;netif_carrier_on—-设备驱动监测到设备传递信号时调用netif_carrier_off—-设备驱动监测到设备丢失信号时调用上述两个状态改变函数均会调用linkwatch_fire_event将事件加入到事件队列进行调度;相关函数的调用关系如下:

2021-06-28 20:49:56 4074

原创 Linux命令

tar: tar zxf 解压gz文件、 tar zcf xxx.tar.gz xxx压缩gz文件 tar jxf 解压bz文件、 tar jcf xxx.tar.bzxxx 压缩gz文件 xz文件:首先 xz -d xxx.tar.xz 生成了xxx.tar文件,然后tar -xvf xxx.tar文件 ...

2021-01-29 17:59:42 110

Vpp与app建立消息通道和资源映射流程解析.pdf

Vpp与app建立消息通道和资源映射流程解析.

2021-09-19

Vpp tcp层代码解析.pdf

vpp tcp 三次握手建连和挥手断连的代码流程解析,含状态机图

2021-09-19

Vpp epoll实现的代码解析.pdf

Vpp epoll实现的代码解析和vpp与上层应用进行报文交互流程解析

2021-09-19

Vpp session层代码详解.pdf

Vpp session层代码解析,包括vpp与其他进程的交互、session的建立和管理

2021-09-19

vpp初始化代码解析.pdf

进行vpp初始化流程的代码解析和vpp框架的梳理,对了解vpp的node、thread、worker有较大帮助

2021-09-19

foxmail邮箱设置.doc

foxmail邮箱添加exchange账号,及对应服务器设置,解决连接服务器异常的问题

2021-07-13

FreeRTOS内核指导手册

FreeRTOS内核指导手册,详细讲解 FreeRTOS内核的基本原理和相关的操作,是学习的必备资料,也是开发的必备资料

2017-09-10

GNU_makefile中文手册.pdf

makefile开发入门到深入的操作指南,对初级入门者简单易懂,对已经入门者也是比较全面的操作手册,希望能对给位起到帮助

2017-09-10

郝斌老师C语言1-10

C语言基础知识介绍

2017-08-03

YS-LD3320芯片资料(模块资料)

YS-LD3320语音芯片资料(模块资料),内含芯片资料和代码实例

2017-04-11

Qt嵌入式开发实战

Qt嵌入式开发实战篇

2016-11-17

Qt嵌入式图形开发(基础篇)

Qt嵌入式图形开发(基础篇)

2016-11-17

linux内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410

linux内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410

2016-11-17

空空如也

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

TA关注的人

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