一、Linux职业方向 ①、服务器运维;②、应用软件开发;③、设备驱动开发。
二、设备驱动开发 Linux 系统的一个重要设计哲学是一切皆文件。包括硬件设备,对于系统来说也是一个文件,所以系统向上层应用程序提供 open、 write、 read、 close 等统一的文件操作接口,应用程序可以利用这些接口对设备文件进行访问,从而实现对硬件设备的初始化、写入、读取以及关闭等操作。 当系统接收到应用程序的这些访问请求时,它会向下查询对应设备具体的操作函数,然后调用相应的函数处理请求,而这些针对不同设备具体的操作函数就是设备驱动程序。因此,设备驱动就是这样一种把硬件与操作系统连接在一起的程序, Linux 系统会提供统一的格式,设备驱动开发工程师根据具体的设备按照系统格式要求实现相应的设备操作函数。
三、i.MX 系列应用处理器 i.MX 应用处理器包括 i.MX8、 i.MX7、 i.MX6 及 i.MX28 系列,被广泛应用于工业控制、汽车电子领域,其中 i.MX6 系列应用处理器包含基于 Cortex 的单核、双核和四核系列的的产品,其架构有,主要采用 CortexA7, Cortex-A9 作为内核,部分型号采用 Cortex-A9+Cortex-M4 的双核心方案。主频从 528MHz~1.2GHz 不等。该系列芯片主要应用在车载多媒体系统、数字标牌电子阅读器、人机界面、物联网网关、智能工业控制系统等轻量、低功耗的领域,在物联网推进的大潮下,该芯片定有一番作为。 本篇采用的是i.MX6ULL系列处理器,包含一个Cortex-A7内核,主频有528MHz、792MHz和900MHz。如型号为 MCIMX6Y2CVM08AB 的芯片,它属于 i.MX6ULL 系列,是主频为 792MHz、芯片封装为 BGA,尺寸为 14x14mm,焊盘间距为 0.8pitch的工业级芯片。
四、Linux内核和发行版 Linux 内核负责控制硬件、管理文件系统、进程管理、网络通讯等,但它本身并没有给用户提供必要的工具和应用软件。基于 Linux 内核搭配各种各样系统管理软件或应用工具软件,从而组成一套完整可用的操作系统,见下图。我们称这样的系统为 Linux 发行版(distribution)。完整的 Linux 系统就如同汽车, Linux 内核构成了最为关键的引擎,不同的发行版就类似使用相同引擎的不同车型。 五、根目录 根目录是 Linux 下所有文件和目录的起点,它的路径用斜杠符号“/”来表示。家目录(个人目录)路径为“/home/用户名/” ,整个 Linux 系统有且只有一棵从根目录开始的目录树,目录树只是一个管理上的概念,它本身并不跟硬件挂钩的,例如这些文件之所以是存储在磁盘中,是因为在安装系统时,已经把整个根目录“挂载”在了磁盘上。所谓挂载就是把存储器的分区与某个目录对应起来,对该目录进行访问时,相应的操作会被映射到其挂载的存储器分区,而这些存储器包括磁盘、光盘、 U 盘、 NAND FLASH 等。 ①、/bin 目录:/bin 目录是/binary 的缩写,它包含众多普通用户可用的命令。而命令的本质就是可执行程序,即二进制 bin 文件。熟悉 Linux 命令后,回头再来本目录看看,会发现 ls、 cp、 cat 等命令,都可以在此处找到。 ②、/sbin 目录:/sbin 目录是/system bin 的缩写,它的功能类似/bin ,不过它存储的一般是系统程序,一般需要使用管理员权限才能使用。如显示系统已加载的模块命令 lsmod、对存储器分区进行格式化的 mkfs 等。 ④、/etc 目录:/etc 目录是/etcetera 的缩写,据说原始的 Unix 设计是在该目录存放些零碎的内容,但现在该目录现在已发展成存放系统的各种配置文件,非常重要。如用户信息文件/etc/passwd,系统初始化文件/etc/rc 等,系统依据这些配置运行。在给系统安装某些软件或服务后,常常需要修改/etc 目录下的文件进行配置。 ⑤、 /root 目录:/root 是超级用户的目录,在 Ubuntu 下默认为空。 ⑥、 /home 目录:/home 即前面介绍的家目录。 ⑦、/lib 目录:/lib 目录是/library 的缩写,根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。如 C 语言标准库,这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。 ⑦、/dev 目录:/dev 目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访 问/dev/mouse 来访问鼠标的输入,就像访问其他文件一样。 ⑧、/proc 目录:/proc 目录通常包含了内核导出到用户空间的内核信息,通过访问该目录下的文件可以查看这些信息。 **⑨、/sys 目录:**与/proc 目录类似, /sys 目录用于把内核的设备驱动导出到用户空间,可通过访问 sys 目录及其下的文件,来查看甚至控制内核的一些驱动设备。
⑩、/tmp 目录:/tmp 目录存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用/var/tmp 来代替/tmp,因为前者可能拥有一个更大的磁盘空间。 11、/boot 目录:/boot 目录存放引导加载器 (bootstrap loader) 使用的文件,如 lilo,核心映像也经常放在这里,而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系统会更好一些。 12、/mnt 目录:/mnt 目录是系统管理员临时挂载 (mount) 文件系统的安装点。 /mnt 下面可以分为许多子目录,例如/mnt/dosa可能是使用 msdos 文件系统的软驱,而/mnt/exta 可能是使用 ext2 文件系统的软驱, /mnt/cdrom 光驱等等。 13、/media 目录:/media 目录通常是一些自动挂载的设备目录,如光盘和 U 盘,部分系统会自动挂载到这个目录下,然后通过 自动挂载的目录可以访问对应的设备。 14、/usr 目录: 曾经的 /usr 还是用户的家目录,存放着各种用户文件——现在已经被 /home 取代了(例如 /usr/someone 已经改为 /home/someone)。现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然 /usr 名称未改,不过其含义已经从“用户目录”变成了“unixsystem resource” (Unix 系统资源)。值得注意的是,在一些 unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix。 ? /usr/bin : 所有可执行文件,如 gcc, firefox 等(指不包含在 /sbin 和 /bin 内的); ? /usr/include : 各种头文件,编译文件等时需要使用; ? /usr/include/’ package-name’ : 程序特定的头文件; ? /usr/lib : 所以可执行文件所需要的库文件; ? /usr/scr:源代码, Linux 内核的源代码就放在该目录下。
六、文件类型 **①、普通文件:**如文本文件, bin 文件等。 **②、可执行文件:**可执行文件包括脚本和应用程序,这些文件可被系统加载运行,类似 Windows 下的 bat 脚本、 exe 程序文件 等。 **③、链接文件:**链接文件分为硬链接和软链接:? 硬链接是指同一个文件的不同别名。? 软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 **④、目录文件:**在 Linux 下目录也是文件。 **⑤、设备文件:**硬件设备也是文件,通过打开对应的设备文件可以初始化设备,部分设备还可以通过读写设备文件实现对硬件的控制。
|