自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (9)
  • 问答 (2)
  • 收藏
  • 关注

原创 CAN设备的bit time或者bit rate的计算公式

CAN设备的bit time或者bit rate的计算公式

2024-05-16 19:45:00 131

原创 Windows驱动开发时的函数代码的内存分配位置

Windows驱动开发时的函数代码的内存分配位置

2024-05-16 19:30:00 345

原创 一种错误校正码(Error Correction Code, ECC)保护内存的方法

一种错误校正码(Error Correction Code, ECC)保护内存的方法

2024-05-16 19:30:00 348

原创 关于Windows驱动中DPC同步的一些见解说明

DPC的说明讲解

2024-05-11 19:30:00 164

原创 关于CAN控制器中的采样点由何决定?

通过调整这些相位段的长度,可以间接地调整采样点的位置。位时间=(传播段长度+相位段 1 长度+相位段 2 长度+1)×1CAN 控制器时钟频率位时间=(传播段长度+相位段 1 长度+相位段 2 长度+1)×1/CAN 控制器时钟频率1。假设 CAN 控制器的时钟频率为 40 MHz,相位段 1 的长度为 8 个时间单元(Tq),相位段 2 的长度为 4 个时间单元,传播段的长度为 4 个时间单元。采样点比例=相位段 1 长度+相位段 2 长度位时间采样点比例=位时间相位段 1 长度+相位段 2 长度​。

2024-04-01 21:45:00 422

原创 OutputDebugStringA格式化输出log

【代码】OutputDebugStringA格式化输出log。

2024-04-01 20:00:00 92

原创 WdfInterruptQueueDpcForIsr 和WdfDpcEnqueue 有何区别?

都与 DPC(Deferred Procedure Call,延迟过程调用)相关,但它们在用途和调用时机上有一些区别。则是在其他上下文中推迟执行 DPC 函数的通用函数。在中断服务例程中通常使用前者,而在其他上下文中使用后者。是用于在中断上下文中推迟执行 DPC 函数的专用函数,而。

2024-01-10 20:00:00 447

原创 EVT_WDF_DEVICE_PREPARE_HARDWARE API

翻译后的资源列表表示设备在系统中实际使用的资源,经过了操作系统的翻译和重映射。ResourceXlated中也有同样的IRQ,这是经过oS翻译后映射的,也是OS实际使用的IRQ,是Vector,中断向量。反映了实际运行时使用的资源,通常驱动程序会更关心这个列表,因为它反映了系统在运行时为设备提供的实际硬件资源。回调函数中,驱动程序通常需要检查并使用这两个资源列表中的信息来配置设备,准备设备在系统中的运行环境。此处显示的值为ResourceRaw中的值,是真实的硬件IRQ,没有经过OS翻译映射的。

2023-12-08 20:15:00 549

原创 windows系统中从驱动的PCM_PARTIAL_RESOURCE_DESCRIPTOR中获取的 res_desc->u.MessageInterrupt.Translated.Vector这个值,

windows系统中从驱动的PCM_PARTIAL_RESOURCE_DESCRIPTOR中获取的 res_desc->u.MessageInterrupt.Translated.Vector这个值,为何和设备管理器“资源”页签显示的IRQ的值不一样?设备管理器中显示的IRQ是操作系统为设备分配的逻辑IRQ,而不是物理IRQ。在设备管理器中显示的IRQ通常是逻辑IRQ,而驱动程序中获取的是中断向量,它们之间可能存在映射关系。然而,设备管理器中显示的IRQ可能与这个值不同,这是因为这两者涉及到了不同的概念。

2023-12-08 20:00:00 206

原创 Makefile讲解

这个 Makefile 主要用于构建 C++ 项目,它定义了编译器选项、源文件列表、目标文件列表,并提供了构建和清理的规则。时,Make 将尝试根据这个规则来生成所有的目标文件。这是一个简单的 Makefile,用于构建一个名为。在这里为空,表示没有额外的链接选项。规则,用于清理生成的目标文件和可执行文件。定义了一个规则,说明如何构建目标文件。时,Make 将删除所有的目标文件和。构建目标文件的命令。表示规则中的第一个依赖(源文件),文件生成对应的目标文件。中列出的所有目标文件。

2023-11-27 20:45:00 368

原创 CAN FD设置bitrate dbitrate的方法及各字段意义

