2018-06-01 12:16:31 u010802169 阅读数 5972
  • linux设备树详解

    现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

    3332 人正在学习 去看看 韦东山

下面介绍如何查看一个i2c-adapter对应的设备树文件,i2c-client对应的设备树文件

我们知道I2C-client的信息和adapter的一些信息如寄存器等信息是放在设备树里面的,那么在设备树的什么位置呢?在arch/arm/boot/dts/xxx.dts

在默认的文件系统中查看默认只提供了一个,也是第0组的I2C,我们需要的其他组需要自己添加。

 

实际上,我们从SOC引出的scl和sda是不止一组的,有很多组,在我们的exynos4412 scp中能接9组,他们的控制器地址如下:每组寄存器都有I2CCONn,I2CSTATn,I2CADDn,I2CDSn,I2CLCn,(n=0,1,2,3,4,5,6,7,8)。

举例:由于我们需要确定当前的从设备是接在哪个控制器上的,每个控制器有不同的地址,所以要找到当前从设备的设备树的话需要知道控制器的地址是多少,那么我们以MPU6050为例的一个实际接线情况如下,

 

如何添加其他组的设备树?首先看看控制器对应的信息设备树模板:我们的驱动pdrv就通过compatible中的名字找到对应的设备的。其中有status=’disabled’的时候是不会帮你创建i2c adpater的一些控制器代码

我们要怎么创建呢,,我们需要在arch/arm/boot/dts/exynos4412-fs4412.dts中创建,这里才是描述从设备信息的设备树文件,这里也提供了从设备信息的一个添加模板,并且可以从系统的/sys/bus/i2c/devices/i2c-0/目录下就可以看到是否已经有i2c的控制器信息了,还有是否有client从设备信息。

控制器及client信息举例:/sys/bus/i2c/devices/i2c-0/,i2c-0就是一个控制器了,里面目录下就创建了一个client,如0-0066 client

添加自己需要的i2c组:只需在arch/arm/boot/dts/exynos4412-fs4412.dts中增加控制器和从设备的信息即可,如下

然后编译设备树:make dtbs更新设备树,然后查看adapter(控制器)是否更新到总线中

adapter(控制器)中属于I2C总线

查看I2C总线中client信息

这样就将I2C的5号组控制器和client信息都添加完成了。。。剩下的就是驱动的问题了。

 

2014-02-10 09:52:41 zhaiwn 阅读数 358
  • linux设备树详解

    现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

    3332 人正在学习 去看看 韦东山
2017-06-27 15:03:00 weixin_30552811 阅读数 170
  • linux设备树详解

    现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

    3332 人正在学习 去看看 韦东山

1.设置默认声卡为USB声卡

在$HOME下新建.asoundrc
$cd $HOME
$nano .asoundrc
输入以下内容
defaults.ctl.card 1
defaults.pcm.card 1
最后的1是USB声卡的编号,可通过以下命令查看
$aplay -l
或
$cat /proc/asound/cards
然后重启一下alsa就把1号声卡(usb声卡)设置成默认声卡了。
测试录音
$arecord -d 10 test.wav
测试播音
$aplay test.wav

2.播音和录音为不同声卡时,可以参考以下配置,修改~/.asoundrc

pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:0,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:1,0"
}
其中,hw:1,0表示card 1 device 0

3.调节声卡音量

打开终端,输入
$alsamixer
即可调节音量
按 f6 会出现声卡列表
一般来说,usb 声卡总是第二位的,声卡编号是1(默认声卡是0)

4.测试指定声卡

arecord -D "plughw:5,0" -d 3 temp.wav
aplay -D "plughw:1,0" temp.wav

转载于:https://www.cnblogs.com/spjy/p/7085281.html

2016-05-06 13:29:32 u011404265 阅读数 1076
  • linux设备树详解

    现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

    3332 人正在学习 去看看 韦东山

以下用一个表格来罗列linux默认的目录或文件及其用途:

