Linux系统编程
文章平均质量分 89
TECH_PRO
Hello,world!
展开
-
嵌入式Linux环境变量分区制作
嵌入式Linux环境变量分区制作嵌入式环境变量分区准备一个存放环境变量的文本文件制作环境变量的工具制作环境变量分区镜像制作嵌入式环境变量分区在做嵌入式linux系统开发的时候,为了方便bootloader的管理,有时需要将bootloader本身和环境变量分开来保存,这样更方便管理。那么如何来制作一个环境变量的镜像呢?之前有在网上搜索,但是没有找到完整切详细的制作环境变量镜像的文章或者教程,因此我这边打算详细的写一个制作环境变量的教程(以uboot为例)。准备一个存放环境变量的文本文件准备一个文本文原创 2020-11-14 09:15:18 · 1157 阅读 · 1 评论 -
Linux编程基础之多线程编程(一)
本文首先来讲解一下Linux多线程编程的基本概念和操作,然后编写一个测试的小例子进行实例说明。一、多线程编程基础我们知道,在linux系统中,进程是程序执行和资源分配的基本单位,每个进程都拥有自己的数据段、代码段和堆栈段,这就导致了进程在进行上下文切换的时候都必须进行一些相对复杂的进程上下文切换的工作。所以为了克服这个问题,进程在演化过程中出现了另一种概念——线程。它是进程内独立运行的一条原创 2017-05-08 08:51:14 · 467 阅读 · 0 评论 -
Linux编程基础之多线程编程(二)
上一文中简单的说了一下Linux多线程编程的基本操作,这一文来简单的说一说线程之间的同步和互斥。首先说一下多线程之间同步和互斥的基本概念和操作,然后编写一个小例子进行测试。一、基本概念和操作由于线程之间对资源和存储空间是共享的,因此对这些资源进行操作和访问时,必须考虑多线程之间的同步和互斥问题。在POSIX中有两种线程的同步机制:互斥锁和信号量。互斥锁比较适用于同时可用资源是唯一的情况,而原创 2017-05-08 09:23:35 · 378 阅读 · 0 评论 -
Linux编程基础之多线程编程(三)
上文中简单的说了一下互斥锁在多线程同步上的应用,本文来简单的说一说信号量在多线程同步之间的应用。首先来简单的说一说信号量在多线程之间同步的基本概念和操作,然后编写一个小例子对其进行测试。一、信号量的基本概念和操作信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。这里先来简单复习一下PV 原子操作的工作原理。PV 原子操作是对整数计数器信号量sem 的操作。一次P 操作使se原创 2017-05-08 10:09:16 · 384 阅读 · 0 评论 -
基于嵌入式Linux的LCD液晶点阵显示的基本实现
本文以嵌入式Linux为板载系统。写一个测试LCD液晶点阵的小例子,在这个小例子当中主要实现液晶点阵的中文和英文实现。一、前期准备工作1、基本开发环境PC机 : Ubuntu9.10gcc版本 : gcc version 4.3.2板载系统 :Linux(kernel version Linux-3.4.10)2、字体文件的准备因为本测试程序要实现液晶点阵的中英原创 2017-06-16 07:07:04 · 3897 阅读 · 0 评论 -
基于嵌入式linux的freetype矢量字体简单显示的实现
一、freetype简介FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,可以非常方便我们开发字体显示相关的程序功能。它支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。关于freetype的详细信息可以参原创 2017-06-18 20:35:25 · 3157 阅读 · 1 评论 -
编译Linux内核时生成的映像文件vmlinux uImage与zImage的区别
http://www.cnblogs.com/pigeon84/articles/2212404.htmlhttp://blog.csdn.net/ultraman_hs/article/details/52838989http://www.cnblogs.com/achsnw/p/4025312.html转载 2017-09-25 14:03:45 · 2148 阅读 · 0 评论 -
U-Boot启动过程完全分析
写的很好的一个总结:http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html转载 2017-09-25 22:52:50 · 440 阅读 · 1 评论 -
Linux应用编程基础之多路复用:select和poll的简单使用示例
一、基本原理在linux编程基础中,select和poll的I/O多路转接复用模式是处理I/O复用的一个高效的方法。它可以具体设置程序中每一个所关心的文件描述符的条件、希望等待的时间等,从select()和poll()函数返回时,内核会通知用户已准备好的文件描述符的数量、已准备好的条件等。通过使用select()和poll()函数的返回结果,就可以调用相应的I/O 处理函数。在这种模型下,如果原创 2017-09-03 10:17:19 · 780 阅读 · 0 评论 -
将binder和socketpair结合实现任意进程间的双向通讯
binder机制是Android系统中特有的实现进程间远程通信的机制,它是基于C/S模式来实现的,一般一个是client端,一个是server端;而socketpair机制可以实现双向通讯,但是通讯范围限制在同一个进程的线程之间或者是具有亲缘关系的进程之间。本文通过将这两种机制结合起来,实现任意两个进程间的双向通讯。作者本人能力有限,文中有说的不对或者不合理的地方还请多多指教。原创 2017-05-06 07:47:47 · 1616 阅读 · 0 评论 -
linux编程基础:使用socketpair实现双向通讯
socketpair是linux提供的一种双向通讯机制,它通过socket实现双向通讯。socketpair本身虽然实现了双向通讯的功能,但是也存在一些限制:比如只能在一个进程的线程之间进行双向通讯或者是在具有亲缘关系的进程间进行通讯。所以socketpair很少情况下会单独使用,它往往需要和其他编程机制结合起来使用才能发挥它真正的作用。本文举两个小例子来说明一下socketpair的基本用法。原创 2017-05-05 09:39:02 · 3765 阅读 · 0 评论 -
inotify和epoll结合使用的小例子
个人能力有限,文中有不当和错误给您带来的不便还请谅解。用inotify可以检测文件系统中文件和目录发生的变化,而epoll可以同时检测多个文件。这里将epoll和inotify结合起来使用,测试这样一种情况:指定相应目录,当目录中有文件创建或者删除时有相应的通知信息并把文件添加或者移除epoll的检测机制,当文件可读时,通过epoll机制将指定的文件的内容读取出来。基于这个功能实现的例原创 2017-05-04 12:52:45 · 2252 阅读 · 1 评论 -
Linux编程基础之进程间通信之一:无名管道
一、Linux进程间通信概述Linux 下的进程通信手段基本上是从UNIX 平台上的进程通信手段继承而来的。经过不断的发展形成了如下图所示的进程间通信类型:UNIX 进程间通信(IPC)方式包括管道、FIFO 以及信号。System V 进程间通信(IPC)包括System V 消息队列、System V 信号量以及System V 共享内存区。Posix 进程间通原创 2017-05-11 07:12:04 · 594 阅读 · 0 评论 -
Linux编程基础之进程间通信之二:有名管道
一、有名管道的简单说明无名管道只能在具有亲缘关系的进程间通信,大大地限制了管道的使用。而有名管道的出现则突破了这种限制,它可以使任意两个进程间进行通信。该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作,使用非常方便。。不过值得注意的是,FIFO 是严格地遵循先进先出规则的,对管道及FIFO 的读总是从开始处返回数据,对它们的原创 2017-05-11 07:40:18 · 461 阅读 · 0 评论 -
Linux编程基础之进程间通信之三:信号
一、信号的概述信号是UNIX 中所使用的进程通信的一种最古老的方法。。它是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某一进程,而无需知道该进程的状态。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它为止;如果一个信号被进原创 2017-05-11 08:00:18 · 428 阅读 · 0 评论 -
Linux下socket编程之UDP简单实现
本文实现一个简单的UDP小例子,来说明Linux下socket编程之UDP的简单实现。本文主要包括三个部分:服务器端的实现,客服端的实现和通信测试。实现的功能:客服端发送一条消息给服务器端,服务器端把客服端发来的消息给显示出来。一、服务器端的实现1、打开一个socket用户服务器/* 1、打开一个socket */iSocketServerFd = socket(AF_INET, S原创 2017-05-03 08:19:41 · 1979 阅读 · 0 评论 -
Linux编程基础之inotify机制简析
本文实现一个inotify的小例子,功能:指定一个目录,当目录中创建文件或者删除文件时,把相应的通知信息打印出来。一、inotify机制和API1、inotify机制inotify可以用来监视文件系统的变化,它不仅可以监视文件的变化,还可以监视文件夹的变化。当有变化发生时,它就会返回相应的变化事件。关于inotify机制的详细信息可以参考相关数据或者资料。2、inotify涉及的A原创 2017-05-03 09:16:50 · 888 阅读 · 0 评论 -
Linux编程基础之进程间通信之四:共享内存
一、共享内存的概述共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存,不需要任何数据的复制。为了在多个进程间交换信息,内核专门留出了一块内存区。这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据的复制,从而大大提高了效率。其原理基本示意图如下所示:二、共享内存的一般使用方法和基本原理1、一般使用方原创 2017-05-12 08:55:18 · 527 阅读 · 0 评论 -
Linux编程基础之进程间通信之五:消息队列
一、消息队列的概述消息队列,列就是一些消息的列表。用户可以从消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO 特性,但是它可以实现消息的随机查询,比FIFO 具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。二、消息队列的一般使用原理和函数说明1、一般使用原理消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这原创 2017-05-12 09:12:59 · 528 阅读 · 0 评论 -
Linux编程基础之epoll简析
在linux系统编程中,通常需要对多个文件的变化同时进行监测(称为多路复用)。传统的poll机制在监测文件数量较大时效率会明显的降低,epoll是对传统poll机制的扩展,不会因为监测文件数量过多而导致监测效率降低。本文通过一个小例子来简单说一下epoll的实现原理,这个小例子实现的功能是让epoll同时检测多个文件,当有任何一个文件可读时就把它的内容打印出来。一、epoll涉及的常用原创 2017-05-04 09:41:04 · 391 阅读 · 0 评论 -
Linux下socket编程之TCP简单实现
本文主要是简单的实现一个Linux下TCP网络编程的小例子。总共分为两个部分:客服端的实现和服务器端的实现。实现的功能很简单,当客服端和服务器端绑定之后,通过在客服端输入一个字符串,服务器将客服端输入的字符串进行相应的输出。一、服务器端的实现1、打开一个socket设备,获得socket设备的文件描述符,指定网络协议和传输类型/* 1、获得服务器端的socket文件描述符 */iSo原创 2017-05-02 14:35:33 · 1337 阅读 · 0 评论