随笔分类 -  Linux

1 2 3 4 5 ··· 7 下一页
Linux 编程,普通操作知识
摘要:需求 Linux程序中,常有这样的需求:判断当前程序是否为root权限启动。如果是,正常运行;如果不是,则打印日志,退出程序。 root用户特点 要判断是否为root权限启动,可以先看看root用户特点。root用户典型特点:UID(用户id)为0,GID(组id)为0。 每个用户有对应唯一UID值 阅读全文
posted @ 2023-03-30 09:24 明明1109 阅读(1144) 评论(0) 推荐(0) 编辑
摘要:获取磁盘信息方式 Linux中,可以在终端用df -h,fdisk -l等命令,查看磁盘信息,但C/C++程序中,如何查看呢? 可以使用statvfs, fstatvfs调用。 statvfs, fstatvfs 函数说明 有2个接口能获取磁盘信息方式,statvfs需要传入一个C风格Posix路径 阅读全文
posted @ 2023-03-13 19:43 明明1109 阅读(3639) 评论(0) 推荐(0) 编辑
摘要:例程源码exmaple1 本地源码路径freetype-2.10.2/docs/tutorial/example1.c or 官网地址:https://freetype.org/freetype2/docs/tutorial/example1.c 例程主要工作:在控制台打印一行字符串对应的用free 阅读全文
posted @ 2022-09-04 17:29 明明1109 阅读(1181) 评论(0) 推荐(0) 编辑
摘要:矢量字体 什么是矢量字体? 点阵字库显示英文字母和汉字时,大小固定,如果放大或缩小,会出现模糊、锯齿等现象。为了解决该问题,可以使用矢量字体(Vector font)。矢量字体又叫Outline font,即轮廓字体。 矢量字体形成有3步: 1)确定关键点; 2)使用数学曲线(贝塞尔曲线)连接关键点 阅读全文
posted @ 2022-09-04 16:05 明明1109 阅读(8926) 评论(0) 推荐(2) 编辑
摘要:思路 使用交叉编译器编译freetype库源码,将得到的头文件和库文件拷贝到交叉编译器所在目录,从而进行安装。 编译环境 交叉编译器:arm-linux-gnueabihf-gcc (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11)) EVK(评 阅读全文
posted @ 2022-09-02 21:59 明明1109 阅读(1545) 评论(0) 推荐(0) 编辑
摘要:LCD控制原理 Linux系统通过Framebuffer(帧缓冲)驱动程序控制LCD。显示设备也被称为帧缓冲设备。Frame表示帧,buffer表示缓冲。这就是说,Framebuffer是一块内存,里面存放着一帧图像,每帧图像包含每个像素颜色值。BPP,像素深度,指存储每个像素所用的位数,通常值为1 阅读全文
posted @ 2022-08-19 15:10 明明1109 阅读(827) 评论(0) 推荐(0) 编辑
摘要:工作队列work queue 工作队列(work queue)是中断下半部的一种实现机制,主要用于耗时任务处理,由内核线程代表进程执行。工作队列运行于进程上下文,因此允许阻塞。 运行工作队列的内核线程,称为工作者线程(worker thread),可以使用系统默认的,也可以自行创建(通常无必要理由不 阅读全文
posted @ 2022-07-18 21:59 明明1109 阅读(1682) 评论(0) 推荐(1) 编辑
摘要:tasklet tasklet 是中断下半部的一种实现机制,主要用于小任务处理,耗时较短、不能阻塞的任务,用tasklet处理较合适。对于耗时较长,可以用work queue(工作队列)来处理。 tasklet和内核定时器timer_list都是通过软中断方式来实现的。 tasklet结构体 中断下 阅读全文
posted @ 2022-07-18 14:41 明明1109 阅读(573) 评论(0) 推荐(0) 编辑
摘要:内核定时器 软件意义的定时器依赖于硬件定时器来实现,内核在时钟中断发生后检测各定时器是否到期,到期后定时器处理函数将作为软中断在底半部执行。实质上,时钟中断处理程序会唤起TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。 定时器数据结构与函数 Linux设备驱动编程中,可利用Lin 阅读全文
posted @ 2022-07-16 20:39 明明1109 阅读(908) 评论(0) 推荐(0) 编辑
摘要:基本概念 PinCtrl:Pin Controller,是一个虚拟概念,用于设置IOMUX,让某个引脚连接到指定模块,从而实现某个功能。不同于GPIO子系统,可用于GPIO功能、I2C功能等。 GPIO子系统:配置引脚输入、输出功能,设置方向等GPIO模块内功能。 不过,大多数的芯片并没有单独的IO 阅读全文
posted @ 2022-07-14 08:45 明明1109 阅读(1936) 评论(0) 推荐(0) 编辑
摘要:Linux驱动的软件架构 基本思想:将驱动与设备分离,具体来说,驱动只管驱动,设备只管设备,总线负责匹配设备和驱动,而驱动以标准途径拿到板级信息。 设备指与项目有关的板级信息,项目用到的板级资源;驱动指对芯片、对硬件的操作。 Linux字符设备驱动需要编写file_operations成员函数,并负 阅读全文
posted @ 2022-07-11 15:03 明明1109 阅读(695) 评论(0) 推荐(0) 编辑
摘要:在虚拟设备驱动中,分配一片大小为GLOBALMEM_SIZE(4KB)的内存空间,用于实现自定义的虚拟字符设备globalmem实例。 globalmem 没有任何实用价值,仅用于讲解问题。 globalmem设备驱动 头文件、宏、设备结构体 定义globalmem设备结构 #include <li 阅读全文
posted @ 2022-07-10 22:11 明明1109 阅读(504) 评论(0) 推荐(0) 编辑
摘要:设备树简介 一个设备信息用树形结构表示如下: from http://www.100ask.org/ 如何用设备树进行描述呢? /{ // 表示root节点 cpu{ // cpu节点 name = val; // 属性名name,val是属性值。val形式:1)"string"(双引号括起来);2 阅读全文
posted @ 2022-06-23 16:29 明明1109 阅读(12710) 评论(0) 推荐(2) 编辑
摘要:这部分主要讲Linux字符设备驱动程序的结构,解释主要组成部分的编程方法。 字符设备 **字符设备:**指只能一个byte一个byte读写的设备,不能随机读写数据,要按先后顺序。字符设备是面向流的设备,常见字符设备有鼠标、键盘、串口、终端、LED灯。 **块设备:**指可以从设备的任意位置读取一定长 阅读全文
posted @ 2022-06-21 14:42 明明1109 阅读(1166) 评论(0) 推荐(0) 编辑
摘要:Linux内核模块简介 模块的基本概念 Linux内核非常庞大,包含很多组件。我们如何把需要的部分包含在内核中? 两种办法: 1)把所有需要的功能都编译进内核中。 会导致2个问题:生成的内核会非常大;为现有内核添加、删除功能,将不得不重新编译。 2)不包含所有功能,需要的时候,动态地加载代码到内核。 阅读全文
posted @ 2022-06-20 08:25 明明1109 阅读(7493) 评论(0) 推荐(1) 编辑
摘要:找一个进程可用端口号 如果我们想尝试哪个端口号可用,然后监听该端口,该如何处理?比如FTP协议里面有这样一个需求,PASV模式下,Server需要监听本地数据端口,通常是找一个随机端口号进行监听。而且每收到一个客户PASV命令后,就需要提供一个不同的数据端口,这也就是说,不能两个连接同时使用同一个数 阅读全文
posted @ 2022-06-12 11:22 明明1109 阅读(1324) 评论(0) 推荐(0) 编辑
摘要:背景 进程主要分为两部分: 1)进程管理,见Linux进程管理。 2)进程调度,见Linux进程调度。 进程调度程序,也称调度程序,是内核的组成部分,负责选择下一个要运行的进程。 意义 只有合理的调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行效果。 [ ] 调度策略 调度程序原则 最大限 阅读全文
posted @ 2022-06-06 16:52 明明1109 阅读(1544) 评论(0) 推荐(0) 编辑
摘要:背景 进程主要分为两部分: 1)进程管理,见Linux进程管理。 2)进程调度,见Linux进程调度。 这部分主要讲进程管理。 进程和文件是Unix OS的2个最基本抽象。一个进程就是处于执行期的程序。 进程包括:一段可执行程序代码(代码的text section),打开的文件、挂起的信号、内核内部 阅读全文
posted @ 2022-06-05 23:17 明明1109 阅读(442) 评论(0) 推荐(0) 编辑
摘要:背景 Linux中断上半部,参见Linux中断和中断处理程序 。 Linux中断下半部,参见Linux中断下半部及推后执行的工作。 这部分讲中断下半部和推后执行的工作。 中断处理程序(中断上半部)的局限: 以异步方式执行,并且有可能打断其他重要代码(包括其他中断处理程序)的执行。因此,中断处理程序应 阅读全文
posted @ 2022-06-04 20:59 明明1109 阅读(533) 评论(0) 推荐(0) 编辑
摘要:I/O复用简介 传统的编程模型中,要确定某个文件描述符是否发生关心的事件,需要对其进行轮询。一旦要监听的文件描述符数量众多,可能会导致效率很低。 I/O 复用技术能有效减少需要轮询的文件描述符数量,将其缩减至1个,即I/O复用的系统调用本身,同时,程序也能监听多个文件描述符。这对提高程序性能很重要。 阅读全文
posted @ 2022-05-31 15:45 明明1109 阅读(794) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页