1、文件和目录的概念
文件是磁盘上特定格式的文件块集合,操作系统通过特定的结构可以方便地查找和访问集合内某个磁盘块。
文件是建立在文件系统概念上的,是存储在文件系统中一组磁盘块数据的命名对象。一个文件可以使空文件,也可以由多个任意多个磁盘块组成。
文件名用来标识文件的字符串,保存在目录文件中。
目录是文件名名或者目录名的命名集合。在Linux系统中,目录是一种特殊文件,目录的内容是文件或者其他目录的名称。
路径是用‘/’分隔的文件名集合。路径是一个文件在文件系统中的位置。
文件是Linux系统处理数据的基本单位,实际上,Linux系统所有的数据以及其他实体都是按照文件组织的。
2、文件分为普通文件,文本文件,二进制文件,目录,设备文件。
文件系统的目录结构:bin、dev、home、lost+found、proc、sbin、usr、boot、lib、etc、mnt、root、tmp、var。
3、字符设备和块设备、网络设备
设备驱动通常作为一类特殊的文件存放在/dev目录下,c表示字符设备,b表示块设备。
字符设备是Linux最简单的一类设备。应用程序就像操作普通文件一样操作字符设备,比如常见的串口、调制解调器。
与字符设备相比,块设备复杂得多。最主要的是块设备带有缓冲,字符设备买有。块设备传输数据只能以块作为单位读写,字符设备是以字节作为最小读写单位的。块设备提供随机访问的能力,字符设备只能顺序访问。
网络设备是一类特殊的设备。不是通过文件操作实现的。Linux内核为了抽象网络设备界面,为其定义了一个借口用于屏蔽网络环境下各种网络设备的差别。内核下所有网络设备的访问都是通过这个抽象的接口,接口对上层网络协议提供和相同的操作方法。
应用程序通过设备名(路径名)访问设备。内核则利用主设备号将设备与相应的驱动程序对应。向系统增加一个驱动就是赋予它一个主设备号。
参考自:《ARM嵌入式 LINUX系统开发详解》弓雷
底层驱动的原理
可参考:http://www.cnblogs.com/heat-man/p/4175842.html
对于一个简单的类似于led灯的底层驱动最后注册到linux的设备文件里面,供上层系统调用。在这个过程中,跟单片机和STM32其实也是一样的,只不过在linux中有特定的函数,需要bsp工程师看懂芯片的基础上封装好。
具体底层寄存器涉及函数Linux内核中ioremap映射的透彻理解,可参考地址是http://blog.youkuaiyun.com/hustyangju/article/details/20467007。