这个命令设置了 CAN 接口的基本参数,包括位率、数据位率和是否启用 FD 模式。在实际使用中,你可能需要根据你的 CAN 控制器和网络规格进行调整。这通常是指 FD(Flexible Data-rate)模式下的数据位率。FD 模式允许在 CAN 总线上传输数据的速率与控制信号的速率不同,以提高数据传输效率。命令设置 CAN(Controller Area Network) 接口的命令。:设置位率为 1000000 比特每秒(1 Mbps)。这是 CAN 总线的传输速率。是指 CAN 接口的名称,例如。

2023-11-24 20:15:00 197

原创 socket can中是如何根据 结构体can_bittiming_const中的字段 计算bitrate的?

因为SocketCAN driver自身架构的原因,我们的driver并不会直接计算通讯速率相关的参数,而是由协议层根据我们driver提供的相关参数(时钟频率,TSEG 最大最小值等)的信息,以及APP 需要的baudrate,计算出最终的通讯参数(BRP,TSEG1,TSEG2,SJW)并设置这些标准通讯参数到driver。另外,如果简单的从上面的原因分析,貌似我们可以通过调整driver 提供给协议层的相关参数常量的最大/最小值来达成baudrate的限制。这里是一个简化的例子,演示了如何使用。

2023-11-24 20:00:00 1002

原创 Windows下格式化打印64位整形

Windows下格式化打印64位整形。

2023-11-01 20:45:00 61

原创 Gdb调试

1 概述当程序运行时出现问题时,通过GDB调试可以快速找到问题点,当然不是所有问题都能通过调试找到问题点。在GCC编译程序时,需要加 -g参数,可以通过在-g选项后附加数字1、2或3来指定在代码中加入调试信息的多少。默认的级别是2(-g2),此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。级别3(-g3)包含级别2中的所有调试信息,以及源代码中定义的宏。级别1(-g1)不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储之用。

2023-10-26 20:00:00 232

原创 socket can应用程序在发送时,怎么控制是标准帧还是扩展帧?

的最高位是帧类型位,如果该位为0,则表示标准帧;如果为1,则表示扩展帧。在实际应用中,你可以根据需要设置不同的标识符和帧类型。在SocketCAN应用程序中,你可以通过设置。字段的高位包含帧类型和标识符位。,这表示这是一个扩展帧。字段来控制是标准帧还是扩展帧。

2023-10-19 20:00:00 676

原创 socket can程序中,关闭loop back的数据

在SocketCAN中,可以通过设置套接字选项来控制是否启用回环(loopback)模式。回环模式允许发送的数据立即被本地接收,用于自我测试或调试。关闭回环模式的方法是在套接字上设置。

2023-10-16 20:30:00 370

原创 Makefile 中一些常用语法讲解

整个命令的目的是在执行 make 命令时,检查系统中是否已经加载了名为 "advsocketcan" 的内核模块,如果已经加载,则使用。这是一个在 Makefile 中使用的 GNU Make 扩展语法,用于检查目录是否存在,如果不存在则创建目录。这样的操作通常用于确保在重新安装或编译时,先卸载已加载的模块,以便重新加载新的模块。:这个命令用于生成模块依赖关系,通常在安装新的内核模块后运行,以确保内核正确识别和加载模块。这个路径是一个常见的默认路径,通常包含与当前运行的内核版本匹配的头文件和配置信息。

2023-10-10 20:00:00 293

原创 socket can查看详细信息 命令 ip -details -statistics link show can0

socket can查看详细信息 命令 ip -details -statistics link show can0

2023-10-09 21:30:00 398

原创 CAN bus的状态

【代码】CAN bus的状态。

2023-10-09 20:30:00 124

原创 perf: interrupt took too long (4084 > 4061), lowering kernel.perf_event_max_sample_rate to 48750的原因

perf: interrupt took too long (4084 > 4061), lowering kernel.perf_event_max_sample_rate to 48750

2023-09-13 23:00:00 3558

原创 can除了raw protocol之外,还有什么协议?

CAN(Controller Area Network)除了原始协议(Raw Protocol)之外,还有一些高层次的协议和通信标准,这些协议在CAN基础上添加了更多的功能和特性,使其更适合不同的应用场景。这些高层次的CAN协议扩展了CAN的功能,使其适用于不同的领域和应用,同时提供了更多的通信选项和标准化的方式。:CAN Kingdom协议通常在国防和航空航天领域使用,实现这些协议通常需要符合相关标准和规范,并且可能需要专门的硬件和软件支持。Linux下有实现上述许多高层次的CAN协议的软件库和工具。

2023-09-13 21:00:00 166

原创 can: raw protocol是什么?

