装饰装修网站建设方案,网站小游戏怎么做,网站建设微信官网开发,营销型网站建设明细报什么是Linux#xff1f;
不知道大家是什么时候开始接触Linux#xff0c;我记得我是大三的时候#xff0c;那时候通过国嵌、韦东山的教学视频#xff0c;跟着搭bootloader#xff0c;修改内核#xff0c;制作根文件系统#xff0c;一步步#xff0c;视频真的很简单
不知道大家是什么时候开始接触Linux我记得我是大三的时候那时候通过国嵌、韦东山的教学视频跟着搭bootloader修改内核制作根文件系统一步步视频真的很简单没什么异常但是自己就是搞不了那个痛苦现在都记忆犹新。现在工作五年多了对Linux的认识还是很片面很肤浅很多东西看不懂摸不透需要持续学习。回头看之前的Linux过程真的很陡峭一个小白需要搞bootloader、内核、根文件系统太难了哪有这样子学的分分钟劝退大家所以这个时候就想通过自己对Linux的一些理解给大家介绍一下希望可以给大家带来一点帮助。下面通过我对Linux的理解给大家介绍Linux的浅层面貌更深处需要各自探讨、摸索了。
名词解释
硬件
百度百科对硬件的介绍就是计算机硬件的简称是指计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。
我们理解它就是一个看得见摸得着的实体各种程序可以在上面运行并得到相应结果的物理载体。
软件
软件一系列按照特定顺序组织的计算机数据和指令的集合。看不见、摸不着的东西需要在硬件上执行提供特定的功能的计算机程序。软件离开硬件啥也不是硬件没有软件也不过是废铁。
IP
懂网络的可能知道IP是一种网络协议但是在半导体中IP是指IP核心。在集成电路设计中提供特定功能的集成电路模块比如可以提供I2C通信功能的I2C控制器电路等。
ARM
ARM既是指ARM这家公司也是指ARM公司提供的IP。ARM公司是全球知名半导体知识产权IP提供商提供ARM IP相应的指令集也会设计相应的处理器将这些IP比如ARMCortex-A53、Cortex-M3等打包出售给各个芯片厂商。
CPU
CPU中央处理器主要由控制器、运算器组成主要功能是处理指令、执行操作、处理数据。
SOC
SOC片上系统一般的我们理解它是各种IP的集合比如有CPU、GPU、I2C控制器、GPIO、存储控制器等SOC上包含了各种各种的功能基于它进行相应的产品开发。
操作系统
什么是操作系统首先我们需要知道操作系统是个软件程序运行在计算机芯片上如PC上使用的因特尔处理嵌入式使用的板端SOC等。操作系统简单理解就是一个管理员向下负责调度、处理SOC上的各种资源向上提供公共服务处理用户交互等包括处理器管理、存储器管理、设备管理、文件管理、作业管理。我们仅介绍嵌入式操作系统常用的Linux系统。
Linux
它是一个免费使用的类UNIX操作系统由大大佬Linus Benedict Torvalds创建基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
Ubuntu
Ubuntu是Linux的一个发行版以桌面应用为主的Linux操作系统一般我们都是基于Ubuntu进行开发和学习。
GCC
一般是指GNU编译器套件提供C、C等预研的编译器Linux开发一般使用GCC进行相应的编译开发。
设备
怎么理解设备呢平常可以说我们的手机是一个设备而在嵌入式开发中板子PCBA板上的触摸屏、flash存储芯片、wifi芯片等也是一个设备。设备可以是真实存在的物体也可以是需要出来的不存在的一个物体。
驱动
嵌入式经常会听到说什么驱动、驱动。驱动实际上就是一些代码初始化设备的代码使设备可以正常工作的代码。
总线
总线应该比较好理解从自来水厂迁一条管道到镇上然后再通过各种小管道连接到各家各户。嵌入式开发中总线有芯片内的总线比如CPU和各种外设控制器进行数据、命令传输的总线一个管道也有软件层面虚拟出来的总线虚拟上面挂载了各种设备进行相互的通信和操作。
字符设备
字符设备是指在I/O传输过程中以字符为单位进行传输的设备比如键盘触摸屏等。
块设备
块设备是i/o设备中的一类是将信息存储在固定大小的块中每个块都有自己的地址还可以在设备的任意位置读取一定长度的数据例如硬盘U盘SD卡等。
网络设备
网络设备使用套接字来实现网数据的接受和发送。
进程
进程Process是计算机中的程序关于某数据集合上的一次运行活动是系统进行资源分配和调度的基本单位是操作系统结构的基础。程序是指令、数据及其组织形式的描述进程是程序的实体。
线程
线程thread是操作系统能够进行运算调度的最小单位是独立调度和分派的基本单位。它被包含在进程之中是进程中的实际运作单位。
在了解上述的基本名词后那么在深入学习之前最起码应该先了解LInux长什么样会提供的操作吧下面一起看看。
初识Linux
Windows会有系统盘C盘其他盘D、E、F等供用户使用在Linux中没有这样的以Ubuntu为例主要目录结构如下:
/ // 根目录
├── bin // 存放可执行的二进制文件一般我们执行的命令都会在这个文件夹
├── boot // 启动相关的文件
├── dev // Linux系统的设备文件访问该目录下的文件相当于访问某个设备
├── etc // 系统配置文件
├── home // 系统默认的用户目录一般我们的文件都在保存在该目录下
├── lib // 库相关
├── lib32
├── lib64
├── root // 系统管理员root的目录
└──usr // 该目录下也会存在一些库和可执行文件Linux系统中任何的设备都是一个文件在Linux系统中文件有三种属性可读®、可写(w)、可执行(x)。
实例
-rw-rw-r-- 1 chengwei chengwei 5757 11月 13 19:26 什么是Linux.md-rw-rw-r--一共10位文件类型1位文件拥有者的访问权限、文件所属组用户访问权限以及其他用户访问权限各3位第一个 - 代表的是普通文件l则是链接文件d则是文件夹。Linux框架
在学习Linux的过程中给我印象最深刻的一句话就是任何的设备都是一个文件而Linux则是管理这些文件。 设备驱动模型怎么理解呢
底层芯片各种各样而产品的应用开发的时候也不想考虑底层的差异所以必须要一个统一的接口对外Linux这边就是将设备配置为文件。在软件界遇到解决不了的问题给它加一层。所以Linux对接应用的就是VFS(Virtual File System)通过VFS屏蔽底层的差异应用都是使用同样的接口进行配置。而在内核中也需要管理各种各样的设备驱动所以内核提供一套接口各个平台的驱动按照内核提供的接口进行注册驱动和设备当驱动和设备一致时则代表该硬件可用将会注册节点透给用户层此时用户将可以使用该设备。如果设备和驱动不一致则代表不可用。
C语言基础
基本构成
数据类型
C的数据类型包括整型short、int、long、long long、字符型char、实型或浮点型单精度float和双精度double、枚举类型enum、数组类型、结构体类型struct、共用体类型union、指针类型和空类型void。
数组
如果一个变量名后面跟着一个有数字的中括号这个生命就是数组声明。
指针
一个变量声明时在前面使用*号表明这是个指针型变量。该变量存储一个地址而*则是取内容操作符意思是取这个地址里存储的内容。
关键字
数据类型关键字
关键字作用short修饰int短整型数据可省略被修饰的intlong修饰int长整型数据可省略被修饰的intlong long修饰int超长整型数据可省略被修饰的intsigned修饰整型数据有符号数据类型unsigned修饰整型数据无符号数据类型restrict用于限定和约束指针并表明指针是访问一个数据对象的初始且唯一的方式
复杂类型关键字
关键字作用struct结构体声明union联合体声明enum枚举声明typedef声明类型别名sizeof得到特定类型或特定类型变量的大小inline内联函数用于取代宏定义会在任何调用它的地方展开
存储级别关键字
关键字作用auto指定为自动变量由编译器自动分配及释放。通常在栈上分配。与static相反。当变量未指定时默认为autostatic指定为静态变量分配在静态变量区修饰函数时指定函数作用域为文件内部register指定为寄存器变量建议编译器将变量存储到寄存器中使用也可以修饰函数形参建议编译器通过寄存器而不是堆栈传递参数extern指定对应变量为外部变量即标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义const指定变量不可被当前线程改变但有可能被系统或其他线程改变volatile指定变量的值有可能会被系统或其他线程改变强制编译器每次从内存中取得该变量的值阻止编译器把该变量优化成寄存器变量
流程控制关键字
关键字作用return用在函数体中返回特定值continue结束当前循环开始下一轮循环break跳出当前循环或switch结构goto无条件跳转语句if条件语句后面不需要放分号else条件语句否定分支与if连用switch开关语句多重分支语句case开关语句中的分支标记与switch连用default开关语句中的“其他”分支可选
函数
C程序是由一组变量或是函数的外部对象组成的。函数是一个自我包含的完成一定相关功能的执行代码段。