Linux开发
文章平均质量分 87
编程之魅
这个作者很懒,什么都没留下…
展开
-
图解LCD原理-调色板与Framebuffer原理
那么当使用像素深度为8pp时候,像素深度和我们的带宽不一致,我们的颜色要用16位表示,如果直接用上肯定不可能,那我们就可以选择用调色板,调色板中存放了256种16bpp的颜色,这时候我们color存放的就不是真实的颜色值了,而是存放的是调色板中256种颜色的索引,成线性关系一一对应,这样我们大大减轻了系统的负担。用16bpp还是8bpp这得取决实际情况,16bpp肯定比8pp清晰,但同时带来的负荷也更加重。16BPP中,本来用16bit表示1像素,也可用利用调色板,用8位表示;16/24BPP:真彩色。原创 2024-07-04 09:45:00 · 983 阅读 · 0 评论 -
MIPI接口LCD调试-DRM显示与应用调试
就是屏幕,比如主控芯片通过HDMI、MIPI DSI,分别接2个屏幕显示,就会有2个对应的Connectors ID;原创 2024-07-03 14:30:00 · 629 阅读 · 0 评论 -
Linux屏幕驱动开发调试笔记
首先了解下什么是MIPI-DSIMIPI-DSI是一种应用于显示技术的串行接口,兼容DPI(显示像素接口,)、DBI(显示总线接口,)和DCS(显示命令集,),以串行的方式发送像素信息或指令给外设,而且从外设中读取状态信息或像素信息,而且在传输的过程中享有自己独立的通信协议,包括数据包格式和纠错检错机制。下图所示的是MIPI-DSI接口的简单示意图。MIPI-DSI。原创 2024-07-03 10:00:00 · 788 阅读 · 0 评论 -
判断磁盘是SSD或HDD盘
lsblk -d -o name,rota命令,0表示SSD,1表示HDD下载工具执行检测命令。原创 2024-07-02 13:45:00 · 167 阅读 · 0 评论 -
Linux操作系统学习——启动
Linux操作系统内核是服务端学习的根基,也是提高编程能力、源码阅读能力和进阶知识学习能力的重要部分,本文开始将记录Linux操作系统中的各个部分源码学习历程。关于如何学习源码,个人觉得可以从以下角度入手,有效地提高阅读和学习的效率。(学习语言就不说了,这是基本功。学习IDE推荐Source Insight或者Visual Studio,网站源码阅读推荐woboq)理解代码的组织结构。以Linux源码举例,首先你得知道操作系统分为哪几个部分,他们单独做了什么功能,如何进行配合完成更为具体的功能。原创 2024-07-01 23:47:25 · 925 阅读 · 0 评论 -
Linux操作系统学习——内核运行
上文中,我们分析了从按下电源键到BootLoader完成加载的过程。加载完成之后,就要正式启动Linux内核了,而在这之前首先要完成从实模式到保护模式的切换。本文主要分析以下几部分内容新旧中断的交替打开A20进入main函数内核初始化其实整个过程中还有很多内容,比如检查各种硬件设备等,在此略过不提。下面就开始潜入Linux源码的海洋畅游啦。本文介绍了实模式到保护模式的整个切换过程,完成了内核的加载并开始正式准备创建0号进程。后续将继续分析启动内核创建0号、1号、2号进程的整个过程。原创 2024-06-28 10:45:00 · 754 阅读 · 0 评论 -
Linux操作系统学习——内核初始化
前文分析到Linux内核正式启动,完成了实模式到保护模式的切换,并做好了各种准备工作。下来就要看开始内核初始化工作了,源码位置位于init/main.c中的start_kernel(),源码如附录所示。这包括了一系列重要的初始化工作,本文会介绍其中一部分较为重要的,但是详细的介绍依然会留在后文各个模块的源码学习中单独进行。本文的目的在于承接上文给出一个从内核启动到各个模块开始运转的过程介绍,而不是详细的各部分内容介绍。创建0号进程:INIT_TASK(init_task)原创 2024-06-28 10:30:00 · 829 阅读 · 0 评论 -
Linux操作系统通过实战理解CPU上下文切换
Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、从哪里运行,也就是说需要系统提前帮它设置好CPU寄存器和程序计数器。原创 2024-06-27 13:30:00 · 757 阅读 · 0 评论 -
Linux操作系统内存管理之磁盘高速缓存机制
相信通过前面的虚拟文件系统VFS及一个具体的Ext2文件系统博文,大家对基本的VFS体系有一个大致的掌握了吧。从本章开始,我们将讨论一些VFS底层的技术细节,磁盘高速缓存就是其中一个重要的技术。磁盘高速缓存是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问而不用再访问磁盘。因为对同一磁盘数据的反复访问频繁发生,所以磁盘高速缓存对系统性能至关重要。与磁盘交互的用户进程有权反复请求读或写同一磁盘数据。此外,不同的进程可能也需要在不同的时间访问相同的磁盘数据。原创 2024-06-27 10:30:00 · 930 阅读 · 0 评论 -
Linux操作系统内存管理RAID磁盘阵列与配置
2、使用fdisk工具将新磁盘设备/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde划分出主分区sdb1、sdc1、sdd1、sde1,并且把分区类型的 ID 标记号改为“fd”把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。组成磁盘阵列的不同方式称为RAID级别(RAID Levels)RAID0、RAID1、RAID5、RAID6、RAID1+0等。⑤、RAID 1+0(先做镜像,再做条带)⑥、RAID 0+1(先做条带,再做镜像)①、RAID 0(条带化存储)原创 2024-06-26 12:00:00 · 979 阅读 · 0 评论 -
Linux操作系统进程同步的几种方式及基本原理
其中sem=1表示进程PA和PB都未进入类名为S的临界区,sem=0表示进程PA或PB已进入类名为S的临界区,sem=-1表示进程PA和PB中,一个进程已进入临界区,而另一个进程等待进入该临界区。:一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发进程间的直接制约。在并发进程中,一个或多个进程要对公用资源进行访问时,必须确保该资源处于空闲状态,也就是说,在并发进程中,临界区只允许一个进程进入,而其他进程阻塞,等待该共享临界资源释放。该信号即为信号量s。原创 2024-06-25 17:00:00 · 774 阅读 · 0 评论 -
Linux操作系统进程的状态和转换(五态模型)
为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。三态模型和五态模型都是假设所有进程都在内存中的事实上有序不断的创建进程,当系统资源尤其是内存资源已经不能满足进程运行的要求时,必须把某些进程挂起(suspend),对换到磁盘对换区中,释放它占有的某些资源,暂时不参与低级调度。挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。原创 2024-06-26 11:00:00 · 744 阅读 · 0 评论 -
Linux操作系统基础的常用命令
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。Linux出现于1991年,是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成。原创 2024-06-25 09:45:00 · 329 阅读 · 0 评论 -
Linux操作系统汇编指令入门级整理知识点
我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在写代码时遇到了成员函数权限及可见性的问题,导致他无法正确调用想执行的函数,结果他就开始在 C++ 代码里嵌入汇编了,绕过了种种限制终于如愿以偿,但是读代码的时候我们傻眼了…原创 2024-06-24 17:00:00 · 666 阅读 · 0 评论 -
Linux操作系统汇编语言基础知识(图文代码)
汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言。原创 2024-06-24 09:00:00 · 809 阅读 · 0 评论 -
Linux操作系统段式存储管理、 段页式存储管理
用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;对系统讲,按页划分每一段)逻辑地址:内存划分:按页式存储管理方案内存分配:以页为单位进行分配全部优点2. 提供了虚存空间,能更有效利用主存缺点:增加了硬件成本系统复杂度较大[外链图片转存中…(img-jMCdSzgh-1719021894217)]原创 2024-06-23 15:30:00 · 332 阅读 · 0 评论 -
Linux操作系统处理器调度基本准则和实现
如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。调度算法和方式的不同,也会对系统的吞吐量产生较大的影响。当某一个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。原创 2024-06-23 09:45:00 · 794 阅读 · 0 评论 -
Linux操作系统IO机制原理(流程图详解)
我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯片、导线、电源和其他组成硬件的物理设备。而我们程序员眼中的 I/O 其实就是硬件提供给软件的接口,比如硬件接受到的命令、执行的操作以及反馈的错误。原创 2024-06-22 10:04:04 · 1085 阅读 · 0 评论 -
Linux操作系统ARM指令集与汇编语言程序设计
应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。将生成的二进制代码用烧写脚本烧写到SD卡中,插入开发板的SD卡槽,从SD卡启动,按下按键即开启LED流水灯模式。通过掩码取出按键数据地址中的值的状态来判断按键是否按下,若按下则跳转到LED流水灯的程序当中。流水灯程序即顺序的程序结构,依次点亮LED灯,延时并熄灭,达到流水效果。把按键控制地址的内容全置零,为输入模式(复位值为0,此步骤可省略)。1.了解并掌握ARM汇编指令集。原创 2024-06-22 10:03:31 · 302 阅读 · 0 评论