【设备树】设备树学习笔记

本文档是一个关于SAMSUNGSMDK2440板级设备树源码的示例,包含了GPIO定义、内存配置、启动参数以及LED节点的设置。其中,LED节点的`reg`属性用于指定GPIO引脚S3C2410_GPF(5)。该设备树将被编译进内核,影响内核中对应的设备节点创建。
摘要由CSDN通过智能技术生成

 

// SPDX-License-Identifier: GPL-2.0
/*
 * SAMSUNG SMDK2440 board device tree source
 *
 * Copyright (c) 2018 weidongshan@qq.com
 * dtc -I dtb -O dts -o jz2440.dts jz2440.dtb
 */
 
#define S3C2410_GPA(_nr)	((0<<16) + (_nr))
#define S3C2410_GPB(_nr)	((1<<16) + (_nr))
#define S3C2410_GPC(_nr)	((2<<16) + (_nr))
#define S3C2410_GPD(_nr)	((3<<16) + (_nr))
#define S3C2410_GPE(_nr)	((4<<16) + (_nr))
#define S3C2410_GPF(_nr)	((5<<16) + (_nr))
#define S3C2410_GPG(_nr)	((6<<16) + (_nr))
#define S3C2410_GPH(_nr)	((7<<16) + (_nr))
#define S3C2410_GPJ(_nr)	((8<<16) + (_nr))
#define S3C2410_GPK(_nr)	((9<<16) + (_nr))
#define S3C2410_GPL(_nr)	((10<<16) + (_nr))
#define S3C2410_GPM(_nr)	((11<<16) + (_nr))

/dts-v1/;

/ {
	model = "SMDK24440";
	compatible = "samsung,smdk2440";

	#address-cells = <1>;
	#size-cells = <1>;
		
	memory@30000000 {
		device_type = "memory";
		reg =  <0x30000000 0x4000000>;
	};
/*去掉不使用的源代码;每个设备使用';'隔开;
	cpus {
		cpu {
			compatible = "arm,arm926ej-s";
		};
	};
*/	
	chosen {
		bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
	};

/* led里面有两个属性:
 * compatible兼容的,内核将根据这个属性在内核里面找到支持这个节点的驱动/平台drv,
 * reg即寄存器,arm架构里寄存器与内存是被同样对待的,访问空间/方式几无差别,S3C2410_GPF(5)计算结果即高/低16bit都是5;
 *	reg本意是寄存器的地址,在此指定了 S3C2410_GPF(5) 的值是引脚,是我们定义的某个宏,1是size,在我们的场景里未用,但必须提供。
 */
	led {
		compatible = "jz2440_led";
		reg = <S3C2410_GPF(5) 1>;
	};
};

 等会我们的设备树需要把 reg = <S3C2410_GPF(5) 1>; 资源做寄存器,把它的值取出来,作为引脚。

下面把它上传到内核代码里面去重新编译(设备树文件),然后使用它来启动内核,再看看内核中的这个结点构造出了什么样的设备节点。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值