提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
—如果做嵌入式linux驱动开发就避不开设备树概念。设备树就是一个告诉内核有哪些设备的一个文件。
提示:以下是本篇文章正文内容,下面案例可供参考
一、设备树是什么?
设备树就是一个告诉内核板子上有哪些设备的一个文件。
二、它的要点
- 它的后缀名是.dts
- 一个板子对应一个.dts文件
三、DTS、DTB和DTC的关系
.dts相当于.c就是源码文件。
DTC工具相当于gcc编译器,将dts文件编译成dtb文件
dtb相当于bin文件或可执行文件。
通过
make dtb
编译所有的dts文件
通过
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10
编译成特定的.dtb文件
四、DTS基本语法
- 设备树也有头文件,它的后缀是dtsi。可以将一款SOC他的所有设备/平台的共有信息提出来,作为一个通用的.dtsi文件。
- &这个符号是追加的意思
/*
* CAUTION: This file is automatically generated by Xilinx.
* Version:
* Today is: Sat Apr 2 06:21:04 2022
*/
//版本1的意思
/dts-v1/;
//包含共有的dtsi头文件
#include "zynq-7000.dtsi"
#include "pl.dtsi"
#include "pcw.dtsi"
/ {
//属性
model = "Alientek ZYNQ Development";
//1级子节点
chosen {
bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait";
stdout-path = "serial0:115200n8";
};
aliases {
ethernet0 = &gem0;
i2c0 = &i2c2;
i2c1 = &i2c0;
i2c2 = &i2c1;
serial0 = &uart0;
serial1 = &uart1;
spi0 = &qspi;
};
memory {
device_type = "memory";
reg = <0x0 0x20000000>;
};
};
// & 追加
&gem0{
local-mac-address = [00 0a 35 00 1e 53];
};
&qspi{
#address-cells = <1>;
#size-cells = <0>;
flash0: flash@0 {
compatible = "n25q512a","micron,m25p80";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
partition@0x00000000 {
label = "boot";
reg = <0x00000000 0x00500000>;
};
partition@0x00500000 {
label = "bootenv";
reg = <0x00500000 0x00020000>;
};
partition@0x00520000 {
label = "kernel";
reg = <0x00520000 0x00a80000>;
};
partition@0x00fa0000 {
label = "spare";
reg = <0x00fa0000 0x00000000>;
};
};
};
- 节点名字的要求
unit-address一般是外设寄存器的起始地址,有时候是I2C的设备地址 ,或者其他含义,具体节点具体分析。- intc:interrupt-controller@00a01000
冒号前面是标签label,后面才是名字。
引入标签的目的是为了方便访问节点
五、设备树在系统中的体现
- 系统启动以后可以在根文件系统里面看到设备树的节点信息。目录是/proc/device-tree cat命令可以查看属性信息
- 内核启动的时候会解析设备树,然后在/proc/device-tree/目录下呈现出来。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。