本篇文章给大家谈谈linux设备树怎么使用,以及linux查看设备树节点对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、RK3328 LINUX开发者指南
- 2、linux-3.14.52怎么使用设备树
- 3、linux 什么时候加入设备树
- 4、linux目录结构
- 5、linux设备树到底是什么?该如何彻底理解?
- 6、编译linux内核设备树文件使用什么命令
1、RK3328 LINUX开发者指南
通过运行 build 目录下的 mk-uboot.sh 脚本,设定选项为 roc-rk3328-cc
编译完后输出:
各个镜像文件的说明如下:
也可以通过以下文件配置 UBOOT :
kernel中需要配置,并定义设备树,会涉及到以下文件:
通过以下命令,完成内核配置,并更新默认配置:
需要注意,在 make menuconfig 时应进行如下配置:
配置好后即可编译整个 kernel (脚本文件内部设置了使用 -j4 来编译):
编译完后输出:
创建一个大小为 20G 的根文件系统映像文件,将 ubuntu core 解压到该映像中,如果不需要安装过多的软件,可以先设置成 2G ,后期再调整。
将 qemu-aarch64-static 放到挂载的 rootfs 的 /usr/bin 中,能在 x86_64 主机系统下 chroot 到该 arm64 文件系统中运行:
用 vim 编辑器打开 sources.list :
chroot 命令用来在指定的根目录下运行指令,在使用 chroot 之后,系统的目录结构将以指定的位置作为 “/” 位置。
在 rootfs 的 root 用户下设置:
退出,并卸载文件系统:
如果想要在创建的根文件系统中安装软件,也可以继续 chroot 到该文件系统中,安装一些常用的软件,比如 "pip" , "numpy" 等,避免复杂的交叉编译环境设置和加快文件系统的成型。
这样 rootfs.img 里就已经有刚才制作的根目录内容了,但这个 img 文件大小却是定义的镜像的大小,不是文件系统的实际大小,所以还要经过一些处理才能发布。
检查并查看rootfs.img镜像的大小:
减小ubuntu.img镜像文件的大小:
把 Linux 根文件系统映像文件 rootfs 放在 out/ 下,这时 out 目录应包含以下文件:
该脚本将根据《存储映射》所描述的布局,将分区映像文件写到指定位置,并最终打包成 out/system.img 。
如下所示的"parameter.txt"就是按照存储映射布局制作的,只添加了几个必不可少的分区。
插入 SD 卡,如果 SD 被自动挂载,则先将其卸载。
安装 pv :
通过检查内核的日志查找 SD 卡的设备文件:
如果设备文件为 /dev/sdb ,使用 dd 命令进行烧录:
如果需要将分区镜像写入到 SD 卡,可以运行以下命令:
也可以运行下面指令,将生成的统一固件 system.img 写入到 SD 卡中:
2、linux-3.14.52怎么使用设备树
3.14×5/4+3.14×0.5-3.14×3/4 =3.14×5/4+3.14×1/2-3.14×3/4 =3.14×(5/4+1/2-3/4) = 3.14×1 =3.14
3、linux 什么时候加入设备树
Linux and the Device Tree
Linux内核设备树数据使用模型。
Open Firmware Device Tree (DT) 是一个数据结构,也是一种描述硬件的语言。准确地说,它是一种能被操作系统解析的描述硬件的语言,这样操作系统就不需要把硬件平台的细节在代码中写死。
从结构上来说,DT是一个树形结构,或者有名结点组成的非循环图,结点可能包含任意数量的有名属性,有名属性又可以包含任意数量的数据。同样存在一种机制,可以创建从一个结点到正常树形结构之外的链接。
从概念上讲,一套通用的使用方法,即bindings。Bindings定义了数据如何呈现在设备树中,怎样描述典型的硬件特性,包括数据总线,中断线,GPIO连接以及外设等。
尽可能多的硬件被描述从而使得已经存在的bindings最大化地使用源代码,但是由于属性名和结点名是简单字符串, 可以通过定义新结点和属性的方式很方便地扩展已经存在的bindings或者创建一个新的binding。在没有认真了解过已经存在的bindings的情况下,创建一个新的binding要慎之又慎。对于I2C总线,通常有两种不同的,互不相容的bindings出现,就是因为新的binding创建时没有研究I2C设备是如何在当前系统中被枚举的。
1. 历史
略
2. 数据模型
请参考Device Tree Usage章节
2.1 High Level View
必须要认识到的是,DT是一个描述硬件的数据结构。它并没有什么神奇的地方,也不能把所有硬件配置的问题都解决掉。它只是提供了一种语言,将硬件配置从Linux Kernel支持的board and device driver中提取出来。DT使得board和device变成数据驱动的,它们必须基于传递给内核的数据进行初始化,而不是像以前一样采用hard coded的方式。
观念上说,数据驱动平台初始化可以带来较少的代码重复率,使得单个内核映像能够支持很多硬件平台。
Linux使用DT的三个主要原因:
1) 平台识别 (Platform Identification)
2) 实时配置 (Runtime Configuration)
3) 设备植入 (Device Population)
2.2 平台识别
第一且最重要的是,内核使用DT中的数据去识别特定机器。最完美的情况是,内核应该与特定硬件平台无关,因为所有硬件平台的细节都由设备树来描述。然而,硬件平台并不是完美的,所以内核必须在早期初始化阶段识别机器,这样内核才有机会运行特定机器相关的初始化序列。
大多数情况下,机器识别是与设备树无关的,内核通过机器的核心CPU或者SOC来选择初始化代码。以ARM平台为例,setup_arch()会调用setup_machine_fdt(),后者遍历machine_desc链表,选择最匹配设备树数据的machine_desc结构体。它是通过查找设备树根结点的compatible属性并与machine_desc-dt_compat进行比较来决定哪一个machine_desc结构体是最适合的。
Compatible属性包含一个有序的字符串列表,它以确切的机器名开始,紧跟着一个可选的board列表,从最匹配到其他匹配类型。以TI BeagleBoard的compatible属性为例,BeagleBoard xM Board可能描述如下:
compatible = "ti,omap3-beagleboard", "ti,omap3450", "ti,omap3";
compatible = "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3";
在这里,”ti, omap3-beagleboard-xm”是最匹配的模型,"ti,omap3450"次之,"ti,omap3"再次之。
机敏的读者可能指出,Beagle xM也可以声明匹配"ti,omap3-beagleboard",但是要注意的是,板级层次上,两个机器之间的变化比较大,很难确定是否兼容。从顶层上来看,宁可小心也不要去声明一个board兼容另外一个。值得注意的情况是,当一个board承载另外一个,例如一个CPU附加在一个board上。(两种CPU支持同一个board的情况)
4、linux目录结构
1. bin
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
2. boot
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
3. dev
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
4. etc
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
5. home
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
6. lib
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
7.lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
8. media
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
9. mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
10.opt
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
11. proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
12. root
该目录为系统管理员,也称作超级权限者的用户主目录。
13. sbin
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
14. selinux
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
15. srv
该目录存放一些服务启动之后需要提取的数据。
16. sys
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
17. tmp
这个目录是用来存放一些临时文件的。
18. usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
19. /usr/bin
系统用户使用的应用程序。
20. /usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序。
21. /usr/src
内核源代码默认的放置目录。
22. var
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
5、linux设备树到底是什么?该如何彻底理解?
Linux这几年发展迅猛,势如破竹。 虽然内核 3.0版本,并没有什么重大的修改,不过,这已经预示着Linux将迎来一个新的时代。《linux设备驱动程序》是基于2.6.10来写的。《深入理解linux内核》是基于2.6.11来写的。虽然2.6.x的内核,在主要内容上变化不大,不过已经有些显得跟不上内核更迭的速度了。 目前内核方面写的不错的书籍中,最新的算是《深入Linux内核架构》了,一个德国人写的。这本书是基于2.6.24写的。这本书在国外是作为教材用的,个人觉得,从自学的角度上讲,要比ULK更好,而且里面与最新的内核更贴近,看起来更舒服一些。《linux device drivers》英文第三版序言里有这样一段话:“I'm excited by what I witness in the embedded arena, and I hope this text helps by doing more; but ideas are moving fast these days, and it's already time to plan for the fouth edition, and look for a fourth author to help.” 不难看懂,我就不翻译了。从这里可以看出,作者们已经做好找第四位合作者写第四版的准备了:)万事都是需要与时俱进的。所以,这两本书都是会不断更新的。否则,就只能说明一点,出版商发现有更好的书籍替代他们了:) 不管怎么样,希望这些大部头的下一版的作者中,能看到中国开发者的名字~~
6、编译linux内核设备树文件使用什么命令
Linux源码的arch/powerpc/boot/dts/目录下存放了很多dts文件,可以作为参考文件。另外dtc编译器在内核源码2.6.25版本之后已经被包含进去。在2.6.26版本之后,生成blob的简单规则已经加入makefile,如下命令:
$ make ARCH=powerpc canyonlands.dtb
也可以根据自己的硬件修改好dts文件后,用下面类似命令生成dtb文件。
$ dtc -f -I dts -O dtb -R 8 -S 0x3000 test.dts mpc836x_mds.dtb
$ mkimage -A ppc -O Linux -T flat_dt -C none -a 0x300000 -e 0 -d mpc836x_mds.dtb mpc836x_mds.dtu
linux设备树怎么使用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux查看设备树节点、linux设备树怎么使用的信息别忘了在本站进行查找喔。