xenomai驱动开发-RTDM设备驱动-PCI驱动分析
- 获取PCI设备的所有权(按供应商id/设备id对)
- 设置中断回调设置中断回调
- 注册RTDM设备驱动
- • The RTDM device structure references the driver structure:
- # Create a POSIX-Compatible Clock
设备驱动程序和实时驱动程序模型
• RTDM: unified interface for users and developers of RT drivers
• Adopted as the Xenomai driver programming interface
• Also used by the Real Time Application Interface (RTAI)
• Politecnico de Milano, Italy
• RTDM devices are found under /dev/rtdm
• Register IRQ handler functions
• Register devices (open / close / read / write / ioctl / select etc.)
典型用例–PCI设备
获取PCI设备的所有权(按供应商id/设备id对)
点击查看代码
pci_enable_device( pci_dev *dev )
pci_request_regions( pci_dev *dev, const char *res_name )
pci_resource_start( pci_dev *dev, int bar ) // base address register
pci_ioremap_bar( pci_dev *dev, int bar )
设置中断回调设置中断回调
点击查看代码
rtdm_irq_request( …. dev->irq, rtdm_irq_handler_t handler …. )
注册RTDM设备驱动
点击查看代码
fpga_class = class_create( THIS_MODULE, “fpga” )
rtdm_drv_set_sysclass( &fpga_driver, fpga_class )
rtdm_dev_register( &fpga_device )
• The RTDM device structure references the driver structure:
点击查看代码
struct rtdm_device fpga_device = {
.driver = &fpga_driver
.label = “fpga/control”
}
# Create a POSIX-Compatible Clock
Populate xnclock struct, including operations for:
read_raw (hardware ticks) and read_monotonic (nanoseconds)
set_time (given current time in nanoseconds)
ns_to_ticks, ticks_to_ns, and ticks_to_ns_rounded
program_local_shot, program_remote_shot (to set interrupt time)
Call xnclock_tick(struct xnclock *clock) from interrupt handler
Register with cobalt_clock_register(struct xnclock *clock, …. )
Returns POSIX clockid_t
Use clockid_t for timer_create, timer_settime, clock_nanosleep, …
本文来自博客园,作者:相对维度,转载请注明原文链接:https://www.cnblogs.com/wangjirui/p/16493160.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库