Linux开发速记教程之第一篇

一、Linux职业方向
①、服务器运维;②、应用软件开发;③、设备驱动开发。

二、设备驱动开发
Linux开发速记教程之第一篇_第1张图片
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开发速记教程之第一篇_第2张图片
五、根目录
根目录是 Linux 下所有文件和目录的起点,它的路径用斜杠符号“/”来表示。家目录(个人目录)路径为“/home/用户名/” ,整个 Linux 系统有且只有一棵从根目录开始的目录树,目录树只是一个管理上的概念,它本身并不跟硬件挂钩的,例如这些文件之所以是存储在磁盘中,是因为在安装系统时,已经把整个根目录“挂载”在了磁盘上。所谓挂载就是把存储器的分区与某个目录对应起来,对该目录进行访问时,相应的操作会被映射到其挂载的存储器分区,而这些存储器包括磁盘、光盘、 U 盘、
NAND FLASH 等。
Linux开发速记教程之第一篇_第3张图片
Linux开发速记教程之第一篇_第4张图片
①、/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 下目录也是文件。
**⑤、设备文件:**硬件设备也是文件,通过打开对应的设备文件可以初始化设备,部分设备还可以通过读写设备文件实现对硬件的控制。

七、用户及用户组
①、Linux是多用户操作系统,root用户管理其他用户和计算机的全部资源;
②、在Linux中,每个用户都有一个特定的UID编号来标识一个系统用户,并且把标号0分配给root用户的uid,它可以分配给每个用户不同的权限,因此每个用户可进行的操作也不同。
③、Linux 的文件属性,可以分为读权限、写权限、执行权限。读权限以及写权限,基本上和 Windows 操作系统是一样的。

八、Linux命令行
Shell是命令行解释器,Linux系统与用户通过Shell进行交互的。
Linux开发速记教程之第一篇_第5张图片
①、Shell:指命令解释器,常见的解释器有bash、sh,在Ubuntu系统默认是bash解释器,所以有时候说bash也是指命令行。
②、终端(Terminal):通常指用来运行 Shell 的程序,示场景的不同有不一样的名称,如 Ubuntu 系统自带的叫本地终端,嵌入式开发板常常提供串口进行输入输出的串口终端,通过网络访问的 ssh 终端。
③、控制台(Console):特指某些终端,通常是指它的物理形态,如带键盘和显示器的物理设备。
④、快捷键 Ctrl+Alt+T,可以快速打开一个命令行终端;
cd命令:change dir 的简写,它可以把终端当前所在的路径切换至目标路径。
mkdir 命令是 make directory 的简写,它可以在文件系统中创建一个新的目录。
touch 命令可以创建不存在的文件,或者 touch 通过参数修改目录或文件的日期时间,就是摸一下,更新它的时间。
ls 命令功能为显示指定目录下的内容(文件及子目录) ,还可以查看文件大小,修改日期等等信息。
cat 命令是 通常被用来在终端下输出文件的内容进行查看。
echo 命令的功能是在终端上打印一段文字,也可以把终端的变量内容打印出来。
输出重定向到文件“>”或“»”,其中“>”会直接用输出覆盖原文件,而“»”则把输出追加到原文件的末尾。
rmdir 命令是 remove directory 的简写,它的功能是删除空的目录。
rm 命令是 remove 的简写,它的功能是删除一个或多个文件或目录。
sudo 命令是 switch user do 的简写,意思是切换用户去做某件事情。
clear命令是 清除命令行的内容及打印出来的内容。
reboot/poweroff 命令来控制系统的重启与关机。
man命令可以用来查找更多的命令。

你可能感兴趣的:(嵌入式Linux应用程序开发,linux,驱动开发,单片机)