CN117112458A - 一种基于飞腾处理器的动态监控驱动程序及硬件的方法 - Google Patents
一种基于飞腾处理器的动态监控驱动程序及硬件的方法 Download PDFInfo
- Publication number
- CN117112458A CN117112458A CN202311099218.2A CN202311099218A CN117112458A CN 117112458 A CN117112458 A CN 117112458A CN 202311099218 A CN202311099218 A CN 202311099218A CN 117112458 A CN117112458 A CN 117112458A
- Authority
- CN
- China
- Prior art keywords
- data
- hardware
- linux kernel
- module
- dynamic monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000003993 interaction Effects 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 45
- 238000007639 printing Methods 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 12
- 238000013461 design Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于飞腾处理器的动态监控驱动程序及硬件的方法,属于领域。本发明针对例如PCIe总线等外部高速总线接口的设备在高速运行的场景中产生的错误,能够不影响目标驱动程序及硬件高速运行状态的同时,监控到目标驱动程序及硬件的状态及信息。本发明是基于FT2500处理器的新一代国产多核处理器服务器平台上实现的。主要是利用Linux内核模块化设计,在linux内核中插入额外的linux内核模块,配合人为交互输入目标驱动程序及硬件的虚拟地址空间,实现在linux内核中插入的额外linux内核模块中获取到目标驱动程序及硬件的信息。本发明相对比于背景技术而言,具有更高适用性和高效性。
Description
技术领域
本发明属于领域,具体涉及一种基于飞腾处理器的动态监控驱动程序及硬件的方法。
背景技术
当下基于飞腾处理器的Linux内核调试驱动程序或者外部硬件的方法主要有基于debugfs文件系统动态调试方法、基于linux内核kprobes机制的bpftrace技术、基于linux内核printk打印的静态调试方法、基于kgdb的linux内核在线调试技术、基于kdump的linux异常时信息转存技术等等,如图1所示。
基于debugfs文件系统动态调试方法需要针对目标驱动程序及硬件,开发所需调试功能或者获取所需信息的debugfs内核模块。而开发的debugfs内核模块会在linux系统下建立debugfs文件系统。通过debugfs文件系统访问到debugfs内核模块,进而可以实现针对目标驱动程序或者硬件的调试功能或者获取到目标驱动程序或者硬件的信息。
基于linux内核kprobes机制的bpftrace技术调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术。利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程。
基于linux内核printk打印的静态调试方法,通过对目标驱动程序源码中修改、添加需要打印的信息的代码逻辑,实现在目标驱动程序运行中,打印出所需要调试信息的目的。
构建linux内核调试环境kgdb是通过基于linux内核调试器(linux kerneldebugger,kdb),实现了一种在系统运行时对linux内核内存核数据结构进行检查的方法。使用kdgb调试目标驱动程序或者硬件,能够像调试普通应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。
在linux内核发生错误时,linux内核提供了一种kdump机制,实现了linux内核发生崩溃时转储内存的一种机制。该kdump会将当前linux内核使用的内存导出命名为vmcore的镜像文件保存到硬盘上。进而可以通过crash等linux工具对当前使用的linux内核错误原因进行分析。
基于debugfs文件系统动态调试方法需要针对所使用的linux内核源码打开debugfs内核配置选项,而该配置选项在正常的使用中时是不会被配置的。因为会影响linux操作系统运行的整体性能。而且还需要针对目标驱动程序进行源码修改,增加debugfs功能。
基于linux内核kprobes机制的bpftrace技术,在linux内核低版本中没有集成该功能。并且需要针对所使用的linux内核源码进行重新配置,打开bpftrace相关的linux内核配置选项。所以对于一些应用场景中,linux内核并没有配置上bpftrace相关的配置。
基于linux内核printk打印的静态调试方法,需要针对目标驱动源码进行修改,增加printk功能源码。而通常目标驱动源码并不能获取到。所以该方法在没有目标驱动源码的情况下是实施不了的。
基于kgdb的linux内核在线调试技术,需要重新配置、编译linux内核,打开linux内核的kgdb功能。而且该kgdb技术对于高速运行的外部数据总线因为高速传输数据导致的错误并不能有效,如PCIe总线。
基于kdump的linux异常时信息转存技术,需要重新配置linux内核的kdump功能。而该功能在正常使用linux内核时,为保证linux操作系统的高性能,是不会配置的。
综上几种常用的调试、监控目标驱动程序及硬件的技术,都是需要基于linux内核源码重新配置,或者需要修改linux源码,或者需要修改目标驱动源码。并且针对例如PCIe总线等外部高速总线的高速传输数据过程中导致触发的错误,常用的调试、监控技术并不能有效。并且linux内核本身的架构就具有高复杂性、技术难度高的特点,而常用的调试、监控目标驱动程序及硬件的方法本身就具有很大的复杂性、难度高的特点。故而常常在定位、解决目标驱动或者硬件的错误问题的时候,极大的增加了难度。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于飞腾处理器的动态监控驱动程序及硬件的方法,以解决基于飞腾处理器的Linux内核调试驱动程序或者外部硬件的方法在定位、解决目标驱动或者硬件的错误问题的时候难度大的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于飞腾处理器的动态监控驱动程序及硬件的方法,该方法包括:在用户层开发实现了动态监控应用程序,在内核层则实现了linux内核动态监控模块;
该动态监控应用程序包括三个模块,分别是用户交互访问模块、敏感数据打印模块和统计结果打印模块;
用户交互访问模块实现了用户与动态监控应用程序的人机交互接口;
敏感数据打印模块实现了针对调试过程中所需要监测的敏感数据自动识别,识别出哪些数据是敏感数据,哪些数据是不用关心的数据;
统计结果打印模块实现了针对目标驱动和硬件监测的结果进行统计、归类定性;
该l inux内核动态监控模块用于根据目标驱动程序及硬件使用的物理地址,重新申请、映射出虚拟地址,此外l inux内核动态监控模块还实现了定时内核打印、ioct l封装主动访问接口、敏感数据监控和时间统计。
(三)有益效果
本发明提出一种基于飞腾处理器的动态监控驱动程序及硬件的方法,与现有调试目标驱动程序及硬件的背景技术相比,本发明提出的技术方法通过在l inux内核中动态的插入、卸载l inux内核动态监控模块,实现动态监控目标驱动程序及硬件的功能,并且无需重新配置、修改、编译l inux内核或者目标驱动源码等。本发明对于在FT2500服务器平台插载基于FPGA实现PCIe接口的定制加、解密功能的板卡所发生在高速传输数据时产生的错误,相对比于背景技术而言,具有更高适用性和高效性。
附图说明
图1为基于飞腾处理器的驱动监控及硬件的工作背景技术方案示意图;
图2为本发明功能组件结构示意图;
图3为本发明动态监控驱动程序及硬件的软件工作示意图;
图4为本发明所设置的命令固定结构的格式化示意图;
图5为本发明设置的数据固定结构的格式化示意图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明提供了一套动态监控、调试驱动及硬件的软件方法。针对例如PCIe总线等外部高速总线接口的设备在高速运行的场景中产生的错误,能够不影响目标驱动程序及硬件高速运行状态的同时,监控到目标驱动程序及硬件的状态及信息。本发明是基于FT2500处理器的新一代国产多核处理器服务器平台上实现的。主要是利用Linux内核模块化设计,在linux内核中插入额外的linux内核模块,配合人为交互输入目标驱动程序及硬件的虚拟地址空间,实现在linux内核中插入的额外linux内核模块中获取到目标驱动程序及硬件的信息。
参考图2所示,本发明的整体方案架构分为两层,分别是用户层和内核层。
本发明的基于飞腾处理器的动态监控驱动程序及硬件的方法,包括:在用户层开发实现了动态监控应用程序,在内核层则实现了linux内核动态监控模块。
该动态监控应用程序包括三个模块,分别是用户交互访问模块、敏感数据打印模块和统计结果打印模块。
用户交互访问模块实现了用户与本发明实现的动态监控应用程序的人机交互接口功能。
敏感数据打印模块实现了针对调试过程中所需要监测的敏感数据自动识别功能,识别出哪些数据是敏感数据,哪些数据是不用关心的数据。
统计结果打印模块实现了针对目标驱动和硬件监测的结果进行统计、归类定性的功能。
该linux内核动态监控模块主要实现了根据目标驱动程序及硬件使用的物理地址,重新申请、映射出虚拟地址,如寄存器虚拟地址、命令虚拟地址和数据虚拟地址。此外linux内核动态监控模块还实现了定时内核打印功能、ioctl封装主动访问接口功能、敏感数据监控功能和时间统计功能。
参考图3,本发明的动态监控驱动程序及硬件的软件处理流程分别如下。
用户交互访问模块的软件处理流程包括两个部分,分别是用户输入虚拟地址空间步骤和获取Linux内核动态监控模块数据步骤。
用户输入虚拟地址空间步骤包括:
步骤A1:根据dmesg日志读取目标驱动程序及硬件的虚拟地址,得到的虚拟地址空间的首地址和大小。
步骤A2:通过用户交互访问接口输入步骤A1得到的虚拟地址空间的首地址和大小。
步骤A3:用户交互访问模块的软件将输入的虚拟地址空间的首地址和大小通过linux内核的VFS虚拟文件系统的ioctl接口输入到linux内核动态监控模块里。
用户交互访问模块获取Linux内核动态监控模块数据步骤包括:
步骤B1:通过linux内核VFS虚拟文件系统提供的ioctl、open、close、write、read接口,可读取到linux内核动态监控模块的数据,进入步骤B2;
步骤B2:将读取到的linux内核动态监控模块监控到的数据进行数据标记,识别出linux内核动态监控模块所监控的目标驱动程序及硬件,并且进行数据标记,进入步骤B3。
步骤B3:将标记的数据,存到本地文件系统中,实现数据记录功能,进入步骤B4。
步骤B4:上报数据到用户交互访问模块的前端运行程序或者监控运行程序中。
敏感数据打印模块的软件处理流程包括:
步骤C1:通过步骤B3所完成的数据记录,获取到数据;以及通过linux内核VFS虚拟文件系统提供的ioctl、open、close、write、read接口,可读取到linux内核动态监控模块的数据,进入步骤C2。
步骤C2:遍历、查询步骤C1获取的数据,查询是否有目标驱动程序及硬件的敏感数据。有则进入步骤C3,没有则忽略。
步骤C3:遍历、查询步骤C1获取的数据,查询是否有所需的敏感数据,如果有则进入步骤C4,没有则忽略。
步骤C4:打印出敏感数据。
统计结果打印模块的软件处理流程包括:
步骤D1:获取步骤C1得到的数据,进入步骤D2。
步骤D2:遍历、统计该数据中的数据分类和模块分类,进入D3。
步骤D3:生成数据分类统计日志和模块分类统计日志,进入步骤D4。
步骤D4:读取步骤D3生成的数据分类统计日志和模块分类统计日志,并且打印。
Linux内核动态监控模块的软件处理流程包括:
步骤E1:通过步骤A3得到虚拟地址空间首地址和大小,通过linux内核函数virt_to_phys获取到目标驱动程序及硬件物理地址,进入步骤E2。
步骤E2:根据步骤E1得到的目标驱动程序及硬件的物理地址,重新申请虚拟地址空间与之映射,进入步骤E3。
步骤E3:将步骤E2中申请到的虚拟地址空间,识别定义出寄存器虚拟地址空间、命令虚拟地址空间、数据虚拟地址空间。
步骤E4:用户层的用户交互访问模块软件、敏感数据打印模块软件和统计结果打印模块软件通过linux内核的VFS虚拟文件系统的write和read接口,分别实现针对linux内核动态监控模块的写入和读取功能,针对linux内核动态监控模块的写入功能进入步骤E5,针对linux内核动态监控模块的读取功能进入步骤E8。
步骤E5:在Linux内核动态监控模块调用设置命令或者数据的Linux内核模块中的设置命令的专用功能函数和设置数据的专用功能函数,通过copy_form_user函数获取到需要设置的命令或者数据,并且将获取到的命令或者数据进行固定结构的格式化。
如图4所示为Linux内核动态监控模块通过Linux内核模块中设置命令的专用功能函数所设置的固定结构的命令格式,偏移地址0x00的32bit区域是目标驱动程序及硬件命令编号ID,其功能是本发明中人为的将所有命令进行编号后分配的编号。移地址0x04的32bit区域是目标驱动程序及硬件命令扩展区,其是目标驱动程序及硬件使用的命令。移地址0x08和0x0C的32bit区域是目标驱动程序及硬件命令扩展区,其是本发明固定结构的命令格式的扩展区0和扩展区1。
如图5所示Linux内核动态监控模块通过Linux内核模块中设置数据的专用功能函数所设置的固定结构的数据格式。偏移地址0x00的32bit区域是目标驱动程序及硬件数据编号ID,其功能是本发明中人为的将所有通信数据类型进行编号后分配的编号。偏移地址0x04和0x08的32bit区域是目标驱动程序及硬件所使用的虚拟地址首地址低32bit和高32bit区,其功能是存储目标驱动程序及硬件数据所使用的虚拟地址首地址。偏移地址0x0C的32bit区域是目标驱动程序及硬件所使用的虚拟地址首地址的空间大小。步骤E5所设置的命令和数据是目标驱动程序及硬件与其对应的用户态应用程序之间进行通信的命令与数据。
进入E6;
步骤E6:Linux内核动态监控模块读取Linux内核动态监控模块在步骤E2中所重新申请的命令虚拟地址和数据虚拟地址,将读取到的数据与步骤E5设置的监控命令和数据进行比对,判断是否是需要监控的数据,如是进入步骤E7;否则忽略;某实施例中,linux内核动态监控模块设置内核定时,实现定时读取寄存器虚拟地址,进入步骤E7。
步骤E7:将步骤E6的数据打印。
步骤E8:通过linux内核动态监控模块在步骤E3中得到的寄存器虚拟地址、命令虚拟地址和数据虚拟地址,读取到对应的寄存器信息、命令信息和数据信息。
本发明主要基于linux内核模块化设计,实现在无需修改linux内核配置和源码的情况下,对目标驱动程序及硬件进行动态监控、调试的目的。与现有的调试、监控目标驱动程序及硬件的背景技术相比,本发明提出的技术方法关键点在于通过动态插入、卸载linux内核动态监控模块,且linux内核动态监控模块使用目标驱动程序及硬件使用的虚拟地址,计算出目标驱动程序及硬件使用的虚拟地址对应的目标驱动程序及硬件使用的物理地址。进而linux内核动态监控模块使用目标驱动程序及硬件的物理地址重新申请、映射一块虚拟地址空间。而后linux内核动态监控模块通过新申请、映射出的虚拟地址空间访问到目标驱动程序及硬件的寄存器、控制命令、通信数据等信息。
另外一个关键点在于本发明对于调试、监控使用外部高速总线通信的设备具有很高的异常查找有效性、高适用性。本发明对于使用外部高速总线通信的设备在高速传输中产生的错误,能够不影响外部高速总线通信的设备正常工作的情况下,实时的监控外部高速总线通信的设备的寄存器状态、控制命令、通信数据等。相比较背景技术方案的必须配置、修改、编译linux内核或者影响外部高速总线通信设备高速通信效率,本发明提出的方案具有更高的适用性,对于定位、解决遇到的linux内核模块、外部设备驱动、外部设备等异常问题,提高了效率。
与现有调试目标驱动程序及硬件的背景技术相比,本发明提出的技术方法通过在linux内核中动态的插入、卸载linux内核动态监控模块,实现动态监控目标驱动程序及硬件的功能,并且无需重新配置、修改、编译linux内核或者目标驱动源码等。本发明对于在FT2500服务器平台插载基于FPGA实现PCIe接口的定制加、解密功能的板卡所发生在高速传输数据时产生的错误,相对比于背景技术而言,具有更高适用性和高效性。验证结果对比如下表1所示。
表1本发明与背景技术验证对比
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,该方法包括:在用户层开发实现了动态监控应用程序,在内核层则实现了linux内核动态监控模块;
该动态监控应用程序包括三个模块,分别是用户交互访问模块、敏感数据打印模块和统计结果打印模块;
用户交互访问模块实现了用户与动态监控应用程序的人机交互接口;
敏感数据打印模块实现了针对调试过程中所需要监测的敏感数据自动识别,识别出哪些数据是敏感数据,哪些数据是不用关心的数据;
统计结果打印模块实现了针对目标驱动和硬件监测的结果进行统计、归类定性;
该linux内核动态监控模块用于根据目标驱动程序及硬件使用的物理地址,重新申请、映射出虚拟地址,此外linux内核动态监控模块还实现了定时内核打印、ioctl封装主动访问接口、敏感数据监控和时间统计。
2.如权利要求1所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,虚拟地址寄存器虚拟地址、命令虚拟地址和数据虚拟地址。
3.如权利要求1所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,用户交互访问模块的软件处理流程包括两个部分,分别是用户输入虚拟地址空间步骤和获取Linux内核动态监控模块数据步骤。
4.如权利要求3所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,用户输入虚拟地址空间步骤包括:
步骤A1:根据dmesg日志读取目标驱动程序及硬件的虚拟地址,得到的虚拟地址空间的首地址和大小;
步骤A2:通过用户交互访问接口输入步骤A1得到的虚拟地址空间的首地址和大小;
步骤A3:用户交互访问模块的软件将输入的虚拟地址空间的首地址和大小通过linux内核的VFS虚拟文件系统的ioctl接口输入到linux内核动态监控模块里。
5.如权利要求4所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,获取Linux内核动态监控模块数据步骤包括:
步骤B1:通过linux内核VFS虚拟文件系统提供的ioctl、open、close、write、read接口,读取到linux内核动态监控模块的数据,进入步骤B2;
步骤B2:将读取到的linux内核动态监控模块监控到的数据进行数据标记,识别出linux内核动态监控模块所监控的目标驱动程序及硬件,并且进行数据标记,进入步骤B3;
步骤B3:将标记的数据,存到本地文件系统中,实现数据记录功能,进入步骤B4;
步骤B4:上报数据到用户交互访问模块的前端运行程序或者监控运行程序中。
6.如权利要求5所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,敏感数据打印模块的软件处理流程包括:
步骤C1:通过步骤B3所完成的数据记录,获取到数据;以及通过linux内核VFS虚拟文件系统提供的ioctl、open、close、write、read接口,读取到linux内核动态监控模块的数据,进入步骤C2;
步骤C2:遍历、查询步骤C1获取的数据,查询是否有目标驱动程序及硬件的敏感数据,如果有则进入步骤C3,没有则忽略;
步骤C3:遍历、查询步骤C1获取的数据,查询是否有所需的敏感数据,如果有则进入步骤C4,没有则忽略;
步骤C4:打印出敏感数据。
7.如权利要求6所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,统计结果打印模块的软件处理流程包括:
步骤D1:获取步骤C1得到的数据,进入步骤D2;
步骤D2:遍历、统计该数据中的数据分类和模块分类,进入D3;
步骤D3:生成数据分类统计日志和模块分类统计日志,进入步骤D4;
步骤D4:读取步骤D3生成的数据分类统计日志和模块分类统计日志,并且打印。
8.如权利要求4-7任一项所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,Linux内核动态监控模块的软件处理流程包括:
步骤E1:通过步骤A3得到虚拟地址空间首地址和大小,通过linux内核函数virt_to_phys获取到目标驱动程序及硬件物理地址,进入步骤E2;
步骤E2:根据步骤E1得到的目标驱动程序及硬件的物理地址,重新申请虚拟地址空间与之映射,进入步骤E3;
步骤E3:将步骤E2中申请到的虚拟地址空间,识别定义出寄存器虚拟地址空间、命令虚拟地址空间、数据虚拟地址空间;
步骤E4:用户层的用户交互访问模块软件、敏感数据打印模块软件和统计结果打印模块软件通过linux内核的VFS虚拟文件系统的write和read接口,分别实现针对linux内核动态监控模块的写入和读取功能,针对linux内核动态监控模块的写入功能进入步骤E5,针对linux内核动态监控模块的读取功能进入步骤E8;
步骤E5:在Linux内核动态监控模块调用设置命令或者数据的Linux内核模块中的设置命令的专用功能函数和设置数据的专用功能函数,通过copy_form_user函数获取到需要设置的命令或者数据,并且将获取到的命令或者数据进行固定结构的格式化;
Linux内核动态监控模块通过Linux内核模块中设置命令的专用功能函数所设置的固定结构的命令格式中,偏移地址0x00的32bit区域是目标驱动程序及硬件命令编号ID,该命令编号ID是将所有命令进行编号后分配的编号;移地址0x04的32bit区域是目标驱动程序及硬件命令区,是目标驱动程序及硬件使用的命令;移地址0x08和0x0C的32bit区域是目标驱动程序及硬件命令扩展区,是命令格式的扩展区0和扩展区1;
Linux内核动态监控模块通过Linux内核模块中设置数据的专用功能函数所设置的固定结构的数据格式;偏移地址0x00的32bit区域是目标驱动程序及硬件数据编号ID,该数据编号ID是将所有通信数据类型进行编号后分配的编号;偏移地址0x04和0x08的32bit区域是目标驱动程序及硬件所使用的虚拟地址首地址低32bit和高32bit区,存储目标驱动程序及硬件数据所使用的虚拟地址首地址;偏移地址0x0C的32bit区域是目标驱动程序及硬件所使用的虚拟地址首地址的空间大小;
该步骤E5所设置的命令和数据是目标驱动程序及硬件与其对应的用户态应用程序之间进行通信的命令与数据,进入E6;
步骤E6:Linux内核动态监控模块读取Linux内核动态监控模块在步骤E2中所重新申请的命令虚拟地址和数据虚拟地址,将读取到的数据与步骤E5设置的监控命令和数据进行比对,判断是否是需要监控的数据,如是进入步骤E7;否则忽略;
步骤E7:将步骤E6的数据打印;
步骤E8:通过linux内核动态监控模块在步骤E3中得到的寄存器虚拟地址、命令虚拟地址和数据虚拟地址,读取到对应的寄存器信息、命令信息和数据信息。
9.如权利要求8所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,所述步骤E6中,linux内核动态监控模块设置内核定时,实现定时读取寄存器虚拟地址,进入步骤E7。
10.如权利要求1所述的基于飞腾处理器的动态监控驱动程序及硬件的方法,其特征在于,该方法用于调试FT2500服务器平台插载基于FPGA实现PCIe接口的定制加、解密功能的板卡所发生在高速传输数据时产生的错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311099218.2A CN117112458A (zh) | 2023-08-29 | 2023-08-29 | 一种基于飞腾处理器的动态监控驱动程序及硬件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311099218.2A CN117112458A (zh) | 2023-08-29 | 2023-08-29 | 一种基于飞腾处理器的动态监控驱动程序及硬件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117112458A true CN117112458A (zh) | 2023-11-24 |
Family
ID=88807285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311099218.2A Pending CN117112458A (zh) | 2023-08-29 | 2023-08-29 | 一种基于飞腾处理器的动态监控驱动程序及硬件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112458A (zh) |
-
2023
- 2023-08-29 CN CN202311099218.2A patent/CN117112458A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7150006B2 (en) | Techniques for managed code debugging | |
CN100449477C (zh) | 用于嵌入式系统的实时调试器接口 | |
US5771385A (en) | Setting and getting system debug flags by name at runtime | |
US8051409B1 (en) | Monitoring memory accesses for multiple computer processes | |
CN102955737B (zh) | 异构处理器体系的程序调试方法和系统 | |
US20050050389A1 (en) | Method of and apparatus for cross-platform core dumping during dynamic binary translation | |
US7558724B2 (en) | Operation region describing a virtual device | |
US20020170034A1 (en) | Method for debugging a dynamic program compiler, interpreter, or optimizer | |
CN102117241A (zh) | 一种多核系统调试方法和多核系统 | |
US5802347A (en) | Emulator with function for detecting illegal access to special function register | |
CN100444127C (zh) | 软件测试系统和软件测试方法 | |
US20030221035A1 (en) | CPU life-extension apparatus and method | |
CN112631893A (zh) | 面向异构平台的多层次存储结构内存检测方法 | |
US20060277371A1 (en) | System and method to instrument references to shared memory | |
CN115935631A (zh) | 用于车机设备的测试系统和方法、存储介质 | |
US20050204345A1 (en) | Method and apparatus for monitoring computer software | |
US5717956A (en) | System for batch processing of commands by emulating command string and record format if the string detector detects command is of a specified command string | |
US5185745A (en) | Scan path diagnostic method | |
US5701486A (en) | Tracing technique for application programs using protect mode addressing | |
Sun et al. | HAIL: a language for easy and correct device access | |
CN101095119B (zh) | 用于分析具有测试接口的嵌入式系统的装置和方法 | |
US6751752B1 (en) | Checking events generated by a device | |
CN117112458A (zh) | 一种基于飞腾处理器的动态监控驱动程序及硬件的方法 | |
CN116662134A (zh) | 一种基于eBPF的Linux内核性能追踪工具 | |
CN101650688B (zh) | 一种访问vm_io地址空间的方法和用户态调试器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |