(在Linux内核中,也有其他函数同样可以实现中断号的映射功能,比如platform_get_irq_byname,不过最终调用到的函数都是一样的,所以在这里我们就以 irq_of_parse_and_map 为例来进行分析就可以了) 4.2.1、映射入口函数irq_of_parse_and_map 函数原型:unsigned int irq_of_parse_and_map(struct device_node *dev,...
platform_get_irq_byname--获取rx和tx中断。 devm_request_threaded_irq--注册rx和tx中断。 stm32_ipcc_rx_irq--A7 IPCC接收中断处理函数。 mbox_chan_received_data--调用Mailbox Client的rx_callback函数进行处理,即stm32_rproc_mb_callback。 stm32_ipcc_tx_irq--A7 IPCC发送中断处理函数。 mbox_chan_tx...
struct resource * platform_get_resource_byname(struct platform_device * dev,unsigned int type,const char * name); // 通过编号获取中断资源 int platform_get_irq(struct platform_device * dev,unsigned int num); // 通过名称获取中断资源 int platform_get_irq_byname(struct platform_device * dev,con...
int platform_get_irq(struct platform_device *dev, unsigned int num) 返回该 dev 所用的第几个(num)中断: int platform_get_irq(struct platform_device *dev, unsigned int num) 通过名字(name)返回该dev 的某类型(type)资源: struct resource *platform_get_resource_byname(struct platform_device *dev,...
接下来来看platform_driver结构体的原型定义,在include/linux/platform_device.h中,代码如下: 55 struct platform_driver {//提供了设备的具体操作方法,如probe、remove等。 56 int (*probe)(struct platform_device *); 57 int (*remove)(struct platform_device *); ...
platform_device_register、platform_device_unregister,Platform设备的注册/注销接口,和底层的device_register等接口类似。 arch_setup_pdev_archdata,设置platform_device变量中的archdata指针。 platform_get_resource、platform_get_irq、platform_get_resource_byname、platform_get_irq_byname,通过这些接口,可以获取platform...
unsigned long flags; //定义资源的类型,比如MEM,IO,IRQ,DMA类型 struct resource *parent, *sibling, *child; //资源链表指针 }; 通过调用函数platform_add_devices()向系统中添加该设备了,该函数内部调用platform_device_register( )进行设备注册。要注意的是,这里的platform_device设备的注册过程必须在相应设备驱...
struct resource * platform_get_resource(struct platform_device *dev, unsigned int type, unsigned int num); 根据参数type所指定类型,例如IORESOURCE_MEM,来获取指定的资源。 struct int platform_get_irq(struct platform_device *dev, unsigned int num); ...
externintplatform_get_irq_byname(structplatform_device*,char*); externintplatform_add_devices(structplatform_device**,int); externstructplatform_device*platform_device_register_simple(char*,unsignedint,structresource*,unsignedint); externstructplatform_device*platform_device_alloc(constchar*name,unsignedint...
概括来说,Platform设备包括:基于端口的设备(已不推荐使用,保留下来只为兼容旧设备,legacy);连接物理总线的桥设备;集成在SOC平台上面的控制器;连接在其它bus上的设备(很少见)。等等。 这些设备有一个基本的特征:可以通过CPU bus直接寻址(例如在嵌入式系统常见的“寄存器”)。因此,由于这个共性,内核在设备模型的基础上...