linux dts与调用函数对应关系

uart0: uart0@1F221000 {
            compatible = "sstar,uart";
            reg = <0x1F221000 0x100>;
            interrupts = <GIC_SPI INT_IRQ_UART_0 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&CLK_uart0>;
            status = "ok";
        };

获取reg,即内存的起始地址与范围

 platform_get_resource(pdev, IORESOURCE_MEM, 0);

获取interrupts

platform_get_resource(pdev, IORESOURCE_IRQ, 0);

获取clocks

of_clk_get(pdev->dev.of_node, 0);

dts 文件会将解析的文件的reg和interrupts转化到对应的struct resource。

其它获取的办法,通过 of_property_read_u32(pdev->dev.of_node, "dma", &mp->use_dma); 这类方法去获取dts文件内容。

解析dts的开始位置

init/main.c ->setup_arch(&command_line);

           arch/arm/kernel/setup.c    void __init setup_arch(char **cmdline_p)  -> setup_machine_fdt();

 

 platform_get_resource(pdev, IORESOURCE_MEM, 0);

posted @   cogitoergosum  阅读(221)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2020-03-06 qt5 安装 qtserailport
2020-03-06 centos 查看缺失包
点击右上角即可分享
微信分享提示