
linux应用开发
文章平均质量分 95
linux知识回顾
Wireless_Link
有丰富的蓝牙车载经验,曾给HAVAL H6,F7,江淮,北汽,丰田,大众,江铃等众多车型做过蓝牙车载方案,对传统蓝牙,低功耗蓝牙都有深入的研究。
展开
-
Linux alsa详解(应众多声音,要求更新一篇alsa相关的内容)
本文系统介绍了音频技术基础概念及ALSA架构在Linux系统中的应用。主要内容包括:1)音频基础知识:详细解析声音三要素(频率、振幅、波形)、PCM编码原理、采样率/声道数/比特率等专业术语;2)ALSA架构:阐述Linux高级声音体系的结构组成,包括驱动包、开发库及实用工具,并给出移植编译方法;3)ALSA工具应用:介绍alsamixer、aplay等实用工具的使用方法;4)ALSA编程:提供音频采集和播放的最小代码示例,并解释关键参数概念。文章为开发者提供了从音频原理到ALSA编程实践的完整技术参考。原创 2025-05-26 08:30:00 · 937 阅读 · 0 评论 -
Linux UART编程 驱动蓝牙芯片
在熟悉了UART概念后,我们要学以致用,在Linux用起来来驱动起来蓝牙芯片!我们直接借用man来看下,命令如下: man termios2.串口打开关闭Linux秉行一切皆文件的,所以打开关是用open,关闭串口使用close下面我们来分别介绍下各个flag!在输入值传给程序之前控制其处理的方式负责控制输出字元的处理方式用于控制终端设备的硬件设置主要用来控制终端设备不同的特色符号下标 (初始值) 和意义(即c_cc[]数组对应下标的数值对应含义,如c_cc[VMIN] = 3):这些原创 2022-12-04 14:19:05 · 4411 阅读 · 0 评论 -
嵌入式linux之Uboot和系统移植--基础
《uboot和系统移植-第1部分-uboot学习前传》(观看朱友鹏老师视频后整理的笔记) 1.为什么要有uboot2.为什么是uboot3.uboot必须解决哪些问题4.uboot的工作方式5.uboot的常用命令16.uboot的常用命令27.开发板和主机的ping通8.uboot的常用命令39.uboot的常用命令410.uboot的常用环境变量111.uboot的常用环境变量2 1.为什么要转载 2017-10-10 10:21:29 · 1193 阅读 · 0 评论 -
linux shell 逻辑运算符、逻辑表达式详解
shell的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果。 一、逻辑运算符 逻辑卷标 表示意思 1.关于档案与目录的侦测逻辑卷标!-f常用!侦测『档案』是否存在 eg: if [ -f filename ]-d常用!侦测『目录』是否存在-b侦测是否为一个『 block 档案』-c侦测是否为一个『 character 档案』-S侦测是否为一个『转载 2017-09-30 15:51:33 · 712 阅读 · 0 评论 -
Linux ps命令详解与示例说明
ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所转载 2017-09-26 15:53:19 · 1212 阅读 · 0 评论 -
Ubuntu系统启动报错:The system is running in low-graphics mode
一、下列步骤做过,没管用 sudo chown lightdm:lightdm -R /var/lib/lightdm sudo chown avahi-autoipd:avahi-autoipd -R /var/lib/avahi-autoipd sudo chown colord:colord -R /var/lib/colord 重启 二、又试验了这个步骤,还是不行 通常这种情况是由于A转载 2017-09-19 21:46:26 · 1294 阅读 · 2 评论 -
ubuntu 16 04管理员登陆方式(亲测有效)
Ubuntu默认的是root用户不能登录图形界面的,只能以其他用户登录图形界面。这样就很麻烦,因为权限的问题,不能随意复制删除文件,用gedit编辑文件时经常不能保存,只能用vim去编辑。下面以Ubuntu 16.04版为例说明:1、打开终端2、输入sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf3、添加一行:greeter-show转载 2017-09-19 11:30:02 · 6048 阅读 · 0 评论 -
ubuntu 虚拟机设置无线上网
目录(?)[-]一电脑是采用连接无线wifi上网的情况下二电脑是采用宽带有线连接的情况下电脑主机虚拟机VMware Workstation11安装Ubuntu14.04.3 LTS一、电脑是采用连接无线wifi上网的情况下这种情况是VMware Workstation11里面的Ubuntu14.04.3 连接上网比较容易设置(1)在Ubuntu系统未开启的情况下转载 2017-05-19 10:22:41 · 7464 阅读 · 0 评论 -
Ubuntu sudo apt-get update失败的原因
今天使用sudo apt-get install 无法安装软件,错误提示如下:Err http://cn.archive.ubuntu.com/ubuntu/ oneiric-updates/main libssl1.0.0 i386 1.0.0e-2ubuntu4.7 404 Not Found [IP: 112.124.140.210 80]Err http://secur转载 2017-02-20 10:30:01 · 8079 阅读 · 0 评论 -
linux-makefile
主要内容是参考:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2288055.html新增了一点内容一、前言Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件转载 2017-01-07 22:19:40 · 543 阅读 · 0 评论 -
linux-GCC 常用命令
Linux GCC常用命令1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也转载 2017-01-07 21:58:42 · 650 阅读 · 0 评论 -
linux-内存空间分配
一.linux内存分配linux内存分配简单意义来讲分为四段1.代码区2.全局变量区3.栈4.堆通过以下程序验证#include #include #include int add(int a,int b){ return a+b;}int a1=1;static int a2=2;const int a3=3;int a4;main(){原创 2016-12-30 16:59:42 · 2955 阅读 · 1 评论 -
UART0串口编程系列之前奏篇
串口编程之前奏篇------------------------------------------------------------------------Author :tiger-johnWebSite :blog.youkuaiyun.com/tigerjbEmail :jibo.tiger@gmail.comUpdate-Time : 20转载 2016-09-23 23:20:01 · 886 阅读 · 0 评论 -
Linux下的串口编程
/************声明:本人只是见到这篇文章对我帮助很大才转载的,但是这个完整的程序里面本来有语法错误的,现在让我改过来了************/---------------------------------------------------------Author :tiger-johnWebSite :blog转载 2016-09-23 23:16:36 · 1379 阅读 · 0 评论 -
makefile 编写规则
相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正。 简单转载 2016-04-21 10:18:38 · 1710 阅读 · 0 评论 -
Linux编辑器 VI的使用
1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insertmode)和底行模式(last line mode),各模式的功能区分如下:1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。2原创 2016-03-09 22:50:46 · 995 阅读 · 0 评论 -
关于linux中的延时函数
应用程序:#include usleep(n) //n微秒Sleep(n)//n毫秒sleep(n)//n秒驱动程序:#include mdelay(n) //milliseconds 其实现#ifdef notdef#define mdelay(n) (\{unsigned long msec=(n); while (msec--) udelay(1000原创 2016-03-03 10:14:57 · 3146 阅读 · 0 评论 -
进程间通信 ---IPC
序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket转载 2016-02-19 14:05:42 · 774 阅读 · 0 评论 -
error: stray ‘\302’ in program 处理
最近在复制一段代码编译的时候出现一下错误:root@ubuntu:/test/linux/20160218# gcc -lpthread mutex.c mutex.c: In function ‘main’:mutex.c:32: error: stray ‘\302’ in programmutex.c:32: error: stray ‘\240’ in programmutex原创 2016-02-19 10:35:18 · 8397 阅读 · 0 评论 -
Linux线程同步------互斥量
一、什么是互斥量互斥量是另一种用于多线程中的同步访问方法,它允许程序锁住某个对象,使得每次只能有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁。二、互斥量的函数的使用它们的定义与使用信号量的函数非常相似,它们的定义如下:#include int pthread_mutex_init(pthread_mutex原创 2016-02-19 10:31:24 · 829 阅读 · 0 评论 -
Linux下undefined reference to ‘pthread_create’问题解决
问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中的函数的入口地址,于是链接会失败。解决:在gcc编译的时候,附加要加 -lpthread参数即可解决。root@ubuntu:/test/linux/20160218# gcc threadid.c /tmp/cc2buUlJ.o: In function `main':threa原创 2016-02-18 15:23:24 · 1168 阅读 · 0 评论 -
linux 之进程信号
1 信号本质软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事原创 2016-02-16 16:18:12 · 982 阅读 · 0 评论 -
LINUX wait 和 waitpid详解
#include /* 提供类型pid_t的定义 */#include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。原创 2016-02-15 16:57:06 · 1055 阅读 · 0 评论 -
_exit 和 exit的区别
从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit 系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。 所需头文原创 2016-02-15 16:22:01 · 821 阅读 · 0 评论 -
fork和vfork区别
ork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 2. fork ()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec 或exit 之原创 2016-02-15 15:38:20 · 995 阅读 · 0 评论 -
Linux atexit函数解析
Linux atexit函数被称为“终止处理程序”,一个进程最多可以注册32个函数,这个函数由exit自动调用atexit函数原型是:#include int atexit(void (*func)(void)); Returns: 0 if OK, nonzero on error 调用方法如图:按照UNIX高级编程中写了程序:#include "apue.h原创 2016-02-03 16:19:17 · 806 阅读 · 0 评论 -
UNIX高级编程缺少APUE头文件
UNIX高级编程缺少APUE头文件解决方法:APUE.H资源如附件:http://download.youkuaiyun.com/detail/xiaoxiaopengbo/9426761把两个文件分别放在 /usr/include 目录中就OK了,注意一点,需要root权限原创 2016-02-03 16:03:08 · 670 阅读 · 0 评论 -
offsetof与container_of宏[总结]
offsetof与container_of宏[总结]1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下l转载 2016-01-09 14:16:25 · 642 阅读 · 0 评论 -
LINUX 标注I/O
当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了标准I/O库为管理该流所需的所有信息,包括:用于实际I/O的文件描述符、指向用于该缓冲区的指针、缓冲区的长度、当前在缓冲区的字符数以及出错标志等。为引用一个流,需将FILE指针作为参数传递给每个标准I/O函数。对于标准输入、标准输出和标准出错,他们的文件描述符对应STFIN_FILENO、ST原创 2016-01-05 12:18:36 · 743 阅读 · 0 评论 -
LINUX 文件系统 10问
关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧:1、机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的?2、touch一个新的空文件占用磁盘空间吗? 占用的话占用多少?3、新建一个空目录占用磁盘空间吗转载 2015-12-31 15:07:09 · 872 阅读 · 0 评论 -
LINUX 文件系统
一、磁盘构成及分区1、磁盘物理结构 还是先从最基本的磁盘物理结构说起吧磁盘面:磁盘是由一叠磁盘面组成,见下左图。磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写。磁道(Track):每个盘面会围绕圆心划分出多个同心圆圈,每个圆圈叫做一个磁道。柱面(Cylinders):所有盘片上的同一位置的磁道组成的立体叫做一个柱面。扇区(Sector):以磁道原创 2015-12-31 15:01:59 · 791 阅读 · 0 评论 -
LINUX 文件和目录 stat结构
在使用这个结构体和方法时,需要引入:struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结构。可以有两种方法来获取一个文件的属性:1、通过路径:int stat(const char *path, struct stat *struct_stat);int lstat(const char *path,struc原创 2015-12-30 13:24:04 · 1171 阅读 · 0 评论 -
LINUX 文件I/O
linux 文件I/O原创 2015-12-29 18:29:08 · 941 阅读 · 0 评论 -
GDB使用方法
1. gdb exe 使得exe程序运行在debug环境下2. break functiona 在functiona函数处设置端点 3. run 让程序从main入口执行到断点functiona4. n next,单步执行,相当于VC中的调试命令step over5. s step into,进入子函数,察看子函数的执行情况转载 2015-12-23 10:12:56 · 862 阅读 · 0 评论 -
linux C socket函数介绍和使用实例
socket API介绍 & 通信实例原创 2015-12-18 10:37:22 · 5357 阅读 · 0 评论 -
getopt和getopt_long函数用法
getopt_long,getopt 介绍原创 2015-12-17 16:35:32 · 1088 阅读 · 0 评论 -
main函数的参数
main参数原创 2015-12-17 15:13:13 · 978 阅读 · 0 评论 -
Linux GCC常用命令
1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。转载 2015-12-17 12:21:44 · 755 阅读 · 0 评论 -
linux学习---线程同步(互斥量,信号量,条件量)线程属性
进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程 可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享线程 线程相关的执行状态和存储变量放在线原创 2017-11-13 11:27:26 · 1193 阅读 · 0 评论 -
Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行转载 2017-11-13 09:08:30 · 811 阅读 · 0 评论