自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 收藏
  • 关注

原创 arm的状态寄存器

总的来说,CPSR 用于存储当前程序的状态,而 SPSR 则用于保存异常处理程序执行前的状态,以确保异常处理程序执行完毕后能够正确地返回到原来的程序状态。为了防止在某些操作 CPSR 寄存器的场景中,误操作其它 bit 位,CPSR(PSRs,其它状态寄存器也都具备这个功能)有 c x s f 几个不同的字段指代不同的 bit 位。The Saved Program Status Registers (SPSRs),程序状态保存寄存器,每个异常模式都有对应的 SPSR,是各个异常模式下 CPSR 的拷贝。

2024-04-03 16:03:55 1146

原创 linux内核input子系统概述

input子系统处理Linux下输入事件。驱动层:输入设备的驱动程序,负责检测和接收输入设备的输入事件,将输入事件上报给核心层;核心层:提供设备驱动、事件 handler 注册和操作的接口;接收驱动层的输入事件并上报给事件处理层;事件处理层:通过提供 sysfs 接口等方式和用户空间交互,例如用户空间打开特定设备,当有输入数据时就会上传给用户空间。

2024-03-20 14:36:49 1786

原创 debug fs创建和使用

这些权限位可以组合使用,例如,若要创建一个用户可读写的文件,组和其他人只能读取的文件,你可以将权限模式设置为 S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH,即 0644。Linux 中还有一些其它类似创建fs的接口,但是创建的位置不同,约定的使用用途也多不相同,但是创建的方法都是相似的:指定创建位置、模式、file_operations 等。:指向 attribute 结构体的指针,描述了要创建的文件的属性,包含了文件的名称、权限模式、读取和写入函数等信息。

2024-03-10 17:12:39 905

原创 samba服务器创建和连接方法(详细)

介绍如何在linux环境搭建samba服务器,包括添加samba用户和samba用户组。并介绍了怎么在linux和Windows下连接samba服务器。

2024-01-06 11:12:57 2048

原创 onie支持pice硬盘

我们知道,SATA硬盘和pcie硬盘的dev设备名不一样:onie中怎么支持这种不同类型的硬盘呢?在 中的 接口中,将 变量作为onie安装位置,从 也可以看出这点。 变量是在 接口中,通过 定义了的。因此,需要支持指定的硬盘,只需要在自己的vendor_modules下重载 接口,并返回相应的硬盘设备名。例如支持nvme硬盘:接口只要返回即可。同样支持SATA硬盘或U盘,接口返回等即可.......

2022-07-05 11:16:14 445 1

原创 远程工作的一些命令

git config --global user.name “usrname”git config --global user.email “usrname@email”ssh-keygen -C “usrname@email” -t rsacd ~/.sshcat id_rsa.pub将上述生成的id_rsa.pub拷贝到ssh服务器的~/.ssh/authorized_keys:ssh-copy-id -i ~/.ssh/id_rsa.pub usrname@服务器IP这个总结很好...

2022-06-21 11:04:43 263

原创 内存管理之预留内存

文章目录一、memblock二、cmdline有时候,我们需要预留一段内存不受内核直接管理分配,有什么办法?一、memblockmmeblock是内存的一种管理机制,主要管理这两种内存:一种是系统可用部分的物理内存(usable),也就是/proc/meminfo里看到的总内存都是提供给系统使用的;另一种是用户预留部分的内存(reserved),用户自己特殊使用,这部分在系统总内存里看不到。比如从内存顶部预留512M内存:resv_size = 512*1024*1024;resv_start

2022-05-19 15:06:05 1552 1

原创 计算机内存管理之内存访问

文章目录一、设备I/O内存访问ioremap & ioremap_nocacheioremap_cachedioremap_wc & ioremap_wtI/O内存访问流程二、设备地址映射到用户空间mmap过程一、设备I/O内存访问在linux上电时,并不会为外设地址空间建立页表。但我们知道,linux访问内存使用的都是虚拟地址,因此如果想访问外设的寄存器(一般包括数据寄存器、控制寄存器与状态寄存器),需要在驱动初始化中将外设所处的物理地址映射为虚拟地址,使用ioremap接口可以实现

2022-05-16 19:29:56 2505

原创 计算机内存管理之虚拟内存

