【Linux-设备树】设备树

Linux3.1之前的版本,对于一般的ARM平台的设备,板级信息一般存放在/arch/arm/mach-**目录下。

设备树对应的文件存放在/arch/arm/boot/dts/***.dts目录下

设备树引入的目的:

避免各个厂商代码的重复,加速linux内核的bsp的开发。编译一个镜像可以支持多个不同设备,只需要编译对应的设备树并打包就可以。

设备树:是一种描述板子硬件信息的数据结构(二进制文件),通过lk(bootloader)加载不同(对应的内核)。

内容:dts源文件----dtc编译生成---dtb文件---可通过给lk启动加载到内核里面去。

源文件:包含信息CPU、总线、串口、物理内存、GPIO、控制器信息等等(类似我们之前的板级信息mach--XX);

基于open firmware衍生来的!

Lk-----引导内核会对这个文件(结构语法解析),内核起来的时候,一些相应的设备,就可以得到相应的板级硬件信息。

时间: 2024-12-14 23:53:56

【Linux-设备树】设备树的相关文章

20150517 Linux文件系统与设备文件系统

20150517 Linux文件系统与设备文件系统 2015-05-17 Lover雪儿 注:本文参考书籍:华清远见-<Linux 设备驱动开发详解>第五章,大概内容如下,具体内容还请观看原书. 一.devfs(设备文件系统) devfs(设备文件系统)是由linux2.4内核引入的,具有如下优点: ①可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载时把它删除. ②设备驱动程序可以指定设备名.所有者和权限位,用户空间中人可以修改. ③不需要为设备驱动程序分配主设备号以及处理次设备号

linux kernel 字符设备详解

有关Linux kernel 字符设备分析: 参考:http://blog.jobbole.com/86531/ 一.linux kernel 将设备分为3大类,字符设备,块设备,网络设备. 字符设备是指只能一个字节一个字节读写的设备, 常见的外设基本上都是字符设备. 块设备:常见的存储设备,硬盘,SD卡都归为块设备,块设备是按一块一块读取的. 网络设备:linux 将对外通信的一个机制抽象成一个设备, 通过套接字对其进行相关的操作. 每一个字符设备或块设备都在/dev目录下对应一个设备文件.l

5-1-RHEL6.3正则表达式(Red Hat Enterprise Linux Server6.3)@树袋飘零

基本正则表达式(Regular Expression) . 匹配任意字符 \{n,\} 匹配前一字符重复至少n次 * 重复次数0次或多次 \{n\} 匹配前字符重复n次 .* 匹配任意多个任意字符 \(..\) 标记匹配字符 [] 匹配集合中的任意单个字符 \n 调用上个标记 [^] 集合取反 \w 匹配文字数字符 [n-m] 匹配n到m的范围如:[a-g] \W 取反\w ^ 匹配开头字符串 \< 匹配单词开头行 & 匹配结尾字符串 \> 匹配单词结尾行 \ 转义 5-1-RHEL6

linux添加裸设备

1.什么裸设备?字符设备?块设备? 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备.裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲.裸设备可以绑定一个分区,也可以绑定一个磁盘. 字符设备:对字符设备的读写不需要通过OS的buffer.它不可被文件系统mount. 块设备:对块设备的读写需要通过OS的buffer,它可以被mou

Linux中块设备驱动程序分析

基于<Linux设备驱动程序>书中的sbull程序以对Linux块设备驱动总结分析. 开始之前先来了解这个块设备中的核心数据结构: struct sbull_dev { int size;                       /* Device size in sectors */ u8 *data;                       /* The data array */ short users;                    /* How many users

【Linux 驱动】设备驱动程序再理解

学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下.学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下. ★什么是驱动程序 刚开始学习设备驱动程序的时候,产生了许多的问题.什么是驱动程序?驱动程序是干嘛的?它是如何工作的?它又是如何跟操作系统联系起来的?一系列的问题,现在有些地方还是不一定清楚,但是相比起刚开始的那个阶段,感觉自己还是清楚了很多. 设备驱动程序说白了(实质)就是为应用程

Linux创建特殊设备文件

linux下的设备很特别,系统总是以总一的方式读取设备,而设备间的差别由设备驱动程序来负责完成.正因为如此,设备管理起来非常地容易.linux也提供了虚设备文件,即无实际物理硬件相对应的设备,它们在实际的工作学习中会经常用到,现介绍如下 (一)-首先说的当然是回环设备,loop device,这是什么呢?就是把文件模拟成设备,然后就可以像实际设备那样进行相关的操作啦,是大家所熟悉的就是挂载光盘镜象啦,比如说挂载CentOS-5.2-i386-bin-DVD.iso 这个,那么在SHELL中输入

linux下USB设备驱动

本文以USB鼠标讲解USB设备驱动. 驱动程序中调用usb_register(struct usb_driver *)函数时,先判断USB总线驱动程序是否支持usb_driver里定义的id_table,若支持,调用usb_driver的probe函数. 所以首先要定义并初始化usb_driver结构体: static struct usb_driver usbmouse_as_key_driver = { .name = "usbmouse_as_key", .probe = usb

linux下块设备驱动程序

块设备不能向字符设备那样访问,而是要先将请求放入队列,优化调整顺序后再执行,这种访问方式称为"电梯调度算法". 本篇文章通过ramdisk.nand flash.nor flash来讲解如何写块设备驱动程序. 一.ramdisk 1.因为块设备驱动程序是将请求放入队列然后调整顺序后执行,所以我们需要先定义请求队列: static unsigned char *ramblock_buf; ramblock_buf = kzalloc(RAMBLOCK_SIZE, GFP_KERNEL);

linux中的设备名称和设备号

看赵炯博士的<linux 0.11 源代码注释>已经两三周了,从今天起开始将一些个人总结和感悟分小标题写出来,聊作记忆以供后来查看.在linux0.11源码的 /linux/boot/bootsect.s中,有一个标号定义ROOT_DEV ! ROOT_DEV: 0x000 - same type of floppy as boot.! 0x301 - first partition on first drive etcROOT_DEV = 0x306 这里,ROOT_DEV是系统指定的根文件