linux kernel dts地址,am335x Linux kernel DTS pinmux 定义记录

记录am335x TI PDK3.0 Linux Kernel 设备的pinmux 的配置

在TI 的Linux kernel 设备树里面,有很多关于pinctrl-single,pins 的配置,

我一直搞不懂这些配置的地址是怎么来,今天问了群的大牛终于得出了答案。

大概跟了一下相关的代码,有如下:

/* arch/arm/boot/dts/am33xx.dtsi */

scm: scm@210000 {

compatible = "ti,am3-scm", "simple-bus";

reg = <0x210000 0x2000>;

#address-cells = <1>;

#size-cells = <1>;

ranges = <0 0x210000 0x2000>;

am33xx_pinmux: pinmux@800 {

compatible = "pinctrl-single";

reg = <0x800 0x238>; // 从0x800开始

#address-cells = <1>;

#size-cells = <0>;

pinctrl-single,register-width = <32>;

pinctrl-single,function-mask = <0x7f>;

};

上面的这份DTS的代码中,他规定了寄存器是从0x800 开始,

所以在

AM335x ARM Cortex-A8 Microprocessors (MPUs) Technical Reference Manual (Rev.pdf

9.3 CONTROL_MODULE Registers 有相关的地址标示,

但是在 `*.dts ` 里面的代码是偏移了 0x800 的地址的,所以有如下代码:

nandflash_pins_s0: nandflash_pins_s0 {

pinctrl-single,pins = <

0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */

0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */

0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */

0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */

0x10 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */

0x14 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */

0x18 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */

0x1c (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */

0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */

0x74 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_30 */

0x7c (PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */

0x90 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */

0x94 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */

0x98 (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */

0x9c (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */

>;

};

对应的TRM描述如下所示:、

31c4a5929cdeac4d4ad3c1db7b912e95.png

* 对应的模式的设置要查看 AM335x ARM® Cortex™-A8 微处理器(MPU) 这一份datasheet, 找到对应的MODE,设置属于你自己模式。

Linux kernel make 常用选项介绍

Linux kernel 编译方法大全记录 一.这是一个我自己写的自动make脚本: #!/bin/sh export ARCH=arm export CROSS_COMPILE=arm-linux- ...

Linux Kernel代码艺术——系统调用宏定义

我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数 ...

linux kernel input 子系统分析

Linux 内核为了处理各种不同类型的的输入设备 , 比如说鼠标 , 键盘 , 操纵杆 , 触摸屏 , 设计并实现了一个对上层应用统一的试图的抽象层 , 即是Linux 输入子系统 . 输入子系统的层 ...

Linux Kernel中断子系统来龙去脉浅析【转】

转自:http://blog.csdn.net/u011461299/article/details/9772215 版权声明:本文为博主原创文章,未经博主允许不得转载. 一般来说,在一个device ...

LINUX kernel笔记系列 &colon;IO块参数 图

Linux下,I/O处理的层次可分为4层: 系统调用层,应用程序使用系统调用指定读写哪个文件,文件偏移是多少 文件系统层,写文件时将用户态中的buffer拷贝到内核态下,并由cache缓存该部分数 ...

Linux kernel的中断子系统之(二):IRQ Domain介绍

返回目录:. 总结:一.二概述了软硬件不同角度的IRQ Number和HW Interrupt ID,这就需要他们之间架个桥梁. 三介绍了架设这种桥梁的几种方 ...

Linux kernel的中断子系统之(四):High level irq event handler

返回目录:. 总结:从架构相关的汇编处理跳转到Machine/控制器相关的handle_arch_irq,generic_handle_irq作为High l ...

Linux kernel的中断子系统之(八):softirq

返回目录:. 总结:中断分为上半部和下半部,上半部关中断:下半部开中断,处理可以延迟的事情.下半部有workqueue/softirq/tasklet三种方式 ...

随机推荐

HTML 通知公告练习

div>

1& ...

《Effective C&num;》快速笔记(五)- - C&num; 中的动态编程

静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静态类型的语言,不过它加入了动态类型的语言特性,可以更高效地解决问题. 一. ...

一步步带你做vue后台管理框架

1.登录 (1).  一步步带你做vue后台管理框架(三)——登录功能 2.权限控制 (1)  基于Vue2.0实现后台系统权限控制 (2) 手摸手,带你用vue撸后台 系列二(登录权限篇)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值