目录/文件 用途 来源
/ /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下。 -
/bin 该目录存放着系统最常用的最重要的命令,相当于DOS下的内部命令,只不过它们是以独立的文件形式存在。比如:ls、cp、mkdir等命令。这个目录中的文件都是可执行的并且是普通用户都可以使用的命令。作为系统最基础的命令都放在这里。 binary
/usr 该目录是系统存放程序的地方,比如普通命令、帮助文件、安装的软件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。当有涉及服务器的配置文件时,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts、帮助目录/usr/share/man或/usr/share/doc等。
unix shared resource
/var 该目录的内容是经常变动的,/var下有/var/log目录用来存放系统日志的目录。/var/www目录用来定义Apache服务器站点存放目录。/var/lib用来存放一些库文件。 variable
/sbin 大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的。 super user binary
/root Linux超级权限用户(系统管理员)root的主目录。 -
/home 普通用户的主目录都默认存放在该目录中,比如:有个用户叫wang,那它的主目录就是/home/wang,也可以用~wang表示。 -
/etc 该目录是系统配置文件的所在地,一些服务器的配置文件也在这里,比如:用户帐号及密码配置文件等。 etcetera
/dev 设备文件存储在该目录中,这个目录下是所有Linux的外部设备文件,这些设备文件的功能类似于DOS下的.sys文件和Win下的.vxd文件。Linux将设备当成文件使用,即将设备抽象化,这样极大地方便了我们对设备的操作控制。因此Linux中设备和文件是用相同的方法访问的。 device
/boot Linux的内核及引导系统的程序所需要的文件都存放在该目录中,比如vmlinuz、initrd.img等文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器在这个目录中。 -
/opt 该目录是可选的软件包安装目录,有些软件包我们可以将它安装在该目录中。 optional
/tmp 该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和该目录的作用是相似的。 temporary
/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生的一些文件碎片就存放在该目录中。当系统启动在过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能要用手工的方式来修复,或移到文件原来的位置上。 -
/lib 该目录用于存放库文件,这个目录里存放着系统最基本的共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。 library
/mnt 该目录是用于存放挂载储存设备的挂载目录的,系统提供这个目录是让用户临时挂载别的文件系统,比如有cdrom等目录。 mount
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。 process
/misc 该目录可以用来存放杂项文件或目录,即那些用途或含义不明确的文件或目录可以存放在该目录下。 miscellany
/media 即插即用型存储设备的挂载点自动在该目录下创建。比如USB盘系统自动挂载后,会在这个目录下产生一个目录;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似于cdrom这个目录。该目录只有在最新的发行套件上才有。 -
/initrd 系统在启动前的内核是压缩的(这和ramdisk有关),当系统启动时需要解压缩,该目录就是解压缩时的临时目录,当启动完后又将该目录清空。 boot loader initialized RAM disk
/usr/man 该目录是Linux系统帮助文档的存放目录。 -
/proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。比如cat /proc/cpuinfo -
/proc/devices 当前运行内核所配置的所有设备清单。 -
/proc/filesystems 当前运行内核所配置的文件系统。 -
/proc/dma 当前正在使用的DMA通道。 -
/proc/interrupts 正在使用的中断和曾经有多少个中断。 -
/proc/ioports 当前正在使用的I/O端口。 -
/etc/init.d 这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。比如RedHat Fedora。 -
/etc/xinetd.d 如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。 -
/etc/rc.d 这是Slackware发行版中有的一个目录,是BSD方式启动脚本的存放地,比如定义网卡,服务器开启脚本等。 -
/etc/X11 是X-Window相关的配置文件存放地。 -
/usr/bin 这个目录是可执行程序的目录,普通用户就有权限执行。当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。相似的目录是/usr/local/bin目录。有时/usr/bin中的文件是/usr/local/bin的链接文件。 -
/usr/sbin 这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行,相似目录是/sbin或/usr/local/sbin或/usr/X11R6/sbin等。 -
/usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录。一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。 -
/usr/lib 该目录和/lib目录相似,是库文件的存储目录。存放一些常用的共享库。 -
/usr/share 该目录用于存放系统共用的东西,比如/usr/share/fonts是字体目录,是用户都共用的。 -
/usr/share/doc 该目录是Linux共享文档的存放地。 -
/usr/share/man 该目录是共享的帮助文件的存放地。 -
/usr/src 该目录是内核源码存放地,下面有内核源码目录,比如linux、linux-2.xxx.xx目录等。有的系统也会把一些源码软件包安装在这里,比如Redhat Fedora。另外Redhat 4.0/5.0,它的内核源码包的目录位于/usr/src/kernels目录下的某个目录中(只有安装后才会生成相应目录)。 -
/var/adm 比如软件包安装信息、日志、管理信息等就存放在该目录下,在Slackware操作系统中是有这个目录的。在Fedora中好象没有。 -
/var/log 该目录用于存放系统日志。 -
/var/spool 打印机、邮件、代理服务器等假脱机目录存放在该目录下。 - 

 

 

2014-02-25 19:38:58 litian0218 阅读数 1174
  • linux设备树详解

    现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

    3332 人正在学习 去看看 韦东山

ZedBoard的默认设备树源文件diligent-zed.dts在arch/arm/boot/dts目录下。在编译设备树源文件之前,需要对ZedBoard的设备树进行修改。

使用文本编辑器打开digilent-zed.dts文件,在49处

bootargs=”console=ttyPS0,115200root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1”;

改为下一行注释掉的部分

bootargs=”console=ttyPS0,115200root=/dev/ram rw initrd=0x800000,8M init=/init earlyprintk rootwaitdevtmpfs.mount=1”;

SPI-设备树

阅读数 24

linux的默认目录

阅读数 79

linux基础

阅读数 75

linux目录的特点

阅读数 45

没有更多推荐了,返回首页