Linux
记得最初的梦想
一个单纯的程序员
展开
-
Linux常用命令
Linux 常用命令原创 2022-02-28 10:05:29 · 364 阅读 · 0 评论 -
POSIX多线程--条件变量
一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件 变量,唤转载 2014-07-29 16:27:18 · 661 阅读 · 0 评论 -
设备驱动(十五)
开启设备的时钟struct clk *my_clk; //定义时钟结构体my_clk = clk_get(NULL, "watchdog"); //获取设备的时钟信息clk_enable(my_clk); //打开时钟clk_disable(my_clk); //关闭时钟所有有关时钟的设备,只有打开时钟后设置设备的寄存器才有效。看门狗驱动原理图原创 2014-03-06 17:55:59 · 1095 阅读 · 0 评论 -
设备驱动(十二)
设备模型内核对设备进行分类,以层次结构组织管理成为设备结构/sys/devices 下显示了所有的设备/sys/bus 按照总线分类显示了所有设备 /sys/class 按照功能类型分类显示了所有设备驱动和设备都会在总线上注册/sys/bus不需要总线的设备将会注册到flatform总线上为了达到驱动与平台的无关性使用设备原创 2014-03-06 17:53:59 · 792 阅读 · 0 评论 -
设备驱动(十九)
块设备以固定大小为单位访问支持随机访问,带缓冲块设备层次结构块设备子系统功能缓冲区管理优化,合并优化IO请求块设备驱动设备结构体 gendisk加载函数卸载函数 字符设备块设备操作集合file_operationsblock_device_operations.open对应o原创 2014-03-06 18:10:18 · 792 阅读 · 0 评论 -
设备驱动(十三)
自动创建设备节点2.6内核支持devfs、udev两种方式创建设备节点2.6内核以后只支持udev在应用层自动创建设备节点udev有一个后台守护进程udev(嵌入式中有mdev,根文件系统中已经有mdev),会一直扫描/sys/class目录,自动创建和删除设备节点udev自动创建节点方式:1、创建设备分类struct class *myclass;myclas原创 2014-03-06 17:54:46 · 710 阅读 · 0 评论 -
设备驱动(十一)
应用层申请内存malloc, calloc, realloc, free内核中申请内存申请/释放/映射按页分配(每页4K)unsigned long __get_free_pages(int gfp_mask, unsigned long order)得到的内存物理地址连续gfp_mask GFP_ATOMIC 不能分配也会返回GFP_KE原创 2014-03-06 17:50:06 · 743 阅读 · 0 评论 -
设备驱动(十)
获取时间1、jiffiesjiffies:从系统启动到当前,时钟中断产生的次数marco HZ 每秒产生的时钟中断次数,范围100~10002、使用do_gettimeofday函数延时1、长延迟以jiffy为单位的延迟叫长延迟(占用CPU)time_before(jiffies, new_jiffies)time_after(new_jiffi原创 2014-03-06 17:49:21 · 863 阅读 · 0 评论 -
设备驱动(十七)
基于I2C子系统i2c-core:纽带;提供了一组通用的和硬件无关的接口函数I2C adapter driver :驱动总线产生时序i2c device driver:调用i2c-core中的函数完成i2c device driver的注册、注销和i2cmsg的封装i2c-dev在子系统中实现的通用i2c设备驱动,可用来访问任意i2c设备,为快速测试硬件I2C用户模式驱原创 2014-03-06 17:59:21 · 929 阅读 · 0 评论 -
设备驱动(十八)
在平台代码中添加device定义设备结构体struct i2c_board_info{}使用i2c_register_board_info注册添加驱动定义id_table数组struct i2c_device_id e2prom_ids={ {"24c02", 0}};驱动struct i2c_driver 24c02_deiver=原创 2014-03-06 18:03:56 · 837 阅读 · 0 评论 -
设备驱动(九)
中断处理分为上下半部上半部:完成紧急的,不耗时的操作(ISR)下半部:不紧急,耗时的操作,一般使用内核延时机制执行下半部内核延时机制内核延时机制:内核在某个时间点调用执行指定的函数内核延时机制实现方式:tasklet/work queue/软中断(软中断不推荐)内核调度优先级内优先级中断 > tasklet > work queuetasklet原创 2014-03-06 17:48:50 · 796 阅读 · 0 评论 -
设备驱动(二十)
网络设备无设备节点基本功能:数据发送/接收关注点.probe申请资源,注册网络设备.open初始化硬件(参考芯片手册)发送队列(通知网络子系统可以发送数据包).stop关闭发送队列,复位硬件.hard_start_xinit数据发送函数(参考芯片手册).interrupt数据接收的中断处理网卡工作模原创 2014-03-06 18:12:08 · 917 阅读 · 0 评论 -
设备驱动(十六)
ADCInput 0~3.3TSADCCON0[16] 转换精度[15] 结束标记位[14] 是否预分频[13,6] 分频值0xff[2] 0x0正常工作[1] 读操作时开始[0] 0x1开始转换TXDATX0 转换后的数字结果 [0, 11]CLRINTADC0模块许可加载函数注册字符设备注册中断 arch/arm/mach原创 2014-03-06 17:56:26 · 692 阅读 · 0 评论 -
Linux获取进程列表
实现思路是:遍历/proc目录下的所有进程描述文件夹,从而获取进程列表。代码如下:转载 2014-08-14 11:23:29 · 2803 阅读 · 1 评论 -
批量代码格式化工具
#!/bin/shCNT=0 OBJ_FILES=`find $1 -name '*.c' -o -name '*.h' -o -name '*.cpp' -o -name '*.cc'`for file in $OBJ_FILES; do echo $file indent -npro -gnu -i4 -ts4 -sob -l200 -ss -bl -bli 0 -原创 2014-09-24 11:01:43 · 1687 阅读 · 0 评论 -
应用与MPlayer通过slave模式进行信息交换
应用与MPlayer通过slave模式进行信息交换代码如下bia转载 2014-10-20 19:22:15 · 1937 阅读 · 0 评论 -
Bluez去掉绝对音量支持
修改bluez-5.37中./profiles/audio/avrcp.c去掉改支持AVRCP_EVENT_VOLUME_CHANGED3816 session->supported_events |=3817 (1 << AVRCP_EVENT_ADDRESSED_PLAYER_CHANGED) |3818 ...原创 2019-03-14 19:52:22 · 987 阅读 · 0 评论 -
PocketSphinx语音识别系统的编译、安装和使用
http://sourceforge.net/projects/cmusphinx/files/原创 2018-04-25 18:13:04 · 596 阅读 · 0 评论 -
C++单元测试入门指南-在eclipse上建立Google test
中文链接: https://blog.csdn.net/u012515915/article/details/46942745 原文链接:https://www.codeproject.com/Articles/811934/Cplusplus-unit-test-start-guide-how-to-set-up-Goog原创 2018-03-27 15:15:42 · 671 阅读 · 0 评论 -
开源项目交叉编译问题
交叉编译开源项目交叉编译某个应用程序时,通常需要 ./configure 来生成对应的 Makefile ./configure 最关键的三个选项是:–host=HOST 指定软件运行的系统平台.如果没有指定,将会运行`config.guess’来检测.–build=BUILD 指定软件包安装的系统平台.如果没有指定,默认值将是’–host’选项的值.–target=GARG...原创 2018-02-28 13:32:34 · 2259 阅读 · 0 评论 -
Linux Audio Stack & ALSA
Linux Audio StackossOSS借用了UNIX里”一切都是文件”的概念,。 把声卡模拟成一个/dev/dsp设备, 多块声卡就是dsp0, dsp1…要播放声音?打开dsp设备.往里面write数据就可以了.设置比特率?用ioctl设置即可.最简单的接口, 也是最没用的接口.因为应用程序完全没法对声音的播放进行控制.OSS是个阻塞的接口, write后, 要声音播放完毕才原创 2015-07-28 16:04:36 · 6004 阅读 · 1 评论 -
Alsa + dmix + microphone [SOLVED]
I can play many sound at the same time but I can't record any sound using arecord: parpin@localhost parpin $ arecord -f cd -d 3 -t wav -N test.wav ALSA lib pcm_dmix.c:759:(snd_pcm_dmix_open) The dm转载 2015-05-26 12:11:03 · 2886 阅读 · 0 评论 -
嵌入式alsa+libmad实现mp3播放
/* * libmad - MPEG audio decoder library * Copyright (C) 2000-2004 Underbit Technologies, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the原创 2015-05-07 16:02:27 · 3086 阅读 · 0 评论 -
基于Alsa lib进行音量调节以及静音操作
#include #include #include #include #include #include #include #include #include #include #include #include "volume_interface.h"#define DEBUG(x,y...) //{printf("[ %s : %s : %d] ",__FILE_原创 2015-05-27 11:57:08 · 7276 阅读 · 2 评论 -
交叉编译GDB
交叉编译GDB GDB是一款强大的调试工具,不多介绍了下载GDB源码,点击下载解压文件tar xf gdb-7.9.tar.gz配置编译 编写编译脚本#!/bin/bash./configure --prefix=/disk1/home/xllv/workspace/gdb/gdb-7.9/output/mips \ --target=mipsel-linux \ -原创 2015-05-13 10:30:23 · 5288 阅读 · 0 评论 -
互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)
1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。 大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量)。Linux中所谓的“线程”只是在被创建时c转载 2015-03-24 11:30:20 · 7782 阅读 · 0 评论 -
互斥量、条件变量与pthread_cond_wait()函数的使用,详解(一)
1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or u转载 2015-03-24 11:24:48 · 1669 阅读 · 1 评论 -
有关挂载的笔记
/etc/profilesshfs xllv@192.168.2.2:/home/xllv /home/user/xllv.2/ -o allow_othersshfs xllv@192.168.2.2:/ /mnt/2.2/ -o allow_other原创 2014-09-24 10:57:24 · 727 阅读 · 0 评论 -
设备驱动(十四)
GPIO控制LED一、原理图、芯片手册 GPC0_3/4 GPC0CON GPC0DAT二、驱动模块许可加载函数构建设备号申请设备号注册字符设备映射寄存器初始化设备卸载函数逆向卸载file_operations键盘驱动编写:一、原理图gph0 0~5gph2 6~7二、驱动原创 2014-03-06 17:55:30 · 875 阅读 · 0 评论 -
SQLite install
背景Ubuntu 12.04SQLite 3.8.2下载源码去sqlite官方下载源码sqlite-autoconf-3080200.tar.gz。解压tar包.安装查看README和INSTALL文档知道sudo ./configuresudo make install测试执行sqlite3 test.db原创 2014-01-14 21:37:28 · 1384 阅读 · 0 评论 -
linux tar
通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。转载 2013-12-11 09:07:57 · 884 阅读 · 0 评论 -
ubuntu下修改date
ubuntu下修改datedate查看当前时间首先设置时区:将上海时区作为本地时区sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime然后修改时间sudo date -s "2013-12-10 14:27:30"查看日历calcal 2013原创 2013-12-10 14:29:26 · 1316 阅读 · 0 评论 -
bash快捷键
编辑命令Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :从光标处删除至字首Alt转载 2013-12-10 15:00:33 · 783 阅读 · 0 评论 -
linux 用户管理
涉及文件/etc/group 组信息/etc/passwd 用户信息/etc/shadow 密码控制/etc/skel 默认用户文件添加用户添加用户adduser u1删除用户删除用户不删除home目录deluser u1删除用户删除home目录deluser --remove-home u2原创 2013-12-10 16:55:19 · 840 阅读 · 0 评论 -
vim快捷键
vim快捷键i:在当前位置开始插入I:在该行开始开始插入o:在下一行进行插入操作O:在上一行进行插入操作a:在当前位置后开始添加A:在该行末尾开始添加S:清空改行并进入插入模式r:替换当前字符R:进入替换模式c$:剪切到行尾,并进入插入模式y$:复制到行尾c^:剪切到行首,并进入插入模式y^:复制到行首b:光标移到前一个单词h:光标左移原创 2013-12-09 17:53:59 · 1392 阅读 · 0 评论 -
linux mount
查看分区cat /proc/partitions查看磁盘信息df指定字符集进行挂载mount -o iocharset=utf8 /dev/sdb4 /mnt/lxl卸载unmount /mnt/lxl原创 2013-12-10 15:08:33 · 890 阅读 · 0 评论 -
新的开始之Win7、CentOS 6.4 双系统 硬盘安装
目地在已经有Win7的操作系统上安装CentOS6.4的32位操作系统。本博客结合了一下的博客http://blog.csdn.net/markho365/article/details/8969591http://www.cnblogs.com/Johness/archive/2012/12/03/2800126.html1、安装背景安装CentOS之前,本机已经原创 2013-09-08 01:33:50 · 12736 阅读 · 5 评论 -
Linux后台管理
& 将命令在后台执行CTRL + Z 将当前任务暂停jobs 查看当前在后台运行的任务fg 将编号为n的任务拉回前台bg 将编号为n的任务后台运行Example:1、sleep 5000 表示当前线程睡眠5000秒2、按下CTRL + Z 将当前线程停止到后台3、jobs列出当前后台任务4、fg 1,将一号任务拉回前台运行5、点击CTR原创 2013-08-25 20:54:20 · 1371 阅读 · 0 评论 -
新的开始之CentOS 下载、切换语言、输入法
CentOS-6.4-i386-bin-DVD点击打开链接切换语言:默认CentOS6.4有语言包使用root登录或者使用su命令,输入password获得root权限终端下:取得权限后修改该文件将其LANG="en_US.UTF-8"改为LANG="zn_CN.UTF-8"切换输入法使用su命令取得root权限输入 yu原创 2013-07-13 14:31:58 · 3268 阅读 · 1 评论 -
新的开始之Redis的安装
redis官网:http://redis.io/redis是开源软件,提供数据存储服务可以以键值对的方式存放数据。版本CentOS 6.4redis 2.6.7下载地址http://redis.googlecode.com/files/redis-2.6.7.tar.gz开始操作在取得root的权限下解压tar -zxvf redis-2原创 2013-07-14 23:35:13 · 1298 阅读 · 0 评论