CAN(Controller Area Network)原始协议(raw protocol)是一种CAN总线通信协议,通常用于在CAN总线上直接发送和接收原始CAN帧(CAN消息)。需要注意的是,CAN原始协议可能需要更多的编程工作,因为它要求你自行处理CAN帧的构建和解析。相比之下,高层级的CAN协议,如CANopen或J1939,提供了更高级别的数据封装和解封装,以简化通信任务。:由于CAN原始协议的简洁性和直接性,它通常在嵌入式系统和实时控制应用中使用,以实现高性能和低延迟的通信。

2023-09-13 20:45:00 247

原创 SocketCan中接收和发送默认的阻塞和非阻塞类型说明

接收(读取)操作:默认情况下,当你使用SocketCAN套接字进行数据接收(例如,使用read函数),如果没有数据可用,读取操作将会阻塞,直到有数据到达为止。这是为了确保接收到来自CAN总线的实时数据。总之,在SocketCAN中,默认情况下,接收操作是阻塞的,而发送操作是非阻塞的。你可以根据需要在代码中进一步控制这些操作的行为,例如,通过设置文件描述符为非阻塞模式来实现非阻塞的读取操作。在SocketCAN中,默认情况下,读取(receive)操作是阻塞的,但发送(send)操作是非阻塞的。

2023-09-08 23:00:00 916

原创 Tortoise Git(乌龟git)常用命令总结

现在,你的 Git 仓库应该已经成功将远程仓库 URL 从 SSH 修改为 HTTPS。git如何修改 remote.origin.url由ssh到https。是指远程仓库的 URL,确保它没有指向 SSH URL。这将把远程仓库的 URL 修改为新的 HTTPS URL。确保显示的 URL 是你设置的新的 HTTPS URL。这将显示当前仓库的所有远程仓库信息,包括名称(通常是。等操作时,将使用 HTTPS 连接到远程仓库。使用以下命令来修改远程仓库的 URL。确保配置中没有任何与 SSH 相关的设置。

2023-08-29 21:30:00 1430

原创 linux下lspci查看到的设备的device name 0000:03:00.0中冒号分隔开的各数字表示的是什么?

表示 PCI 设备所在的 PCI 域(Domain),通常为一个 16 位的十六进制数,用于区分不同的 PCI 域。:表示 PCI 设备的功能(Function),通常为一个 3 位的十六进制数,用于区分同一插槽上的不同功能。:表示 PCI 设备所在的插槽(Slot),通常为一个 5 位的十六进制数,用于区分不同的插槽。:表示 PCI 设备所在的总线(Bus),通常为一个 8 位的十六进制数,用于区分不同的总线。请注意,这些数字可能会因系统配置而有所不同,具体取决于你的系统和相应的 PCI 设备。

2023-08-18 23:45:00 795

原创 linux下使用C代码通过一个设备的vend id和dev id找到它的BAR3地址?

【代码】linux下使用C代码通过一个设备的vend id和dev id找到它的BAR3地址?

2023-08-18 10:51:04 154

原创 根据device id找到一个机器上左右该id的设备的BAR

【代码】根据device id找到一个机器上左右该id的设备的BAR。

2023-08-18 10:32:56 3

转载 CAN相关 ip link 命令总结

ip link 命令总结_张太行_的博客-CSDN博客

2023-02-23 16:07:13 383

原创 PAGE_MASK

PAGE_MASK 实际是就是12(或13个)0,通常用来求得一个线性的页号。在这一句中,如果size4k但是小于8K,这里算的结果就是10,0000,0000,0000。所以这一句的作用就是根据size的大小,算的相应的整数页。如果size的大小小于一个页面的大小,就得到一个页,如果size的大小在一个页与两个页之间,就得到2个页,依次类推,分别是3个页,4个页等!最近看vmalloc源码是,发现有这么一句。

2022-09-20 21:00:00 500

原创 Linux 模块管理方法之 DKMS

从上面的分步操作中可以看到基于 DKMS 编译、安装模块的几个步骤:ADD、BUILD、INSTALL。但是上面介绍的命令并不具备产品发布能力,因为总不能全部手动操作吧。所以 DKMS 具备产出 deb/rpm 包的能力。以 deb 包为例,DKMS 产出 deb 包后,通过。

2022-09-20 20:30:00 3009

原创 Linux驱动开发中MODULE_DEVICE_TABLE的用法

内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcimap中,当depmod结束之后,所有的PCI设备连同他们的模块名字都被该文件列出。一是:将设备加入到外设队列中,二是告诉程序阅读者该设备是热插拔设备或是说该设备支持热插拔功能。这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为。

2022-09-08 15:14:42 253

原创 VS 编译时 /MD 与 /MT、/MTD与/MDD的区别

3、除了在是动、静态链接VC运行时库上有区别,另外的区别点在于,采用静态链接的方式将导致生成的目标模块拥有独立的堆栈空间,如果生成的是DLL,那意味着调用该DLL的EXE程序与该DLL有着不同的堆栈空间,如果发生了EXE拿到了在DLL中分配内存创建的对象,在EXE对其进行析构时,就会导致内存非法访问,出现类似于“ windows已在XX.exe中触发一个断点……所以,尽量不要使用 /MT与/MTD进行静态运行时库链接的方式,即使要使用,也一定要遵循“谁申请,谁释放”的原则。具体会导致的问题此处不做研究。

2022-09-02 11:47:31 1192

原创 CreateEvent 用法

CreateEvent的用法_Phenixyf的博客-CSDN博客_createevent

2022-09-01 10:28:51 182

原创 attempting to install new kernel, error modules.order & Makefile Error 2

Attempting to install a new kernel. once it is compiled, I enter:su -c "make modules_install install"this error populates :sed: can't read modules.order: No such file or directorymake[1]: *** [Makefile:1304: _modinst_] Error 2make: *** [Makefil

2022-04-15 15:35:03 1295

原创 make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”

make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”解决办法:(40条消息) make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”_飞云不坠的博客-CSDN博客_debian/canonical-certs.pem

2022-04-15 15:30:05 1765

原创 CAN-FD的两种应用,你了解多少?

CAN-FD的两种应用,你了解多少?CAN-FD(CAN with Flexible Data Rate)作为CAN协议(基于CAN2.0)的改进,它与CAN有什么样的区别呢?今日就和大家一起唠一下CAN-FD常见的一些应用。相比CAN协议,CAN-FD新增两个比较大的特性:1、 支持可变速率a) 仲裁段与标准CAN速率相同b) 数据段:速率最高可达8Mbit/s2、 支持更大的payload(数据长度)a) 帧的长度可达64字节从特性可以看出:CAN-FD的优势:...