文章目录1、虚拟内存是什么,为什么要有虚拟内存2、内存分段3、内存分页3.1 TLB3.2 TTW3.3 多级页表4、linux中的分页机制:5、内存保护:1、虚拟内存是什么,为什么要有虚拟内存如果进程直接访问物理内存,那么不同进程是能够直接访问其它进程的内存空间的,这种行为不安全。为保证不同进程之间内存空间不可见,实现进程内存隔离,需要有一种机制,能够将不同进程的内存物理空间实现隔离。这个机制就是 虚拟内存,为不同的进程分配各自的虚拟地址,这些虚拟地址落在不同的物理地址,实现了不同进程使用的地址隔

2022-05-15 15:49:24 1260

原创 一次gdb实战 设置断点 单步调试 打印和修改变量值等操作

本案例总结了gdb的常用用法,详细规则可参考gdb入门教程总结在前:编译命令gcc -g gdb_test.c -o gdb_test,通过-g选项添加调试信息,否则使用gdb调试时,会报“No symbol table is loaded. Use the "file" command.”错误。设置断点:bread(或b) 函数名; bread(或b) -line 行号;例如b main 或 b -line 21。开始运行:run,该命令会直接运行到断点位置或直至结束。单步执行:next(n

2022-05-09 15:48:33 2181

原创 linux 内核模块学习总结

文章目录一、简介二、一个简单的内核模块代码三、模块内常用符号说明四、内核模块加载1、模块加载函数2、模块加载3、查看设备上当前模块的信息4、查看模块依赖五、内核模块卸载1、模块卸载函数2、模块卸载六、模块参数七、导出符号八、编译一、简介linux内核架构庞大功能众多,包含非常多的组件。并不是所有功能都是用户需要的,也不可能稍微修改一些功能就重新全编linux内核。当前linux使用模块(module)的机制解决这个问题1、module可以单独编译2、module可以在内核启动后动态加载或卸载

2022-04-24 11:01:10 1250

原创 sonic开发——整体架构

数据库架构

2022-04-16 09:36:05 662

原创 C code——kthread_create 创建线程

#include <stdio.h>#include <linux/sched.h>static struct task_struct *test_task = NULL;static int test_monitor_process(void *data){ while(!kthread_should_stop()) { printf("hhhh\n"); } return 0;}static int __init

2022-04-14 17:23:39 443

原创 sonic开发——修改内核配置

sonic 中的内核配置修改不需要编译menuconfig,而是直接修改 patch/kconfig-exclusions和patch/kconfig-inclusions。例如不想内核中包含某些配置,则将这些配置添加到 patch/kconfig-exclusionsCONFIG_REISERFS_FSCONFIG_JFS_FSCONFIG_XFS_FS类似的,想要内核中包含某些配置,则将这些配置添加...

2022-04-12 15:45:55 539 3

原创 sonic开发——cmdline传参

参考:https://github.com/Azure/SONiC/wiki/Porting-Guide在device下面的installer.conf文件中,可以为onie安装sonic提供一些额外配置文件,其中包含cmdline参数。device/|-- <VENDOR_NAME>/| |-- <ONIE_PLATFORM_STRING>/| | |-- installer.conf在installer.conf文件中添加ONIE_PLATFORM_EX

2022-04-12 14:45:17 541

原创 C 数据结构 —— 先入先出

创建相关节点:#include <stdio.h>#include <linux/mutex.h>struct fifo_node{ int some_data; struct fifo_node *next;};struct fifo_queue{ struct mutex lock; struct fifo_node *head; struct fifo_node *tail;};static fifo_queue

2022-04-09 15:46:03 1254

原创 dma_alloc_coherent 申请内存用法和问题总结

文章目录1、dma_alloc_coherent用法2、问题3、解决方法1、dma_alloc_coherent用法通过dma_alloc_coherent接口可以申请连续的大块内存。dma_addr_t dma_handle;cpu_addr = dma_alloc_coherent(dev, size, &dma_handle, gfp);入参:dev: ``struct device *``,可设为NULLsize: 想要申请的内存长度,单位为bytesgfp: 分配内

2022-04-08 16:02:41 8477

原创 中断模式和polling模式 && 硬件中断和软件中断

文章目录一、中断 VS polling中断polling对比一、中断 VS polling中断中断是一种硬件机制,设备通知CPU处理器中断CPU当前正在运行的任务,来处理中断任务。中断可能发生在任何时间,所以当CPU通过中断线收到中断信号时,会立即停止当前处理的任务,转而调用中断设备的中断相应程序来处理中断。pollingpolling即轮询模式,是一种软件协议。在轮询过程中,CPU周期性的依次询问每一个设备,是否有业务需要处理。每个设备有一个指令就绪bit位,这个bit位标识了设备是否需要处

2022-03-31 15:08:17 9075

原创 lspci 命令详解及常用命令

文章目录一、说明二、参数说明三、用法举例一、说明lspci是查看设备上pcie设备信息的命令。该命令的不同参数配合,在查看pcie设备和定位pcie问题时很有用。包括查看pcie设备中断号、查看配置空间内容、修改配置空间寄存器等操作。在此总结😊😊二、参数说明表1 基本参数tag说明用例-v显示设备上所以pcie设备的一些信息lspci -v-vv显示更多的信息,几乎包含了所有有用的信息lspci -vv-vvv显示相当详细的信息,所有能够解析出来的pc

2022-03-28 20:43:50 30225

原创 python脚本——csv模块实现对csv格式Excel操作

文章目录一、说明二、代码三、总结一、说明通过Python 的csv模块,实现对csv格式的Excel文件的一些操作二、代码import csv# 导入需要读取的第一个Excel表格的路径filename = '****'err_index = []err_url = []err_intro = []def import_excel(): with open(filename, newline='') as csvfile: reader = csv.reade

2022-03-28 20:08:17 1579

原创 python脚本——selenium自动化执行一些网页上的操作

文章目录一、说明二、代码三、用法总结一、说明通过python的selenium模块,自动化执行一些网页上的重复的无聊的工作。二、代码#! /usr/bin/python3.6from time import sleepimport csvimport osimport tarfileimport shutilfrom selenium import webdriverfrom selenium.webdriver.support.ui import Selectfrom seleni

2022-03-28 20:01:14 4914

原创 python脚本——通过telnet连接设备

一、说明通过telnetlib库,telnet到设备上并做一些测试。包括重启设备、等待重启完成、其它测试操作等。二、代码#! /usr/bin/python3.6import loggingimport telnetlibimport timehost_addr = '10.229.105.14'port_num = '10017'# 环境初始化def init_env(): global host_addr, port_num host_addr = input

2022-03-28 19:41:12 4682

原创 S.M.A.R.T. 参数(smartctl)计算硬盘精确健康值

参考:Acronis Drive Monitor: Disk Health Calculation文章目录1、背景2、smartctl -a /dev/sda3、计算健康值3.1 关键参数3.1.1 公式说明3.2.2 计算举例3.2 其它参数4、附录表1 关键属性的阈值和权重表21、背景需要监控硬盘精确的健康值。我们知道smartctl工具可以实现对硬盘的健康检测,但是并没有给出具体的健康值信息。例如,smartctl -H /dev/sda命令可以检测硬盘:~# smartctl -H /d

2022-02-28 11:14:11 2885 2

转载 MarkDown中的emoji

这些表情很有意思,有时无法访问GitHub,所以摘过来。????????摘录自:原文在这People:bowtie: :bowtie:???? :smile:???? :laughing:???? :blush:???? :smiley:☺️ :relaxed:???? :smirk:???? :heart_eyes:???? :kissing_heart:???? :kissing_closed_eyes:???? :flushed:???? :reli

2022-01-06 19:58:06 495

原创 查看内核模块依赖关系和动态库依赖关系

背景最近在项目中加载内核模块和动态库时,都遇到加载失败情况。后发现都是依赖关系问题,在此记录此类问题的解决方法。查看内核模块依赖关系使用insmod加载内核模块时,报以下错误:/ # insmod a.koinsmod: ERROR: could not insert module ./a.ko: Unknown symbol in module环境缺少模块依赖,使用modinfo查看依赖:/ # modinfo ./a.infofilename: /home/admin/./

2022-01-06 17:32:03 2192

原创 rdmsr获取Intel CPU温度

最近调试intel 的x86 CPU单板,获取CPU温度遇到一些问题,在此记录下。问题描述原方案原方案从 /sys/class/hwmon/下读取CPU温度,该目录下有hwmon0、hwmon1、hwmon2三个文件,其中hwmon2目录下有记录CPU温度的文件temp_input,从该文件能直接读取CPU温度。但是后来发现temp_input文件有时在hwmon1下,有时在hwmon2下,不同环境位置不一样,无法统一。也不想再用直接读文件获取温度的方法,查看CPU手册找到了读寄存器获取温度的方法,

2022-01-06 11:38:03 3417 2

原创 dd命令(参数和使用)

最近整理uboot的编译流程,遇到一些以前没接触过的命令,遇到就记录下。dd命令功能dd命令用来读取设备、文件中的内容,并原封不动地复制到指定位置。可以理解为拷贝某些内容复制到某文件内。与cp命令的区别是,cp命令复制源对象是目录和文件;dd命令源对象是磁盘内容(可以是目录和文件,可以是设备输出等)dd参数1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=ou

2021-11-03 10:33:54 3339 2

原创 tab键补全路径问题,Disk quota exceeded

tab键补全路径问题,Disk quota exceeded问题描述今天在服务器上使用tab键自动补全路径时,无法补全,报如下错误:-bash: cannot create temp file for here-document: Disk quota exceeded问题大概原因就是磁盘空间分配不足了。quota命令 显示用户或工作组的磁盘配额语法quota(选项)(参数)选项-g:列出群组的磁盘空间限制;-q:简明列表,只列出超过限制的部分;-u:列出用户的磁盘空间限制;-v:

2021-10-23 14:31:22 2149 2

原创 gdb反汇编disassemble

GDB Command Reference - disassemble commandgdb反汇编可用disassemble/disass命令。用法如下:disassembledisassemble [Function]指定要反汇编的函数。如果指定,反汇编命令将产生整个函数的反汇编输出。(gdb) disassemble maindisassemble [Address]指定要反汇编的地址。请注意,当仅指定一个地址时,此命令将反汇编包含给定地址的...

2021-10-09 14:42:13 10774

原创 gdb入门教程

gdb常用命令:1、打开gdb启动gdb的方法有以下几种:1) gdb <program>program也就是执行文件,一般在当前目录下。2) gdb <program> core用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。3) gdb <program> <PID>如果程序...

