
Linux内核程序设计
文章平均质量分 85
Linux内核程序设计
IT_Beijing_BIT
IT老兵
展开
-
如何编写Linux PCIe设备驱动器 之二
MSI事务的请求者必须将事务描述符的 No Snoop 和 Relaxed Ordering 属性设置为 0b。如果启用了 IDO 属性的使用,则允许 MSI事务的请求者设置基于 ID 的排序(IDO)属性。所有能够生成中断的 PCIe设备功能必须支持 MSI。实现 MSI 的传统端点需要支持 MSI 功能结构的 32 位或 64 位消息地址版本。实现 MSI 的 PCIe端点需要支持 MSI 功能结构的 64 位消息地址版本。在PCI功能结构的PCIe功能ID具有下列的值。读PCIe读请求大小代码。原创 2024-09-09 01:33:18 · 796 阅读 · 0 评论 -
如何编写Linux PCI设备驱动器 之一
PCI总线通过使用比ISA更高的时钟速率来实现更好的性能;它是时钟运行在 25 或 33 MHz,并且最近还部署了 66 MHz 甚至 133 MHz 实施方案。而且,它配备了32位数据总线,并已扩展了64位包含在规范中。PCI总线是一种独立于平台的计算机总线,这是 PCI 的一个特别重要的特性。PC 世界一直由处理器特定的接口标准主导。目前 PCI广泛用于不同的平台,比如,X86、ARM、Alpha、PowerPC,以及其他一些平台。PCI 设备是无跳线的。原创 2024-09-07 03:30:33 · 1130 阅读 · 0 评论 -
缓冲区共享和同步dma_buf 之二
可以使用作为一个sync_file的dma-buf 文件描述符, 执行 DMA_BUF_IOCTL_EXPORT_SYNC_FILE,以获得当前围栏集。在访问映射之前,客户端必须使用 DMA_BUF_SYNC_START 和适当的读/写标志调用 DMA_BUF_IOCTL_SYNC。为实现与其他 dma-buf 使用者的隐式同步,用户空间可以执行 DMA_BUF_IOCTL_IMPORT_SYNC_FILE 将sync_file 插入到 dma-buf 中。将sync_file插入到dma-buf中。原创 2024-07-13 13:01:31 · 1491 阅读 · 0 评论 -
缓冲区共享和同步dma_buf 之一
dma-buf 子系统提供了用于跨多个设备驱动程序和子系统共享硬件 (DMA) 访问缓冲区以及同步异步硬件访问的框架。原创 2024-07-13 10:08:29 · 2030 阅读 · 0 评论 -
Linux设备驱动器 之二 线程同步第二篇
Linux APIs在Linux驱动器中的应用NXP freescale系列QSPI 驱动器变量定义初始化存取数据如果有大块数据,使用AHB总线,通过存取映射的存储器,存取数据。semaphore数据结构Linux APIs在Linux驱动器中的应用ELAN 的 Uxxx 系列驱动器ELAN 的 Uxxx 系列适配器是 USB 转 PCMCIA CardBus 适配器初始化usb_set_intfdata将FTDI的驱动器数据写入驱动器的数据结构变量中。在需要的生活可原创 2024-07-11 13:56:13 · 444 阅读 · 0 评论 -
Linux设备驱动器 之二 线程同步第一篇
在结构中,定义两个completion 变量,dma_rx_completion 和 dma_tx_completion。......原创 2024-07-11 09:11:49 · 350 阅读 · 0 评论 -
Linux设备驱动器 之一 工作(worker)线程
kthread_create_worker产生一个struct kthread_create_info变量,并将这个变量加入到一个待产生线程链表中,这个链表的表头是kthread_create_list。spi_init_queue调用kthread_create_worker,kthread_init_work, 去产生SPI任务工作线程,细节见下面的代码段。它检查这个任务线程的任务工作链表,如果非空,那么就从任务工作链表上取下一个任务工作 并运行它的回调函数。例如,当任务工作线程停止并再次启动时。原创 2024-07-08 09:32:06 · 986 阅读 · 0 评论 -
Linux UIO 工控设备与用户空间IO
UIO一级目录二级目录三级目录一级目录二级目录三级目录原创 2022-05-27 23:53:07 · 658 阅读 · 0 评论 -
USB串行口Linux驱动器
USB Linux驱动器serial登记驱动器登记USB驱动器登记USB_SERIAL驱动器匹配二级目录三级目录serial登记驱动器static int __init ir_init(void){…return usb_serial_register_drivers(serial_drivers, KBUILD_MODNAME, ir_id_table);}static const struct usb_device_id ir_id_table[] = {{ USB_DEVICE(0x原创 2022-01-24 04:24:32 · 1322 阅读 · 0 评论 -
Linux设备树
Linux设备树一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-31 06:17:37 · 347 阅读 · 0 评论 -
Linux驱动器中断服务程序技巧softirq/tasklet/workq
softirq/tasklet/workq一级目录二级目录三级目录)一级目录二级目录三级目录一级目录二级目录三级目录)一级目录二级目录三级目录原创 2021-07-22 09:38:38 · 864 阅读 · 3 评论 -
缓存应用与系统性能
缓存应用与系统性能缓存硬件缓存软件缓存MMU与翻译查表缓存二级目录三级目录缓存硬件缓存软件缓存MMU与翻译查表缓存二级目录三级目录原创 2021-06-18 08:55:29 · 338 阅读 · 0 评论