linux dts与调用函数对应关系
uart0: uart0@1F221000 { compatible = "sstar,uart"; reg = <0x1F221000 0x100>; interrupts =; 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);