linux基础之路
文章平均质量分 87
linux基础部分内容
Couvrir洪荒猛兽
大家都在努力不是吗 不止你 还有我
梦想成为嵌入式大牛
展开
-
linux进阶-I.MX 6ULL
内部:SD卡、EMMC、NAND。熔丝:烧录一次,发布产品。:如SD、EMMC,位宽(外部:USB、串口等。原创 2023-07-24 16:29:31 · 892 阅读 · 0 评论 -
Linux进阶-linux内核
内核由中断服务程序、调度程序、内存管理程序、网络和进程间通信等系统程序共同组成。Linux内核是提供保护机制的最前端系统,它独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这些系统态和被保护起来的内存空间统称内核空间。Linux内核是操作系统的核心程序文件。内核是操作系统的心脏,系统其它部分必须依靠内核这部分软件提供的服务,例如管理硬件设备、分配系统资源等。原创 2022-11-25 18:04:53 · 243 阅读 · 0 评论 -
Linux进阶-ARM_V7架构和ARM常用汇编指令
User(USR):用户模式。linux系统用户进程,资源访问受限。System(SYS):系统模式。linux内核,共用寄存器,资源自由访问。IRQ:一般中断模式。硬件产生中断信号。FIQ:快速中断模式。时间紧急的中断,高速信号的传输、采集。Supervisor(SVC):管理模式。默认模式,系统初始化,软中断。Abort(ABT):数据访问终止模式。非法访问地址或寄存器、段错误。Undef(UND):未定义指令模式。程序跑飞、纂改。Monitor:用于用户安全扩展模式。Hyp:用于虚拟化扩展。r0~r3原创 2022-12-06 23:01:42 · 1315 阅读 · 0 评论 -
linux进阶-PC上的树莓派
windows11下操作:设置-网络和Internet-高级网络设置-更多网络适配器选项-找到无线网络网卡的属性(即wifi)-共享-勾选允许其它网络用户通过此计算机的Internet来连接-选择一个专用网络连接(有线网卡,即树莓派的网络)找到192.168.137.1网段的IP,推测树莓派的IP地址。可ping一下测试。找到有线网卡(显示未识别的网络)的属性-网络-TAP/IPv4-看此时的IP地址。前提是你的树莓派和笔记本都连着同一wifi,在同一网段上才可看到树莓派的IP地址。原创 2023-02-12 00:48:31 · 539 阅读 · 0 评论 -
Linux进阶-开发板、服务器、PC端互联
学习记录,采自韦东山的嵌入式linux开发。原创 2023-02-05 12:30:15 · 779 阅读 · 0 评论 -
Linux进阶-线程
Linux系统中的每个进程都有独立的地址空间,一个进程崩溃后,在系统的保护模式下并不会对系统中其他进程产生影响,而线程只是进程内部的一个控制序列,当进程崩溃后,线程也随之崩溃,所以一个多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率差一点。当在进程中创建一个子进程时,将创建该进程的一份新副本,子进程拥有自己的变量和PID,子进程的执行几乎完全独立于父进程,这样子开销是很大的。线程的本质:是一个进程内部的一个控制序列,属于进程里的东西。进程是资源管理的最小单位,线程是程序执行的最小单位。原创 2023-10-18 10:52:01 · 140 阅读 · 0 评论 -
Linux进阶-ipc共享内存
当不为NULL时,SHMFLG必须设置为SHM_RND,系统将会选择比shmaddr小而又最大的页对齐地址(即为SHMLBA的整数倍)作为共享内存区域的起始地址。共享内存思想:进程间虚拟内存空间本来相互独立,不能相互访问,但是可以通过某种方式使得相同的一块物理内存多次映射到不同的进程虚拟空间中,相当于多个进程的虚拟内存空间部分重叠在一起。共享内存:将内存进行共享,它允许多个不相关的进程访问同一个逻辑内存,直接将一块裸露的内存放在需要数据传输的进程前,供进程使用。,因此所有进程都可访问共享内存的地址。原创 2023-10-17 17:56:00 · 389 阅读 · 0 评论 -
Linux进阶-ipc信号量
当semval小于-sem_op时,相应信号量的等待进程数量就加1,调用进程被阻塞,直到semval大于或等于-sem_op时,调用进程被唤醒,执行相应的P操作。对某个进程,在指定了SEM_UNDO后,对信号量的当前值的修改都会反应到信号量调整值上,当该进程终止时,内核会根据信号量调整值重新恢复信号量之前的值,SEM_UNDO操作可以防止进程退出时没有释放信号量导致的死锁。,交回的资源数由sem_op决定,系统会把sem_op的值加到该信号量的信号量当前值semval上。原创 2023-10-17 16:33:48 · 200 阅读 · 0 评论 -
Linux进阶-ipc消息队列
msgrcv()函数把消息从消息队列取出(可以指定取出某一条消息),即从msqid标识符的消息队列读取消息并将消息存储在msgp中,读取后把此消息从消息队列中删除。收发消息需要具体的消息队列对象,函数作用就是创建或获取一个消息队列对象,并返回消息队列标识符。消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级,接收程序可以通过消息类型有选择地接收数据,而不像有名管道只能默认接收。消息队列可以实现消息的随机查询,消息不一定要以先进先出的顺序接收,也可以按消息的类型接收。原创 2023-10-17 14:14:32 · 300 阅读 · 0 评论 -
Linux进阶-ipc管道
父进程调用fork()函数启动一个子进程,子进程继承父进程的两个文件描述符pipefd[0]和pipefd[1],分别指向管道的读取端和写入端。由于无名管道是利用环形队列实现的,数据将从写入端流入管道,从读取端流出管道,达到进程间通信的目的。但是这个无名管道此时有两个读取端和两个写入端。向管道的写入端写入数据将会由内核缓冲,即写入内存中,直到从管道的读取端读取数据为止,而且数据遵循先进先出原则。ipc信号,一个信号从进程中产生,发送给另一个进程,传递的是信号值,没有具体的数据传递,因此可使用管道。原创 2023-10-16 17:53:30 · 224 阅读 · 0 评论 -
linux进阶-ipc信号(软中断信号)
异步信号是接收过程可控制之外的事件所生成的信号,这类信号一般是进程无法控制的,只能被动接收,因为进程也不知道这个信号会何时发生,只能在发生时去处理它。即使收到信号,进程也不一定会立即去处理它,因为系统不会为了处理一个信号而把当前正在运行的进程挂起,因为这样子系统的资源消耗过大。如果不是紧急信号,是不会立即处理的,所以系统一般都会选择在内核态切换回用户态时处理信号,比如有时候进程处于休眠状态,但是又收到一个信号,于是系统就得把信号存储在进程唯一的进程PCB中。信号的生成既可以是同步的,也可以是异步的。原创 2023-10-13 18:00:00 · 349 阅读 · 0 评论 -
Linux进阶-进程间通信(ipc)
进程间通信:数据传输、资源共享、事件通知、进程控制。原创 2022-11-30 00:54:05 · 1571 阅读 · 0 评论 -
Linux进阶-加深进程印象
僵尸进程的僵尸指的是进程的进程控制块PCB。因为进程在退出时,系统会将其退出信息都保存在PCB中(比如死亡原因),得以让父进程去排查(父进程之所以要启动该进程,很大原因是要让进程去干某一件事情,当该进程死亡,父进程当然要知道那一件事情办得怎样)当父进程由于太忙而没能及时去处理僵尸进程时,可以考虑使用信号异步通知机制(让一个孩子在变成僵尸时给其父进程发一个信号,父进程接收到这个信号后再对其进行处理)。当父进程先一步于子进程退出时,子进程将变成孤儿进程(没有父进程),孤儿进程将被祖先进程(init)收养。原创 2023-10-12 17:17:26 · 193 阅读 · 0 评论 -
Linux进阶-进程
子进程表项的内容来自于父进程,fork系统调用会将父进程的进程表项复制为副本,并分配给子进程。Linux内核会为子进程分配CPU时钟周期,在合适的时间将子进程调度上CPU运行,这时子进程处于内核态,子进程开始运行。被分配的CPU时钟周期结束时,Linux内核再次调度子进程,将子进程调出CPU,子进程进入用户态。最初,父进程通过fork系统调用创建子进程,子进程被创建后,处于创建态。进程执行exit系统调用后,Linux内核将删除进程的上下文,但保留进程表项,进程处于僵死态。两个进程之间并无父子关系。原创 2022-11-28 15:32:41 · 420 阅读 · 0 评论 -
Linux进阶-控制硬件设备
驱动程序:为硬件设备创建相应的设备节点文件。创建设备文件时,规定好设备文件的使用方式。应用程序:根据驱动程序规定的设备文件使用方式去控制硬件。原创 2022-11-28 16:27:22 · 758 阅读 · 0 评论 -
Linux进阶-文件IO操作
Linux内核:屏蔽硬件区别,把所有的硬件设备抽象成文件,提供统一的接口给用户使用。原创 2022-11-22 23:28:17 · 776 阅读 · 0 评论 -
Linux进阶-Makefile
学习了Makefile变量,对先前的mp3进行加深。原创 2022-11-22 01:05:37 · 1409 阅读 · 0 评论 -
Linux进阶-Git | 编译工具链 | 调试器
第三项:gnu-glibc库 eabi-应用二进制标准接口 hf-编译器支持硬浮点平台。ubuntu 安装ARM-GCC:apt install gcc-arm-linux-gnueabihf。在虚拟机中,得知gcc链接于x86_64-linux-gnu-gcc-11。ARM-GCC是GCC编译工具链的一个分支,针对arm平台的一款编译器。单片机一般链接于arm-linux-gnueabihf-gcc-8。安装ARM-GCC:apt install gcc。原创 2022-11-21 17:58:30 · 785 阅读 · 0 评论 -
linux进阶-构建deb软件安装包
deb包:Debian、Ubuntu、Deepin等Linux发行版的软件安装包。rpm包:RedHat、Fedora、Centos等Linux发行版的软件安装包。源码包缺点:安装步骤繁琐、编译时间长、新手无法解决编译问题。二进制包缺点:无法阅读修改源码、无法裁剪功能、依赖性强。源码包优点:开源免费、自由裁剪、修改源代码。安装软件:dpkg -i xxx.deb。二进制包优点:简单易用、安装速度快。查看安装目录:dpkg -L xxx。显示版本:dpkg -l xxx。卸载软件:dpkg -r xxx。原创 2022-11-20 21:15:18 · 1218 阅读 · 0 评论 -
Linux进阶-Shell编程与环境变量
例如:创建一个hello的c文件,意在终端输出hello world。然后编译这个c文件(gcc hello.c -o hello),然后把hell移动到/usr/bin/。管道(可将两个或多个命令连接在一起,上一个命令的输出信息会作为下一个命令的输入信息):command1 | command2。shell命令本质:内置命令/外部命令(应用程序)。常用的shell解释器:/etc/shells。指定解释器运行(/bin/bash)shell脚本常用后缀名:.sh。if elif else语句。原创 2022-11-20 02:47:16 · 821 阅读 · 0 评论 -
Linux进阶-包管理工具和编辑器、修改镜像源
vi只能运行于类unix系统中,而vim可以运行于unix,windows,mac等多操作平台;vi按u只能撤销上次命令,而在vim里可以无限制的撤销;可通过vimrc文件配置更加高级的功能。vim是vi的升级版本,兼容vi;vim可以用不同颜色高亮代码;一般模式(默认模式)插入模式(编辑模式)原创 2022-11-19 23:21:57 · 436 阅读 · 0 评论 -
Linux进阶-命令行
echo常用:echo 新文本内容 > 文件,">>"表示先删除文件原本的文本内容,然后再把新文本内容追加到文件开头。df常用:df -h,显示文件系统信息,包括块大小,已用,可用,挂载点等。ln常用:ln -s 源文件 链接文件,软链接。ln常用:ln 源文件 链接文件,硬链接。echo常用:echo 文本内容 >> 文件,">>"表示把文本内容追加到文件末尾。cp常用:cp -r 目录1 目录2,将目录1的内容复制到目录2。cp常用:cp 文件1 文件2,将文件1的内容复制到文件2。原创 2022-11-18 17:50:32 · 535 阅读 · 0 评论 -
Linux进阶-用户管理 | 文件权限 | 进程
etc/shadow:根据UID和GID查出用户,根据用户密码比对输入的密码是否一致,一致则跳到桌面。用户组:由一个用户或多个用户组成。用户与用户组关系可以为一对一、一对多、多对一、多对多。用户:Linux系统的使用者。包括了管理员、系统用户和普通用户。因为linux系统是一个多用户多任务的操作系统。加密密码由X表示,具体放在了shadow。/etc/passwd:获取UID。/etc/group:获取GID。原创 2022-11-17 20:04:57 · 430 阅读 · 0 评论 -
linux进阶-Linux基础知识
根目录:/查看根目录:ls -l或tree(若tree查询不到,则sudo apt-get install tree)。原创 2022-11-17 19:18:55 · 497 阅读 · 0 评论