- 博客(77)
- 资源 (9)
- 问答 (2)
- 收藏
- 关注
原创 WdfInterruptQueueDpcForIsr 和WdfDpcEnqueue 有何区别?
都与 DPC(Deferred Procedure Call,延迟过程调用)相关,但它们在用途和调用时机上有一些区别。则是在其他上下文中推迟执行 DPC 函数的通用函数。在中断服务例程中通常使用前者,而在其他上下文中使用后者。是用于在中断上下文中推迟执行 DPC 函数的专用函数,而。
2024-01-10 20:00:00 423
原创 EVT_WDF_DEVICE_PREPARE_HARDWARE API
翻译后的资源列表表示设备在系统中实际使用的资源,经过了操作系统的翻译和重映射。ResourceXlated中也有同样的IRQ,这是经过oS翻译后映射的,也是OS实际使用的IRQ,是Vector,中断向量。反映了实际运行时使用的资源,通常驱动程序会更关心这个列表,因为它反映了系统在运行时为设备提供的实际硬件资源。回调函数中,驱动程序通常需要检查并使用这两个资源列表中的信息来配置设备,准备设备在系统中的运行环境。此处显示的值为ResourceRaw中的值,是真实的硬件IRQ,没有经过OS翻译映射的。
2023-12-08 20:15:00 381
原创 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 104
原创 Makefile讲解
这个 Makefile 主要用于构建 C++ 项目,它定义了编译器选项、源文件列表、目标文件列表,并提供了构建和清理的规则。时,Make 将尝试根据这个规则来生成所有的目标文件。这是一个简单的 Makefile,用于构建一个名为。在这里为空,表示没有额外的链接选项。规则,用于清理生成的目标文件和可执行文件。定义了一个规则,说明如何构建目标文件。时,Make 将删除所有的目标文件和。构建目标文件的命令。表示规则中的第一个依赖(源文件),文件生成对应的目标文件。中列出的所有目标文件。
2023-11-27 20:45:00 152
原创 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 298
原创 Gdb调试
1 概述当程序运行时出现问题时,通过GDB调试可以快速找到问题点,当然不是所有问题都能通过调试找到问题点。在GCC编译程序时,需要加 -g参数,可以通过在-g选项后附加数字1、2或3来指定在代码中加入调试信息的多少。默认的级别是2(-g2),此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。级别3(-g3)包含级别2中的所有调试信息,以及源代码中定义的宏。级别1(-g1)不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储之用。
2023-10-26 20:00:00 221
原创 socket can应用程序在发送时,怎么控制是标准帧还是扩展帧?
的最高位是帧类型位,如果该位为0,则表示标准帧;如果为1,则表示扩展帧。在实际应用中,你可以根据需要设置不同的标识符和帧类型。在SocketCAN应用程序中,你可以通过设置。字段的高位包含帧类型和标识符位。,这表示这是一个扩展帧。字段来控制是标准帧还是扩展帧。
2023-10-19 20:00:00 502
原创 socket can程序中,关闭loop back的数据
在SocketCAN中,可以通过设置套接字选项来控制是否启用回环(loopback)模式。回环模式允许发送的数据立即被本地接收,用于自我测试或调试。关闭回环模式的方法是在套接字上设置。
2023-10-16 20:30:00 288
原创 Makefile 中一些常用语法讲解
整个命令的目的是在执行 make 命令时,检查系统中是否已经加载了名为 "advsocketcan" 的内核模块,如果已经加载,则使用。这是一个在 Makefile 中使用的 GNU Make 扩展语法,用于检查目录是否存在,如果不存在则创建目录。这样的操作通常用于确保在重新安装或编译时,先卸载已加载的模块,以便重新加载新的模块。:这个命令用于生成模块依赖关系,通常在安装新的内核模块后运行,以确保内核正确识别和加载模块。这个路径是一个常见的默认路径,通常包含与当前运行的内核版本匹配的头文件和配置信息。
2023-10-10 20:00:00 261
原创 socket can查看详细信息 命令 ip -details -statistics link show can0
socket can查看详细信息 命令 ip -details -statistics link show can0
2023-10-09 21:30:00 366
原创 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 2576
原创 can除了raw protocol之外,还有什么协议?
CAN(Controller Area Network)除了原始协议(Raw Protocol)之外,还有一些高层次的协议和通信标准,这些协议在CAN基础上添加了更多的功能和特性,使其更适合不同的应用场景。这些高层次的CAN协议扩展了CAN的功能,使其适用于不同的领域和应用,同时提供了更多的通信选项和标准化的方式。:CAN Kingdom协议通常在国防和航空航天领域使用,实现这些协议通常需要符合相关标准和规范,并且可能需要专门的硬件和软件支持。Linux下有实现上述许多高层次的CAN协议的软件库和工具。
2023-09-13 21:00:00 137
原创 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 206
原创 SocketCan中接收和发送默认的阻塞和非阻塞类型说明
接收(读取)操作:默认情况下,当你使用SocketCAN套接字进行数据接收(例如,使用read函数),如果没有数据可用,读取操作将会阻塞,直到有数据到达为止。这是为了确保接收到来自CAN总线的实时数据。总之,在SocketCAN中,默认情况下,接收操作是阻塞的,而发送操作是非阻塞的。你可以根据需要在代码中进一步控制这些操作的行为,例如,通过设置文件描述符为非阻塞模式来实现非阻塞的读取操作。在SocketCAN中,默认情况下,读取(receive)操作是阻塞的,但发送(send)操作是非阻塞的。
2023-09-08 23:00:00 730
原创 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 1397
原创 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 715
原创 linux下使用C代码通过一个设备的vend id和dev id找到它的BAR3地址?
【代码】linux下使用C代码通过一个设备的vend id和dev id找到它的BAR3地址?
2023-08-18 10:51:04 126
原创 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 464
原创 Linux 模块管理方法之 DKMS
从上面的分步操作中可以看到基于 DKMS 编译、安装模块的几个步骤:ADD、BUILD、INSTALL。但是上面介绍的命令并不具备产品发布能力,因为总不能全部手动操作吧。所以 DKMS 具备产出 deb/rpm 包的能力。以 deb 包为例,DKMS 产出 deb 包后,通过。
2022-09-20 20:30:00 2828
原创 Linux驱动开发中MODULE_DEVICE_TABLE的用法
内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcimap中,当depmod结束之后,所有的PCI设备连同他们的模块名字都被该文件列出。一是:将设备加入到外设队列中,二是告诉程序阅读者该设备是热插拔设备或是说该设备支持热插拔功能。这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为。
2022-09-08 15:14:42 232
原创 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 1155
原创 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 1259
原创 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 1683
原创 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 387
原创 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 2914
原创 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 122
原创 关于socket can的linux官方文档资料
SocketCAN - Controller Area Network — The Linux Kernel documentation
2022-04-11 14:31:55 103
原创 VS2010/VS 2008 代码界面设置护眼色豆沙绿
Tools-->Options-->Fonts and colors-->Item background-->Custom色调:84 饱和度:91 亮度:205
2022-04-11 13:43:34 1357
转载 关于结构体、联合体大小的计算
关于结构体、联合体大小的计算_-子木的博客-CSDN博客_联合体大小https://blog.csdn.net/qq_29775205/article/details/86538154
2022-04-07 15:06:46 71
原创 socket can 应用程序如何检测Can 总线BUS-OFF
1.什么是BUS-OFF?当CAN控制器发生错误的次数超过255次,就会触发BUS-OFF错误。一般发生BUS-OFF的条件是CAN总线受周围环境干扰,导致CAN发送端发送到总线的数据被BUS总线判断为异常,但异常的次数超过255次,BUS总线自动设置为BUS-OFF状态,此时总线处于忙的状态,数据无法发送,也无法接收。2.如何检测BUS-OFF?下面以CAN发送数据为例,介绍如何检测BUS-OFF错误状态。structcan_frameframesend={...
2022-04-02 11:31:19 833
原创 Linux下socketCan的使用的一些命令
STM32之CAN---错误管理分析 牛人博客http://blog.csdn.net/flydream0/article/details/8161418CAN总线在嵌入式Linux下驱动程序的实现http://www.21ic.com/app/embed/200911/49216.htmSocke Can设置波特率找到其中一个方法使用IP命令,BUSYBOX制作的IP好像不支持对socketcan的设置,必须要自己去下载iproute2的源代码自己编译。得到IP命令...
2022-04-02 10:16:36 918
原创 编译linux内核的方法
Linux内核编译安装删除Linux内核编译安装删除 - hgod - 博客园 (cnblogs.com)linux编译内核后无法启动,error:could't find suitable memory target 的解决办法http://dljz.nicethemes.cn/news/show-2007.htmlerror:could't find suitable memory target 这个错误提示主要是因为 编译后产生的initrd.img太大,因为加入了太多调试信息,进入到li
2022-03-28 17:24:05 1451
原创 VM Ware与实体机之间共享文件夹
在上面路径添加共享路径,然后进Vm ware虚拟机。cd 到如下路径:cd /mnt/hgfs就可以看到你的共享文件夹了~~
2022-03-25 15:48:21 616
原创 Xshell 远程连接Ubuntu显示错误Network error Connection refused解决方法
Xshell 远程连接Ubuntu显示错误Network error Connection refused解决方法:sudoapt-get install openssh-server
2022-03-25 11:49:58 321
原创 ubuntu Ubuntu 20.04 禁止内核自动更新
# apt-mark hold linux-image-5.4.0-70-genericlinux-image-5.4.0-70-generic set on hold.# apt-mark hold linux-headers-5.4.0-70-genericlinux-headers-5.4.0-70-generic set on hold.# apt-mark hold linux-modules-extra-5.4.0-70-genericlinux-modules-ex
2022-03-25 10:18:51 409
样条插值的代码,比如三次样条插值或者是B样条插值C/C++
2018-10-11
socket 编程问题(C语言)
2014-07-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人