2022-04-12 16:13:40 404

原创 linux查看寄存器值的工具busybox

使用命令如下:busybox devmem 0xaddress,其中0xaddress值为16进制值,查询出来的值要加“0x”使用 lspci 查询出对应设备的设备号。使用 lspci -vvvs deviceNumber 显示出设备的各种详细信息此处列出的是对应设备的三个BAR的地址,对应BAR0到BAR3注意这个是物理地址,相关工具访问时是访问物理地址(windows平台的RW-everything,linux平台的busybox都是传入物理地址访问,只是工具内部自己映射成虚地址访问去了

2022-04-12 11:01:00 2981

原创 socket can的linux官方资料文档

SocketCAN - Controller Area Network — The Linux Kernel documentationSocketCAN - Controller Area Network — The Linux Kernel documentationhttps://www.kernel.org/doc/html/latest/networking/can.html

2022-04-11 14:34:39 128

原创 关于socket can的linux官方文档资料

SocketCAN - Controller Area Network — The Linux Kernel documentation

2022-04-11 14:31:55 112

原创 VS2010/VS 2008 代码界面设置护眼色豆沙绿

Tools-->Options-->Fonts and colors-->Item background-->Custom色调:84 饱和度:91 亮度:205

2022-04-11 13:43:34 1415

Attestation Sign 驱动签名需要的 cabarc.exe 说明等

Attestation Sign 驱动签名需要的 cabarc.exe 说明等

2023-04-12

X86 Debuggers And Tools-x86_en-us WinDbg X86

X86 Debuggers And Tools-x86_en-us

2022-06-14

WinDbg X64 windows 版

WinDbg X64

2022-06-14

RW everything 32位

RW everything 32位

2022-02-25

Gitcraken app-6.3.1-32bit 可以打开多个工程

Gitcraken app-6.3.1-32bit 可以打开多个工程

2022-02-25

GitKrakenSetup-6.5.1.exe.zip

GitKrakenSetup-6.5.1,免费版,可以使用私有库

2021-11-09

DbgView.zip

适合开发人员查看应用程序日志,kernel层和应用层都可以用

2021-05-14

用类实现 元角分的加减

用类实现 元角分的加减,设计一个元角分,对其实现加减运算

2012-06-07

基于NCC的图像匹配快速算法.pdf

是一种很理想的立体匹配算法。通过它可以得到理想的匹配结果,大家可以学习一下!

2012-05-05

vc++6.0调试方法(附有快捷键)

学会调试,很有帮助,当我们在编程中学会debug后是对程序的运行有了明确的了解

2012-04-24

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

TA关注的人

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