- 博客(209)
- 资源 (5)
- 收藏
- 关注
原创 【virtiofs】ubuntu24.04+qemu7.0调试virtiofs
编译时会出现找不到.stamp_downloaded,通过在对应目录下创建.stamp_downloaded文件解决。编译后在build/tools/virtiofsd/virtiofsd。挂载成功后guest os与host os共享$SHARE_DIR目录。dax-2022-05-17-qemu7.0会自带virtiofsd。从 QEMU 源码生成适用于 virt 机器的 DTB。或者使用qemu自带的virtiofsd。先启动virtiofsd后启动qemu。打开.config配置。
2025-02-15 15:23:16
399
转载 【test】Ubuntu24.04下载并且编译Linux内核源码
2>&1 会将 STDOUT 和 STDIN 重定向到相同的文件描述符,并通过管道传输给 tee 命令,这会将输出存储在一个名为 log 的文件,即将终端打印出的内容存储到日志中便于查看。为了使用编译的内核,需要编辑grub2选项。vim Makefile,修改“EXTRAVERSION =<YOUR_EXTRAVERSION>”,这里我设定的是`EXTRAVERSION =OSPRACTICE。默认情况下,计算机并不包含这个证书。因此需要关闭启用模块签名的选项,否则在接下来的内核编译中会报错。
2025-02-14 00:25:18
114
原创 【test】fio测试 linux存储性能测试
FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。也就是说FIO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包含文件系统:如针对网络文件系统 NFS 的IO测试。解压后执行sudo ./configure。
2025-02-13 17:26:52
301
原创 【linux】NUMA节点
NUMA(Non-Uniform Memory Access,非一致性内存访问)是一种用于多处理器计算机系统的内存设计。在NUMA架构中,系统中的物理内存被划分成多个节点(NUMA节点),每个节点与一个或多个处理器紧密关联。它允许处理器访问其本地内存的速度要比访问非本地内存(内存位于另一个处理器或者共享I/O控制器上)更快。
2025-02-13 09:47:29
190
原创 【Linux】smp_mb__after_atomic
是 Linux 内核中用于确保原子操作后内存操作顺序性的宏。它通过插入一个全内存屏障,防止编译器和CPU对指令进行重排序,从而确保多线程环境下的正确性和一致性。理解并正确使用内存屏障对于编写高效、可靠的并发程序至关重要。如果你正在开发内核模块或涉及多线程编程,了解这些机制将有助于避免潜在的并发问题。
2025-02-12 22:06:20
550
原创 【test】deepseek 本地部署
4.打开google chrom扩展商店下载page assist。2.使用cmd下载deepseek-r1。1.下载ollama,默认next。选择deepseek-r1。
2025-02-11 13:26:59
199
原创 【rk3568】ubuntu24编译rk3568 buildroot报错 `fwriter_buffer‘; mksquashfs.o:(.bss+0x200180):
复制下面内容到 **buildroot/package/squashfs/0001-multiple-definition.patch **中。清空编译缓存,重新编译。然后就可以编译成功了。
2025-02-10 00:38:12
249
原创 【rk3568】rk3568 linux sdk buildroot error “Failed to build miniperl. Please run make minitest“
【代码】【rk3568】rk3568 linux sdk buildroot error “Failed to build miniperl. Please run make minitest“
2025-02-09 19:08:41
381
原创 【test】uthash替换ghashtable
参考:https://github.com/troydhanson/uthash/blob/master/src/uthash.hhttps://troydhanson.github.io/uthash/https://troydhanson.github.io/uthash/userguide.html#_structure_keysuthash.h
2025-01-20 13:52:32
350
原创 【test】: error: redundant redeclaration of ‘strlcpy’ [-Werror=redundant-decls] 17 | extern size_t str
【代码】【test】: error: redundant redeclaration of ‘strlcpy’ [-Werror=redundant-decls] 17 | extern size_t str。
2025-01-11 14:25:58
189
原创 【test】Ubuntu 编译时出现错误cc1: error: ‘-fcf-protection’ is not compatible with this target
ubuntu 20.04编译时报cc1: error: ‘-fcf-protection’ is not compatible with this target错误,
2025-01-10 03:18:01
207
原创 【test】重装系统-window必须安装在格式化为ntfs的分区
记录在一次安装win10系统时提示:windows必须安装在格式化为ntfs的分区。1、在界面按住shift +F10 进入命令提示符输入diskpart。3、select disk 0 选择需要格式化的磁盘 我这里是0。5、convert ntfs 转化为ntfs格式。2、list disk 查看当前磁盘情况。在网上查资料,并找到解决办法,现做记录。使用管理员权限进入diskpart程序。4、clean 清除所有磁盘分区。
2025-01-09 00:49:58
242
原创 【test】mount系统调用流程
vsnprintf写入超过buf_size的时候会截断,并且第buf_size -1处赋值’\0’1、system_call_table系统调用表找到对应元素。
2025-01-06 11:11:09
192
转载 【test】Linux tee命令教程:如何使用tee命令进行输入输出重定向(附案例详解和注意事项)
tee命令在Linux中用于从标准输入读取数据,并将其写入到标准输出和一个或多个文件中。tee命令通常与其他命令一起通过管道使用。
2024-12-26 17:48:07
102
原创 【test】git clone lfs问题记录
Git Large File Storage (LFS) 是 Git 的一个扩展,它替代 Git 来管理大型文件,比如音频、视频、图形文件和其他二进制大对象(blobs)。Git LFS 通过将这些大文件的指针存储在本地仓库中,并把实际文件存储在一个单独的服务器上来工作,这个服务器通常是托管代码库的地方,如 GitHub、GitLab 或 Bitbucket。
2024-12-24 09:54:51
612
原创 【test linux】创建一个ext4类型的文件系统
if=/dev/zero:指定输入文件(input file)为 /dev/zero,这是一个特殊的文件,在Linux中它提供无限量的零。of=./data:指定输出文件(output file)为当前目录下的data 文件。这将创建一个新的文件或覆盖已存在的同名文件。dd 是一个非常强大的命令行工具,用于在Unix/Linux系统中进行低级别的数据复制和转换。bs=1M:设置读取和写入的数据块大小为1兆字节(MiB)。这样可以加快操作速度,因为更大的块大小减少了I/O操作的次数。
2024-12-19 17:12:17
304
原创 【linux 内存】cat /proc/meminfo、free
proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 ,/proc/meminfo所包含的信息比”free”等命令要丰富得多,因此需要了解这些字段的含义。cat /proc/meminfo 各字段详解。
2024-12-18 11:41:44
499
原创 【linux内存】Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。
2024-12-18 11:31:26
1073
原创 【test】Socket operation on non-socket 错误出现有两种情况:
如 调用connect socket accept 函数出错,可以 perror(“socket”);select 函数再次强调:0: 正常返回,而且可以调用FDISSET函数去查fd;会造成在recv时出现 Socket operation on non-socket错误。会造成在bind时出现 Socket operation on non-socket错误。
2024-12-16 14:04:04
398
原创 【vsock】qemu测试vsock zerocopy
PC无法ping通外网1.编译获取镜像Image、rootfs.cpio、获取qemu-8.022.配置/etc/qemu-ifup3.搭建tftp4.传输vsock_perf文件①启动qemu②udhcpc #配置qemu网络③将vsock_perf拷贝到 tftp_root目录下5.编译kernl中tools/testing/vsock目录下的代码6.启动qemu。
2024-12-05 10:38:36
234
原创 【test】storage class specified for parameter
编译器报“storage class specified for parameter ”的错误,原因是头文件中的一个函数声明少写了一个分号“;
2024-11-14 09:36:32
357
原创 【rk3568】sg90舵机pwm控制
PWM是Pulse-Width Modulation的简称,中文译作脉冲宽度调制。作为一种调制技术,PWM的原理是通过调整周期性波形的高电平时间宽度,从而改变有效信号的占空比,实现对设备的供电控制。PWM技术的常见应用领域包括屏幕背光亮度调节、电机转速控制和风扇转速控制等。Linux内核支持PWM驱动框架,该驱动框架采用结构体数据类型对PWM控制器和PWM信号进行了抽象,提供了PWM驱动框架核心代码和sysfs接口代码。
2024-10-24 21:23:40
640
原创 【pm】devfreq 框架
是由三星电子MyungJoo Ham,提交到社区。原理和/deivers/cpufreq 非常近似。但是cpufreq驱动并不允许多个设备来注册,而且也不适合不同的设备具有不同的governor。devfreq则支持多个设备,并且允许每个设备有自己对应的governor。
2024-10-24 14:26:27
690
原创 《汇编语言》第16章——实验16 编写包含多个功能子程序的中断例程
每个模块内部使用 ORG 设置了自身的逻辑地址,如模块 A 使用 ORG 0x1000,模块 B 使用 ORG 0x2000。在链接阶段,链接器需要将这些模块合并成一个可执行文件,并调整它们在最终内存布局中的地址。尽管实际链接时可能涉及更复杂的重定位过程,但模块内部的 ORG 指令提供了初始的逻辑地址参考。例如,模块 A 的第一条指令在链接前被认为位于 0x1000,链接器可以根据这个信息和其他模块的位置以及链接脚本的指示,决定模块 A 在最终可执行文件中的实际位置,并进行相应的地址修正。
2024-10-22 18:56:56
947
原创 《汇编语言》第15章——实验15安装新的 int 9 中断例程
安装一个新的 int 9 中断例程,功能:在 DOS 下,按下A键后,除非不再松开如果松开,就显示满屏幕的A,其他的键照常处理。提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。安装新的 int9 中断例程。断码 = 通码 + 80h。
2024-10-22 15:19:21
231
原创 【pm】opp介绍
在SoC内,某些domain可以运行在较低的频率和电压下,而其他domain可以运行在较高的频率和电压下,某个domain所支持的对的集合被称为Operating Performance Point,缩写OPP。在dts中配置后自动有opp框架驱动加载使用,例如cpu的opp,从设备树文件arch/arm/boot/dts/imx6ull.dtsireg = ;向指定的设备添加一个频率/电压(opp table)组合,频率和电压的单位分别是Hz和uV。
2024-10-18 14:34:50
890
原创 【test】google cloud
此外,服务器上还默认安装了 Docker, 这样就可以直接在 Docker 基础上运行一个 Kubernetes 本地集群了,还要啥自行车!默认已经安装了 VsCode 开发环境和终端界面,都是在线运行的,使用非常丝滑。
2024-09-27 17:57:23
317
原创 【linux】regulartor-fixed
作用:创建一个固定的 regulator。一般是一个 GPIO 控制了一路电,只有开(enable) \ 关(disabled)两种操作。
2024-09-25 18:26:35
784
原创 《汇编语言》第13章——实验 13 编写、应用中断例程
(1)编写并安装 int 7ch 中断例程,功能为显示一个用0结束的字符串,中断例程安装在 0:200 处。参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址。以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret 指令执行前后 CS、IP 和栈中的状态。
2024-09-23 10:50:52
389
转载 【linux】devfreq 内核框架介绍
devfreq框架存在的意义,是为了将调频逻辑的公共部分,比如数据结构,调频方法等抽象出来,减少重复代码的产生,方便驱动工程师实现设备的调频操作。我们这里将有调频需求的设备称为device_freq,以便后续的讨论。有了devfreq框架,驱动工程师只需要按照devfreq框架提供的函数原型,实现具体设备的具体调频操作,同时选取合适的governor,并将device_freq和底层调频方法一同注册进devfreq框架,就能够实现调频。这里的governor ,其实指的是不同的调频策略。
2024-09-06 17:11:57
437
转载 【linux】Regulator子系统
Regulator指的是稳定器,有电压稳定器及电流稳定器两种,能够自动维持恒定电流或者电压。其中,电压稳定器voltage regulator在电路中比较常见。从设备驱动的角度来看,regulator的控制比较简单,主要有enable/disable/输出电压或电流大小的控制。Linux利用regulator framework对regulator进行管理和控制。
2024-09-04 15:00:24
555
原创 《汇编语言》第12章——实验12编写子程序号中断的处理程序
编写 0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!要求:仔细跟踪调试,在理解整个过程之前,不要进行后面课程的学习。然后返回到 DOS。
2024-09-03 13:51:42
315
sshfs-sshfs-sshfs
2024-06-07
tcp服务器-select比较报文数
2023-03-29
ring-log内核双向循环链表实现环形日志-6M缓冲区-proc接口-读取写入日志
2023-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人