02 2022 档案

摘要:信号的概念和机制 产生信号的方式 bg命令 :后台 fg命令:将后台执行恢复到前台 信号四要素和常规信号 常规信号一览表 kill函数和kill命令 alarm函数 一秒之后就会停下 setitimer函数 信号集操作函数 /************************************* 阅读全文
posted @ 2022-02-28 19:49 蘑菇王国大聪明 阅读(161) 评论(0) 推荐(0) 编辑
摘要:存储映射IO mmap函数 ! 其中文件的大小是小于等于真实文件大小,一般是等于。 权限一般是shared,private的话不会反应到磁盘上。 offset,默认0表示文件全部, 必须是4k的整数倍。 mmap基本使用 /************************************** 阅读全文
posted @ 2022-02-27 19:00 蘑菇王国大聪明 阅读(280) 评论(0) 推荐(0) 编辑
摘要:进程间通信方式 进程间之所以可以进行通信,是应为都在内核区,缓冲区的大小一般为4096字节 管道 管道使用函数 /************************************************************************* > File Name: pipe_t 阅读全文
posted @ 2022-02-27 16:12 蘑菇王国大聪明 阅读(137) 评论(0) 推荐(0) 编辑
摘要:孤儿进程 ps -ajx可以查看进程的父进程 僵尸进程 也就是子进程死亡父进程不管,不回收子进程,它就会变成僵尸进程,此时不能用kill杀死僵尸进程,这种情况只能杀死父进程,然后自己进程被init进程领养被释放 wait回收子进程 成功的话返回子进程进程id 通过下面的宏函数可以获取状态: 测试,使 阅读全文
posted @ 2022-02-27 10:52 蘑菇王国大聪明 阅读(59) 评论(0) 推荐(0) 编辑
摘要:execlp man execl: execl 执行ls 使用ps aux将数据写入一个文件中 使用dup2标准输出导入文件,标准输出会输出ps aux,再导入文件 阅读全文
posted @ 2022-02-26 18:36 蘑菇王国大聪明 阅读(27) 评论(0) 推荐(0) 编辑
摘要:原理 返回的值:父进程返回子进程PID,子进程返回0(类似成功创建的意思) fork基本代码 /************************************************************************* > File Name: fork_test.c > A 阅读全文
posted @ 2022-02-26 16:53 蘑菇王国大聪明 阅读(97) 评论(0) 推荐(0) 编辑
摘要:MCU MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元。 通过mmu可以将物理上不连续的内存映射到连续的虚拟地址上 内核映射到同一个物理地址上,所以进程间才可以有通信 MMU可以进行内存分级,Windows系统下有四级,Linux有两级,0 阅读全文
posted @ 2022-02-26 14:23 蘑菇王国大聪明 阅读(151) 评论(0) 推荐(0) 编辑
摘要:dup和dup2 返回值是int的文件描述符,参数是已有的文件描述符 此时打印的文件描述符为4,使用这个文件描述符可以访问打开的文件,可以通过这个往新的文件描述符写,主只需把打开方式改成可读可写即可。 dup2: 注意两个指针指向一个文件 如上所示,串口输出重定向也是这个原理 fcntl实现dup 阅读全文
posted @ 2022-02-26 10:53 蘑菇王国大聪明 阅读(64) 评论(0) 推荐(0) 编辑
摘要:ls -R 可以遍历到目录里面的文件 思路 代码 /************************************************************************* > File Name: ls_R.c > Author: shaozheming > Mail: 阅读全文
posted @ 2022-02-25 18:36 蘑菇王国大聪明 阅读(52) 评论(0) 推荐(0) 编辑
摘要:stat函数 代码: 文件mode测试: stat穿透 用上面的函数查看文件,在文件创建软连接之后,查看软连接的文件是可以看到本尊的文件格式的。不想穿透的话,使用lstat函数。 小技巧 在man查看函数使用时,使用G可以跳到结尾,一般在结尾处会有一些使用例子 经过掩码相与可以得到文件类型 阅读全文
posted @ 2022-02-25 16:25 蘑菇王国大聪明 阅读(81) 评论(0) 推荐(0) 编辑
摘要:如图所示:基于inode创建的所有文件指向的都是同一个inode,也就是快捷方式,相当于名字不一样,但是inode都一样,其实是一个文件。 但当所有文件都删除时,inode并不会删除,只有当创建一个新的inode覆盖原来的inode才会真正的删除。 所以格式化后的磁盘依然可以恢复数据,只需要恢复in 阅读全文
posted @ 2022-02-25 10:33 蘑菇王国大聪明 阅读(92) 评论(1) 推荐(0) 编辑
摘要:传入参数 指针作为函数参数 通常由const关键字修饰 指针指向内部有效区域,在函数内部做读操作 传出参数 指针作为函数参数 在函数调用之前,指针指向的空间可以无意义,但必须有效 在函数内部,做写操作 函数调用结束后,充当函数返回值 传入传出参数 指针作为函数参数 在函数调用之前,指针指向的空间必须 阅读全文
posted @ 2022-02-25 10:22 蘑菇王国大聪明 阅读(52) 评论(0) 推荐(0) 编辑
摘要:返回的是文件偏移量,是相对文件首的偏移量。 注意文件的读和写是使用同一位置的偏移 应用场景 此代码的执行结果是,当我写完了这个文件,如果还想再读是读不出来的,因为读和写是用的同一个位置的便宜,所以写完了之后,读的位置也是结尾,所以啥也没读出来,这时候需要用lseek函数偏移到文件首,才能读。 第二个 阅读全文
posted @ 2022-02-25 10:13 蘑菇王国大聪明 阅读(174) 评论(0) 推荐(0) 编辑
摘要:![image](https://img2022.cnblogs.com/blog/2411020/202202/2411020-20220225100912158-2050723845.png) 阅读全文
posted @ 2022-02-25 10:09 蘑菇王国大聪明 阅读(31) 评论(0) 推荐(0) 编辑
摘要:代码 /************************************************************************* > File Name: fcntl.c > Author: shaozheming > Mail: 957510530@qq.com > Cr 阅读全文
posted @ 2022-02-25 09:44 蘑菇王国大聪明 阅读(28) 评论(0) 推荐(0) 编辑
摘要:产生阻塞的场景: 读设备(dev)文件、读网络文件 tty就是显示终端设备,/dev/tty 这是会读到键盘的值并写道标准输出 第一个hello是自己输入的,是一直在等着,所以是阻塞 非阻塞的代码如下图所示: 此时read返回-1的时候,errno会变成EAGAIN或EWOULDBLOCK,表示非阻 阅读全文
posted @ 2022-02-24 17:49 蘑菇王国大聪明 阅读(66) 评论(0) 推荐(0) 编辑
摘要:PCB:进程控制块,用来描述进程的标志的,本质是个结构体,其中有一根指针指向文件描述符表 文件描述符表里面的成员都是一个指针,本质是key-value的键值对映射,value就是前面的指针。 文件描述符是指向一个文件结构体的指针!且是你使用open等函数打开的文件,就是返回的fd 操作系统并不会暴露 阅读全文
posted @ 2022-02-24 11:17 蘑菇王国大聪明 阅读(290) 评论(0) 推荐(0) 编辑
摘要:open 函数 返回的是文件描述符,-1就是发生了错误 第二个函数多了一个mode,是文件的权限,就是chmod 777中的777,打开一个文件,这个文件没有,就可以设置权限打开,文件存在就用两个形参的open函数。 上面列出了使用open函数需要include的库,使用unistd.h可以代替这三 阅读全文
posted @ 2022-02-22 18:35 蘑菇王国大聪明 阅读(326) 评论(0) 推荐(0) 编辑
摘要:基本规则 1.若想生成目标,检查规则中的依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件。 2.检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有人一个被更新,则目标必须更新 分析各个目标和依赖之间的关系 (目标的时间必须晚于依赖的时间) 根据依赖关系自底向上执行命令 (默 阅读全文
posted @ 2022-02-19 19:51 蘑菇王国大聪明 阅读(34) 评论(0) 推荐(0) 编辑
摘要:vim中的跳转 K 跳转到函数说明 *或# 跳转到自定义的函数上 /[d 查看宏定义 代码 /************************************************************************* > File Name: gdbtest.c > Auth 阅读全文
posted @ 2022-02-19 19:50 蘑菇王国大聪明 阅读(48) 评论(0) 推荐(0) 编辑
摘要:区别 假设库的大小是500M 静态库的时候,是把库都编译进程序中,每一个程序就多一个500M,因为实在自己程序里,所以调用的时候速度快 动态库是所有程序共享这个一个库,动态库会先保存在内存中,程序需要的时候会调用,比在自己的代码里多了一个进入内存的操作,所以速度比静态库慢 静态库适用于对空间需求低, 阅读全文
posted @ 2022-02-18 20:54 蘑菇王国大聪明 阅读(156) 评论(0) 推荐(0) 编辑
摘要:gcc编译 gcc编译程序四步骤 预处理、编译、汇编、链接 代码: gcc -I./(头文件目录) hello.c -o hello -I 可以指定头文件目录,-I放在哪个位置都可以, -I后面加不加空格都可以 -g 编译时添加调试文件 加入之后可以使用gdb调试,要使用gdb调试必须用-g -On 阅读全文
posted @ 2022-02-18 15:56 蘑菇王国大聪明 阅读(51) 评论(0) 推荐(0) 编辑
摘要:使用target remote 192.168.10.15:2001 连接成功后 命令集合 l命令 b命令 c命令 使用vscode { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft. 阅读全文
posted @ 2022-02-17 13:55 蘑菇王国大聪明 阅读(82) 评论(0) 推荐(0) 编辑
摘要:compatible:兼容性属性,必须的,可以设置为“fsl,vf610-adc”。 reg:ADC 控制器寄存器信息。 interrupts:中断属性,ADC1 和 ADC2 各对应一个中断信息。 clocks:时钟属性。 clock-names:时钟名字,可选“adc”。 vref-supply 阅读全文
posted @ 2022-02-17 13:31 蘑菇王国大聪明 阅读(118) 评论(0) 推荐(0) 编辑
摘要:工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC,大家注意查看这些传感器的手册,会发现他们内 阅读全文
posted @ 2022-02-16 21:36 蘑菇王国大聪明 阅读(2107) 评论(1) 推荐(0) 编辑
摘要:1.什么是regmap Linux 下大部分设备的驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备的本质都是一样的,通过 I2C/SPI 接口读写芯片内部寄存器。芯片内部寄存器也是同样的道理,比如 I.MX6ULL的 PWM、定时器等外设初始化,最终都是要落到寄存器的设置上。 Linux 下 阅读全文
posted @ 2022-02-16 18:15 蘑菇王国大聪明 阅读(223) 评论(0) 推荐(0) 编辑
摘要:缺乏lzop程序,安装即可 sudo apt-get install lzop 阅读全文
posted @ 2022-02-14 17:54 蘑菇王国大聪明 阅读(26) 评论(0) 推荐(0) 编辑
摘要:音频是我们最常用到的功能,音频也是 linux 和安卓的重点应用场合。I.MX6ULL 带有 SAI接口,正点原子的 I.MX6ULL ALPHA 开发板通过此接口外接了一个 WM8960 音频 DAC 芯片,本章我们就来学习一下如何使能 WM8960 驱动,并且通过 WM8960 芯片来完成音乐播 阅读全文
posted @ 2022-02-14 17:25 蘑菇王国大聪明 阅读(861) 评论(0) 推荐(0) 编辑
摘要:IO 复用功能选择器(IOMUXC)的寄存器非常多,主要可以分为四组:① IOMUXC_GPR 寄存器组,用于通用控制设置。② IOMUXC_SNVS 组,主要用于GPIO5 的控制。③ IOMUXC_SNVS_GPR 寄存器组,暂时没用到。④ IOMUXC 组,用于指定IO 的复用功能选择和IO 阅读全文
posted @ 2022-02-14 10:36 蘑菇王国大聪明 阅读(534) 评论(0) 推荐(0) 编辑
摘要:1.电容触摸屏驱动框架 1.1 MT协议讲解 ①、电容触摸屏是 IIC 接口的,需要触摸 IC,以正点原子的 ATK7016 为例,其所使用的触摸屏控制 IC 为 FT5426,因此所谓的电容触摸驱动就是 IIC 设备驱动。 ②、触摸 IC 提供了中断信号引脚(INT),可以通过中断来获取触摸信息。 阅读全文
posted @ 2022-02-13 20:21 蘑菇王国大聪明 阅读(751) 评论(0) 推荐(0) 编辑
摘要:1.Linux下SPI驱动框架 SPI 驱动框架和 I2C 很类似,都分为主机控制器驱动和设备驱动,主机控制器也就是 SOC的 SPI 控制器接口。比如在裸机篇中的《第二十七章 SPI 实验》,我们编写了 bsp_spi.c 和 bsp_spi.h这两个文件,这两个文件是 I.MX6U 的 SPI 阅读全文
posted @ 2022-02-13 19:30 蘑菇王国大聪明 阅读(696) 评论(0) 推荐(0) 编辑
摘要:I2C 是很常用的一个串行通信接口,用于连接各种外设、传感器等器件,在裸机篇已经对I.MX6U 的 I2C 接口做了详细的讲解。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件驱动,重点是学习 Linux 下的 I2C 驱动框架,按照指定的框架去编写 I2C 设备驱动。本章同样以 I. 阅读全文
posted @ 2022-02-12 18:24 蘑菇王国大聪明 阅读(305) 评论(0) 推荐(0) 编辑
摘要:RTC 也就是实时时钟,用于记录当前系统时间,对于 Linux 系统而言时间是非常重要的,就和我们使用 Windows 电脑或手机查看时间一样,我们在使用 Linux 设备的时候也需要查看时间。本章我们就来学习一下如何编写 Linux 下的 RTC 驱动程序。 1.Linux内核RTC驱动 RTC 阅读全文
posted @ 2022-02-12 18:18 蘑菇王国大聪明 阅读(364) 评论(0) 推荐(0) 编辑
摘要:1.Linux下LCD驱动简介 1.1 FrameBuffer 在 Linux 中应用程序最终也是通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息。在裸机中我们可以随意的分配显存,但是在 Linux 系统中内存的管理很严格,显存是需要申请的,不是你想用就能用的。而且因为虚拟内 阅读全文
posted @ 2022-02-12 17:45 蘑菇王国大聪明 阅读(497) 评论(0) 推荐(0) 编辑
摘要:1. Input子系统 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了 input 框架,用户只需要负责上报输入事件,比如按键值、坐标等信息,input 核心层负责处 阅读全文
posted @ 2022-02-12 16:05 蘑菇王国大聪明 阅读(506) 评论(0) 推荐(0) 编辑
摘要:misc 的意思是混合、杂项的,因此 MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动。MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动。 1. MISC 设备驱动简介 所有的 MISC 设备驱 阅读全文
posted @ 2022-02-11 20:22 蘑菇王国大聪明 阅读(98) 评论(0) 推荐(0) 编辑
摘要:1.自带led驱动使能 2.自带led驱动介绍 2.1 驱动框架分析 2.2 module_paltform_driver 2.3 gpio_led_probe 当驱动和设备匹配以后 gpio_led_probe 函数就会执行,此函数主要是从设备树中获取 LED灯的 GPIO 信息,缩减后的函数内容 阅读全文
posted @ 2022-02-11 19:44 蘑菇王国大聪明 阅读(432) 评论(0) 推荐(0) 编辑
摘要:前面编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作。像I2C、SPI、LCD 等这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生了我们将来最常打交道的platform 设备驱动,也叫做平台设备驱动。 1 阅读全文
posted @ 2022-02-11 18:56 蘑菇王国大聪明 阅读(785) 评论(0) 推荐(0) 编辑
摘要:1.异步通知 在前面使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取或写入数据,类似于我们在裸机例程中讲解的中断。Linu 阅读全文
posted @ 2022-02-10 20:31 蘑菇王国大聪明 阅读(118) 评论(0) 推荐(0) 编辑
摘要:1.阻塞和非阻塞IO 1.1 简介 阻塞IO:当应用程序申请不到内核资源时,程序进入阻塞状态直至被唤醒 代码如下图所示 非阻塞IO:当申请不到内核资源时,会轮询访问,此时CPU忙 代码如下图所示 1.2 等待队列 等待队列头 阻塞访问最大的好处就是当设备文件不可操作的时候进程可以进入休眠态,这样可以 阅读全文
posted @ 2022-02-09 19:24 蘑菇王国大聪明 阅读(469) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示