Linux
文章平均质量分 74
浪里个浪の
要得到有价值的东西,你就得做出牺牲。你知不知道,难做的事和应该做的事,往往是同一件事。凡是有意义的事都不会容易,成年人的生活里没有容易二字
展开
-
Linux的多进程与多线程
Linux 是多任务操作系统,可以同时运行多个进程,来完成多项工作。在Linux编程中,为了满足项目高并发的性能需求,采用多进程和多线程进行编程,下面将具体介绍Linux下的多进程与多线程编程。1.多进程进程就是处于活动状态的程序,占用一定的内存空间。进程可以把自己复制一份,从而创造出一个新的进程。新的进程称为 子进程,原来的进程称为 父进程。进程可以复制自己。这意味着启动一个程序,可能会产...原创 2019-05-20 17:08:28 · 555 阅读 · 0 评论 -
Linux文件系统
Linux以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在Linux的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。而这些种类繁多的文件被Linux使用目录树进行管理, 所谓的目录树就是以根目录(/)为主,向下呈现分支状的一种文件结构。不同于纯粹的ext2之类的文件系统,我把它称为文件体系,一切皆文...原创 2019-05-31 11:41:11 · 167 阅读 · 0 评论 -
嵌入式Liunx移植USB随身WIFI(AP模式)
360随身WIFI支持STA和AP两种模式,其中STA模式使其充当一个无线网卡连接指定的WIFI进行上网,而AP模式下相当于一个热点自己向别人提供WIFI。在上篇中我们介绍了STA模式,本篇我们将介绍在嵌入式Linux系统上移植AP模块的驱动。1.USB无线网卡的识别向嵌入式Linux设备的USB口插入360随身WIFI。查看命令【lsusb】,结果如下:2.源码移植该源码下载路径:ht...原创 2019-06-05 18:07:06 · 1175 阅读 · 0 评论 -
Linux的ubifs文件系统制作
UBIFS是UBI file system的简称,用于裸的flash设备,作为jffs2的后继文件系统之一。UBIFS通过UBI子系统处理与MTD设备之间动作。UBIFS文件系统更适合MLCNAND FLASH。需要注意的是UBIFS并不是为SSD,MMC,SD,Compact Flash等之类的基于flash的存储设备,其是针对于裸flash设备。1.UBIFS简介JFFS2和UBIFS最大...原创 2019-06-12 14:27:32 · 1223 阅读 · 0 评论 -
嵌入式Linux的内核编译
实验环境VMware Workstation PlayerUbuntu16.04kernel-3.2.tar.bz2Linux内核编译在ubuntu上编译嵌入式Linux内核,需要大家提前安装好交叉编译工具链,在此就不再赘述。编写Linux内核需要内核源码和内核编译配置文件kernel_config,如下图:具体编译步骤如下:1.解压内核源码tar -jxvf kernel...原创 2019-06-12 18:31:24 · 2094 阅读 · 1 评论 -
嵌入式Linux的GPIO中断
做个STM32开发的都知道,通过程序配置让普通的GPIO口具有中断功能。这样对于设备检测某些硬件的自动设备要方便的多。那么在嵌入式的Linux是否具有这样的功能呢?答案是肯定的,下面我们就来介绍一下如何配置嵌入式Linux的GPIO中断。目前正好有一个项目,其硬件上有一个按钮对应GPIO的73管脚,下面我们就以这个管脚为例来讲述如何去设置管脚的中断,直接上源码,如下:#include <...原创 2019-05-29 15:13:06 · 7857 阅读 · 0 评论 -
嵌入式Linux中断驱动
用过STM32的大概都知道,基本每个GPIO管脚都支持中断模式,这样在检测外部插入一个硬件设备时,通过GPIO管脚电平中断就非常方便。那么AM3354的片子是否支持GPIO管脚电平中断呢?答案是肯定的,下面直接上源码解析:#include <linux/init.h>#include <linux/module.h>#include <linux/kernel....原创 2019-05-29 18:41:07 · 1356 阅读 · 0 评论 -
内核与用户态进程间通讯之Netlink
Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。一般来说用户空间和内核空间的通信方式有三种:/proc、ioctl、Netlink。而前两种都是单向的,但是Netlink可以实现双工通信。...原创 2019-06-10 14:53:14 · 2432 阅读 · 1 评论 -
嵌入式Liunx移植USB随身WIFI(STA模式)
在开发嵌入式Linux设备的时候,设备连接外网一般通过有线或无线的模式。有线简单只要连接网线并正确设备相关参数即可。如何让嵌入式Linux设备像手机一样连接WIFI进行上网呢?这需要Linux设备具有USB外设接口,无线网卡等。本篇将介绍在ARM-Linux平台下移植MT7601U的无线网卡驱动。1.USB无线网卡的识别由于一般的嵌入式Linux设备本身没有自带无线网卡,我们需要外部接入一个无...原创 2019-06-04 15:56:59 · 1531 阅读 · 1 评论 -
Linux内核开发常见的函数
做Linux驱动开发经常要使用到内核相关的函数,本篇只要介绍在做驱动开发的过程中用到的内核函数,为以后开发查询提供方便。本篇覆盖函数如下copy_from_user与copy_to_user函数down_interruptible与down函数writeX与readX宏函数1. copy_from_user与copy_to_user函数copy_from_user:从用户空间拷贝数据...原创 2019-06-18 14:06:05 · 3056 阅读 · 0 评论 -
Linux设备驱动
1.设备驱动的介绍u-boot的任务是启动内核,内核的任务是启动应用程序,应用程序会涉及很多文件和硬件操作,但不会直接操作硬件,由设备驱动来完成硬件的具体操作;比如读写文件,点灯、获取按键值。Linux的设备驱动可分为以下3大类:字符设备指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制...原创 2019-05-28 15:11:14 · 233 阅读 · 0 评论 -
Linux网络分析
Linux中网络配置相当重要,作为技术开发人员,需要数量掌握网络信息的设置和查看。1.ifconfigifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件【/etc/network/interfaces】了。其相关命令如下:查询网络信息...原创 2019-05-23 17:26:50 · 665 阅读 · 0 评论 -
实时操作系统与分时操作系统
1. 什么是实时操作系统?实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。其特点是及时响应和高可靠性。实时系统又分为硬实时系统和软实时系统,硬实时系统要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能...原创 2019-05-20 17:34:03 · 2273 阅读 · 0 评论 -
Linux下的GDB代码调试
在日常代码的调试中,经常遇到段错误(segfault),调试非常费劲,除了单元测试和基本测试外,有些时候是在在线环境下,没有基本开发和测试工具,这就需要调试的技能。今天就来介绍一下利用core dump文件和gdb做应用程序调试和追踪的方法。1. core dump 文件在linux下当应用程序发生异常中止退出或者发生崩溃的时候,linux内核会将应用程序在这段运行期间的内存状态等相关信息转存...原创 2019-05-24 14:01:23 · 385 阅读 · 0 评论 -
Linux下精确计时
1.低精度计时**1.1sleep 和 usleep **sleep(int x) 系统调用,让进程等待x秒钟。其精度以秒为单位的。usleep( int x)系统调用,让进程等待x 纳秒,但实际其精度一般是10ms,再低的达不到。这两个函数的优点是简单,缺点进程被阻塞。1.2alarm闹钟alarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它向进程发送SI...原创 2019-05-21 13:59:12 · 4090 阅读 · 0 评论 -
Linux的多进程通讯之管道
Linux下开发经常有多个进程协调工作,由于进程间的空间是相互独立的,怎么去完成进程间的通信呢?在Linux系统中提供了管道、信号量、消息队列、互斥信号、共享内存等通讯方法。后面将一一解析。管道管道是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制。其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。由于这种方式具有单向传递数据的...原创 2019-05-21 16:23:26 · 631 阅读 · 0 评论 -
Linux多进程通讯之内存共享
共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。它是IPC对象的一种。为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。共享内存允许两个进程访问同一块内存区域,它们使用同一个 key 值标记。1.1共享内存的创建函数原型如下:int...原创 2019-05-21 17:53:52 · 1494 阅读 · 0 评论 -
Linux多进程通讯之消息队列
消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。可以解决两个进程的读写速度不同(处理数据速度不同),系统耦合等问题,而且消息队列里的消息哪怕进程崩溃了也不会消失。在系统中可以运行 ipcs -q 的命令查询消息队列。1.键值生成每一个消息队列都有一个对应的键值(key)相关联,如同共享内存和信号量一...原创 2019-05-22 11:09:45 · 1276 阅读 · 0 评论 -
Linux进程通讯之信号量
简单来讲,信号量是一个用来描述临界资源的资源个数的计数器。信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件、外部设备等)来实现进程间通信,他本身更只是一种外部资源的标识。信号量在此过程中负责数据操作的同步、互斥等功能。当请求 一个使用信号量来表示 的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求;等于0,无资源可用,进程会进入睡...原创 2019-05-22 16:28:50 · 254 阅读 · 0 评论 -
Linux基础知识杂记
本博文会不定时更新,主要记录在Linux开发过程中的一些细小知识点,以后后续查阅。1.操作管脚电平在Linux下,关于管脚的配置存在系统的 【/sys/class/gpio】目录下。其目录结构如下:--w------- 1 root root 4096 Jan 1 00:00 exportlrwxrwxrwx 1 root root ...原创 2019-05-27 18:08:56 · 208 阅读 · 0 评论 -
Linux的线程锁
1.互斥锁在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务。1.1锁的创建互斥锁可以动态或静态的被创建,可以用宏PTHREAD_MUTEX_INITIALIZER来静态的初始化锁,采用这种方式比较容易理解,互斥锁是pthread_mutex_t的结构体,而这个宏是一个结构常量,如下可以完成静态的初始化锁:pthread_mutex_t mutex =PTHRE...原创 2019-05-23 15:12:19 · 6177 阅读 · 1 评论 -
Linux的内存映射之mmap
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通...原创 2019-06-18 17:18:46 · 398 阅读 · 0 评论