2021-10-09 11:01:34 2171

原创 如何用GBD确认函数属于哪个库

想确认BSP_Print函数在哪个库中:1、确定哪个进程调用,确定进程号/ # ps -l |grep ADM1619 root 0:37 /usr/sbin/ADM4282 root 0:00 /home/Base_2_0_0_0/bin/arm64_ft/ADM_MGR 3 0 1 15491 root 0:00 grep ADM进程号为16182、gdb追踪ADM,并确定BSP_Print中符号的地址/ # gdb(gdb) attach 1619...

2021-10-09 10:51:51 557

原创 linux 挂载服务器目录(创建共享文件夹)

sshfs,就是可以把ssh连接到的主机资源,映射到本机的文件系统当中,然后用户可以像操作本地文件一样操作,而实际的文件改动将通过ssh传输到远程主机当中。以下就是详细步骤:1、本地安装sshfs:yum install fuse sshfs2、挂载远程文件夹sshfs zjc@10.156.12.7:/home/zjc /media/vdb1/remote_test -o allow_otherPS:若提示以下错误:fusermount: option allow_other

2021-09-28 14:50:54 700

原创 C sscanf()用法

背景: 获取硬盘状态,需要先ls -l dev/shda获取盘符: / # ls -l dev/shda lrwxrwxrwx 1 root root 7 Aug 17 11:28 dev/shda -> nvme0n1 再根据获取的盘符nvme0n1获取硬盘状态: / # cat sys/block/nvme0n1/device/state live实现:获取盘符:/*通过ls -l /dev/shda,动态获取盘符*/static ...

2021-08-17 14:22:18 394

原创 Git 相关命令

提交冲突代码:git stashgit pull -rgit status修改冲突并git addgit rebase --continuegit stash apply修改冲突并git addgit reset HEAD切换分支:git checkout -b v0.9rc1 origin/v0.9rc1删除分支:$ git branch -d <BranchName>...

2021-08-17 10:54:57 47

fio一个硬盘压力测试工具和说明

借助fio工具实现的硬盘压力测试脚本,有使用方法和详细说明。

2022-06-27

一个端口映射工具(portmapping)

PortMapping是一款端口映射工具,本工具采用windows高效网络通讯模型完成端口开发,支持TCP映射和UDP映射,性能达到最优。操作简单,设置便捷,是外网穿透内网的便利工具.

2022-05-06

544041_Broadwell_DE_EDS_Registers_Vol2_544041_v1_0.pdf

544041_Broadwell_DE_EDS_Registers_Vol2_544041_v1_0.pdf

2022-01-06

空空如也

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

TA关注的人

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