arm linux 从入门到精通
文章平均质量分 84
本专栏会以实际工作中的驱动为基础编写,有理论也有实际的驱动,如有需要的可与博主联系。也会持续更新下去。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
嘭噗
玩归玩,闹归闹,别拿工资开玩笑
展开
-
ARM -- 栈
栈其实就是一种数据结构,在ARM中所有的寄存器出入栈都是代码行为,当然C语言是没有这种行为,是编译器帮我们添加进去的,内核除了帮我们把返回地址写入LR寄存器以外不会有其它“自动”行为。原创 2023-03-27 09:33:40 · 328 阅读 · 0 评论 -
linux 启动文件夹-init.d
当kernel被BootLoader引导起来后,就进行一系列的初始化动作,当初始化所有的设备驱动程序和数据结构完毕后,第一件事会去调用init的程序,去完成引导流程。所以init进程是第一个进城,编号始终为1。init进程启动后会首先去读取**/etc/inittabinitdefault id**值,这个值决定了系统的启动级别,决定需要运行/etc/下哪一个rcX.d文件。,具有不同的功能。值得注意的是,在debian和Ubuntu下并没有这个文件,他们有自己的处理方式。原创 2023-03-14 15:04:16 · 1451 阅读 · 0 评论 -
中断线程化
中断线程化以后中断将作为内核线程运行,而且也可以被赋予不同的优先级,任务的优先级可能比中断线程的优先级高,这样做的目的就是保证高优先级的任务能被优先处理。要注意,并不是所有的中断都可以被线程化,重要的中断就不能这么操作。原创 2022-09-20 22:14:25 · 693 阅读 · 0 评论 -
linux驱动 -- touch screen
touch驱动从结构来说其实很简单,就是i2c,irq,input的结合体,如果需要更升入的了解就需要多去看看相关芯片的源码。原创 2022-09-23 10:56:09 · 700 阅读 · 0 评论 -
内存管理 -- 快表 TLB (Translation Look-aside Buffers)
因为虚拟内存的存在,它最终还是要去访问物理内存,中间就需要通过映射,来达到获取内存中数据的目的。而映射就需要建立虚拟内存与物理内存的关系,这就有了页表的存在。页表存在于进程的内存之中,收到虚拟地址之后查询来获取物理地址。处理器把虚拟地址给到,然后通过查表的方法找到与虚拟地址对应的物理地址。此时问题就出现了,如果只有一级的页表查找速度是会非常快,但会占去很大一部分内存,如:对于4GB的虚拟地址且大小为4KB页,一级页表将有2^20个表项,页表占有连续内存并且存储空间大多级页表把需要的用到的页复制到内存中原创 2022-07-08 09:39:14 · 4888 阅读 · 0 评论 -
Linux 驱动 – Backlight 驱动
Backlight驱动其实很简单,在框架的基础上去实现必要的函数之后,就能很轻易的使用它。这种代码风格也值得我们的借鉴。Backlight驱动其实很简单,在框架的基础上去实现必要的函数之后,就能很轻易的使用它。这种代码风格也值得我们的借鉴。原创 2022-09-14 01:36:29 · 1058 阅读 · 0 评论 -
linux内存管理 -- Slab
碎片即一个完整的东西被打碎,零散的分布着。这就像内存,如果不加以管理,就会有很多未被使用的碎片,造成内存的浪费。在linux中,内存是以页(page)来管理的,一page一般为4KB,而外部/内部碎片就是以page为界线划分的。内部碎片就是指被内核分配出去但是不能被利用的内存,而外部碎片是指由于频繁地申请和释放页框而导致的某些小的连续页框,比方只有一个页框,无法分配给需要大的连续页框的进程而导致的内存碎片。如一个page的前后都被分配了出去,没有其他page与之相连,这个page就成了外部碎片。这时候bu原创 2022-06-29 15:33:35 · 2971 阅读 · 2 评论 -
Linux 驱动 – Frame Buffer (帧缓冲)显示驱动
info`结构体。总的来说,Frame Buffer的驱动还是很简单的,与misc驱动一样,都是通过主设备号的file_fops方法去控制下面的子设备。一般来说驱动都是芯片厂家写好了的,我们只需要去配置参数就可以了,但对于入这一行的人来说,也需要去了解驱动的原理,遇事则不慌。至于驱动的实现则放在我另一个专栏里,欢迎大家去看并指正。......原创 2022-08-03 11:45:33 · 1696 阅读 · 0 评论 -
内核已经实现了信号量机制,为什么还需要单独设置一个Mutex 互斥体机制呢?
在linux中,除以外,还有一个互斥体,这两个实现很类似。是在并行处理环境中对多个处理器的访问某一个公共资源进行保护机制,原创 2022-06-22 22:28:39 · 351 阅读 · 0 评论 -
内存管理 -- 伙伴系统(buddy system)
是内核用来管理物理内存的一种算法(需要注意的是它是用来管理物理内存的,而不是映射后的虚拟内存),在物理内存中会除了内核和一些特殊用途的内存外,其余的空闲内存就会交给内核内存管理系统统一管理和分配。如果没有就会出现内存断断续续的情况,如:假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪费。就是为了(注意:是缓解!!!),它把管理起来的内存分为了不同原创 2022-06-26 22:30:36 · 6342 阅读 · 0 评论 -
linux 驱动 PWM 控制灯光亮度
例如:第一章 Python 机器学习入门之pandas的使用linux 下的PWM 驱动,并控制灯光的强弱。PWM它是由3个字母构成,而这3个字母就是3个单词的缩写,分别为pulse脉冲,width度,modulation调制,你对英文不感冒也没关系,只要记住他们对应的汉语就可以,三个单词合起来就是脉冲宽度调制。脉冲宽度调制PWM主要应用于变频,稳压,逆变电源,以及加热系统等。这里有一个知识点–,它跟这个PWM有着密不可分的 联系,而PWM也可以说成占空比可调的方波。我们画一个直角Z字形,这是一个周期,原创 2022-06-20 00:10:12 · 749 阅读 · 0 评论 -
Linux驱动 – 设备号
在linux驱动中,有很多应用此方法的地方,fb,iic,spi,misc等都是使用的此方法来管理设备,这样的好处就是能节省主设备号的消耗,能分类管理设备。httpshttpshttpshttpshttpshttpshttps。原创 2022-07-28 18:15:18 · 664 阅读 · 0 评论 -
linux内核原子机制
当你对一个简单的变量操作时,如从表面上来看只有一句话,一个操作,但通过汇编来看是它其实分为三步这在平时使用中是完全没有问题的,而在高并发的环境中就会存在很大的问题。假如线程A向value中写入10,同时B向value中写入20.正常的情况下两者会顺序的执行。但实际上有可能会出现:就这导致了A没有达到预期的效果,导致出现不可预计的错误。这时候就需要一个能够把这个操作绑定为一个整体来做,就出现了。在微观中是最小的、不可分割的,我们一些操作也需要这样的效果,所以就取名为。在内核中提供了接口来实现原子原创 2022-06-23 15:48:43 · 105 阅读 · 0 评论 -
Linux字符设备驱动–SPI LCD驱动
在中介绍了的驱动,本章会介绍如何从零开始写一个LCD驱动,我手上的是接口的驱动,在中,有一个专门为接口设立的子驱动(TFT),但本章并没有使用驱动来完成该程序,而是直接使用驱动来完成。本次使用的是驱动芯片,屏幕大小是1.3寸,240*240的屏幕,十几块钱一个,我们会用到的数据线有四根,分别是、两个数据传输线,复位线,数据与命令切换线。百度上该资料的屏幕很多,可以自行去查看,本章着重讲如何去写一个的驱动。屏幕采用的是总线,加上和线,所以我们需要一个的驱动框架打底,这是一切的基础。驱动会去设备树中寻找匹配设原创 2022-09-07 14:15:03 · 1034 阅读 · 0 评论 -
Linux字符设备驱动–DHT11
通过波形图我们可以知道,当主机发出起始信号后,从机不论发出的0还是1,一共会发出41个波形,从中我们就可以提取出相应的特征–他们都是从下降沿开始,到下一个下降沿为结束。可以拿这段时间的长短来作为判断0和1的依据。在本章中我们使用了platform,iio等方法来完成这个驱动,也使用了中断来避免使用延时来判断信号,大大的提高了工作效率。return0;}{},};},};#四、总结httpshttpshttpshttpshttpshttps。...原创 2022-07-24 00:12:47 · 1093 阅读 · 0 评论 -
linux字符设备驱动–led驱动
在嵌入式行业中,很多的开发人员主要的开发旋律就是拿开源,厂家的代码来完成产品的功能,然后在此基础上提升去产品的性能,修改定制的需求,然后一搞就是好几年。这对一个公司来说确实没有问题,因为需要保证项目的的开发进度和代码的可靠性,但这对一个码农来说却不是一件好事,这会让我们去忘记、忽略一些基础的技能,导致员工没有进步的空间,一直停留在原地。针对当前的现状,想从基础的开始一步一步来帮助初学者来学习Linux和巩固自己的基础,当然自己的能力也有限,有一些观点只代表了自己的所想,这也是博主第一次写教程,有错误的地方也原创 2022-07-13 18:37:18 · 140 阅读 · 0 评论