![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 78
laoyl
如果不想平凡的过完一生,那就不断去努力,不断去超越
展开
-
linux之延时及内核定时器的使用
想要在内核中的实行短的延时我们可以看这两个头文件linux-3.0.1\include\linux下的delay.h和linux-3.0.1\arch\arm\include\asm下的delay.h里面包含了这样几句延时的语句void ndelay(unsigned long nsecs); //纳秒级的延时void udelay(unsigned long usecs); //微妙级的原创 2012-03-20 17:38:08 · 1688 阅读 · 0 评论 -
linux进程间通信(一)
进程是一个具有一定独立功能的程序的一次活动。进程所具有的特点:1、动态性 2、并发性 3、独立性 4、异步性 1、为什么进程间需要通信: 一个进程所使用的内存区域是独立的需要将它的数据发给另一个进程需要进行通讯;多个进程之间共享同样的资源;一个进程需要向另一个进程或一组进程发送消息,通知它们发生了某种事件;某些进程希望完全由另一个进程控制,此时控制进程希望原创 2012-10-24 18:13:44 · 570 阅读 · 0 评论 -
基于linux视频架构V4L2分析-----video for linux(一)
在linux内核版本中,2.6.38可谓是一个分水岭,在这之前linux视频架构采用v4l的架构,在2.6.38内核中去除了v4l采用全新的v4l2,v4l2架构不再兼容v4l。全新的API接口使用起来相当的方便。linux视频架构再次体现了linux驱动分层思想的优越性。 废话不讲,直接进入主题. 在linux中视频设备被当作一个文件设备来对待,视频设备存放在原创 2012-12-06 13:07:16 · 2876 阅读 · 4 评论 -
基于linux视频架构V4L2分析-----video for linux(二)
V4L2跟V4L有较大的改动,已经称为3.0的接口标准,涵盖了大多数的视频或其它dvd和FM等驱动,都向V4L2靠拢。V4L2采用流水线的操作方式,基本遵循了打开视频设备文件、设置视频格式、处理视频数据、关闭视频设备,其中用到的函数寥寥无几,open,read,write,ioctl等来实现。 1、打开视频设备文件 在linux系统中所有的设备都被看成是一个文原创 2012-12-06 19:15:52 · 1720 阅读 · 0 评论 -
vim基本指令介绍
1.vim#在命令行中输入vim,进入vim编辑器2.i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行其它命令使用4.:r filename#读入一个文件内容,并写入到当前编辑器中5.:w newfilename#将该编辑器中的内容写入到一个新文件中6.:w转载 2012-12-26 12:49:44 · 642 阅读 · 0 评论 -
linux时间编程
时间类型 Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。 Calendar Time:日历时间,是用“从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数”来表示的时间。时间获取#include time_t time(ti原创 2012-12-28 14:11:00 · 637 阅读 · 0 评论 -
FFMpeg开发笔记(一)
FFMpeg是一个开源免费的视频和音频解决方案。它提供了录制、转换以及流化音视频的完整解决方案。FFMpeg支持在Linux平台下开发,同时也支持其它操作系统环境中编译,包括windows、Mac OS等。 1、首先来介绍一下FFmpeg文件夹中的文件: libavformat :用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取原创 2012-12-14 11:23:31 · 1213 阅读 · 0 评论 -
ARM模拟器——SkyEye的使用
测试应用:skyeye-1.3.4_rc1运行环境:ubuntu11.04Linux内核:2.6.38GCC编译器版本:4.5.2Skyeye-1.3.4_rc1下载地址:http://sourceforge.net/projects/skyeye/files/skyeye/skyeye-1.3.4/skyeye-1.3.4_testsuite的测试套件可以在以下地址下原创 2013-01-02 23:14:29 · 1632 阅读 · 0 评论 -
基于mjpg-streamer远程视频WEB监控 项目笔记一
写之前先吐槽一下开发过程中浪费时间的地方,使用的开发板是友善之臂的tiny210采用cortex-A8的处理器,开发板配备了一个标准的USB口,经查证那个USB是2.0的,实验过程中,USB摄像头识别不稳定,FIMC框架模块一直报错(足足浪费了一天的时间,查了IIC,USB,FIMC和摄像头驱动,就差没读源代码了),干脆接个USB-HUB,将2.0转成1.1,神奇的事情出现了,各种稳定。犯贱的US原创 2013-01-26 12:15:12 · 5011 阅读 · 0 评论 -
基于mjpg-streamer远程视频WEB监控 项目笔记二
mjpg-streamer是基于jpeg库来处理摄像头数据的,因此在移植mjpg-streamer之前必须先移植jpeg库,否则在编译mjpg-streamer时会报告错误。 现在这里下载jpeg库的源代码和mjpg-streamer源代码: jpeg库下载地址:http://download.csdn.net/detail/laoylhuli/5029006原创 2013-01-26 13:03:20 · 8827 阅读 · 12 评论 -
ubuntu配置tftp
启动ubuntu终端1、安装tftp所需应用和插件sudo apt-get install tftp tftpd openbsd-inetd2、创建tftp文件夹注意:在根目录下创建需要root用户的权限。sudo -s 提升用户权限为超级用户(root)权限cd / 前往根目录mkdir tftpboot原创 2013-03-07 10:43:08 · 1165 阅读 · 0 评论 -
Boa服务器移植
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。下面给大家介绍一下Boa服务器移植的具体操作步骤,希望能够有帮助。环境 主机:ubuntu8.10转载 2013-04-13 14:53:36 · 1124 阅读 · 1 评论 -
libjpeg库的简单使用使用----jpeg图片解压
libjpeg库其实已经可以满足我们日常处理日常简单图片之间的转换了。下面就来介绍一下jpeg库的解压和压缩过程。首先来讲解压操作过程:1、分配jpeg对象结构体空间,并初始化。2、指定解压数据源。3、获取解压文件信息。4、为解压设定参数,包括图像大小和颜色空间。5、开始解压缩。6、取数据。7、解压完毕。8、释放资源和退出程序。1、分配jpeg对象结原创 2013-04-19 22:47:47 · 9148 阅读 · 0 评论 -
libjpeg移植arm
运行环境:ubuntu10.04交叉编译器:arm-linux-gcc 4.5.1libjpeg版本:V8源码下载地址:http://download.csdn.net/detail/laoylhuli/5029006点击打开链接一、拷贝源码 将源码拷贝至/tmp目录下,解压源码 # tar zxvf jpegsrc.v8b.tar.gz原创 2013-04-19 22:03:13 · 1998 阅读 · 0 评论 -
linux线程介绍
进程是系统中程序执行和资源分配的基本单位,线程是系统调度的最小单位。每个进程有自己的数据段(data)、代码段(text)和堆栈段(bss)。线程通常叫做轻量的进程。线程是在共享内存空间中并发执行的多道执行路径,他们共享一个进程的资源。因为线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源。 线程按照其调度者可分为用户级线程和内核级线程两种。 (1原创 2013-05-06 14:40:09 · 1120 阅读 · 2 评论 -
linux进程的挂起和恢复
进程的挂起及恢复#ctrl+z:挂起,程序放到后台,程序没有结束。#jobs:查看被挂起的程序工作号恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行格式:fg 工作号;bg 工作号进程:正在执行的一个程序程序:是一种写好的代码或脚本&:后台执行,不占用终端如:xeyes &ps命令进程查看命令ps命令:p原创 2013-06-21 22:24:15 · 3732 阅读 · 0 评论 -
手把手教你移植linux内核---------OK6410(四)
OK6410--DM9000网卡驱动移植: 在linux的内核中已经带有了DM9000的网卡驱动,所以网卡驱动我们不需要再去写或者移植了,只需要添加一个平台信息就可以。 首先在linux-3.3.5/arch/arm/mach-s3c64xx/mach-ok6410.c里面添加都文件#include 在linux-3.3.5/a原创 2012-08-28 14:19:02 · 3825 阅读 · 1 评论 -
手把手教你移植linux内核---------OK6410(二)
前面已经把内核给跑起来的,现在要做的就是各种驱动的移植了,首先来移植简单的led。 在linux内核中drivers/leds/ledsgpio.c已经写好了一个与系统结构无关的LED驱动,我们只要修改BSP板极文件将它注册到platform上就行。在 arch/arm/mach-s3c64xx/目录下打开mach-ok6410.c板级文件root@ubuntu:/fo原创 2012-08-23 09:44:01 · 3788 阅读 · 5 评论 -
linux之GPIO的使用------OK6410
S3C6410的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制GPIO并不像控制传统的单片机那样。这里我将提及一种方法来讲述,这种方法也是我至今看到最简单的方法首先我们打开linux-3.0.1\arch\arm\plat-samsung\include\原创 2012-03-20 13:59:51 · 8699 阅读 · 2 评论 -
linux内存分配及内存管理
在linux中每一个进程都认为自己拥有4G的内存空间,其中0-3G为自己独占,剩下的1G为内核所有。用户空间的额3G空间又分为代码段,数据段,堆栈段。其进程中的常数、全局变量和动态数据都存放在数据段中,子函数的入口变量、子程序的返回地址、局部变量存放于堆栈当中,当然程序代码就存放在代码段当中了。那么这么多的数据内存是怎么来管理的呢?我的OK6410开发板有256M的内存,然而一个进程需要4原创 2012-03-21 18:59:19 · 1268 阅读 · 0 评论 -
linux并发和竞态之中断屏蔽
在单cpu中解决竞态的一种简单而有效的方法是在进入临界代码段时屏蔽系统的中断。这样就能防止正在执行的代码段被中断出来程序所抢占,防止了某些竞态条件的发生。总之一句话,就是程序在执行临界代码段时,中断不会发生。这里我们要知道linux内核中进程的调度都是依靠中断来实现调度,因此屏蔽中断意味着内核中的各个进程停止调度,在临界代码段中cpu只执行一个进程,并发就避免了。中断屏蔽的使用方法:loc原创 2012-04-30 14:24:36 · 987 阅读 · 0 评论 -
OK6410之PWM使用
s3c6410的PWM分别有两个定时器产生两路。PWM的时钟源可以自行选择来自于两个时钟分别是PCLK、XpwmEXLK外部时钟。从时钟源到定时器计数的过程我们看图1,如果时钟源来自于PCLK时钟线(一般频率为66MHz),那么时钟必须经过一个8位的分频计数器和多路复用模块,最终进入逻辑计数单元,通过对计数器的对比输出PWM波(如果没有设置死区时间)。如果使用外部时钟那么只要选择外部时钟源,则直接原创 2012-06-09 23:16:14 · 1394 阅读 · 0 评论 -
linux之I2C解析-------OK6410(三)
3 i2c-dev3.1 概述之前在介绍I2C子系统时,提到过使用i2c-dev.c文件在应用程序中实现我们的I2C从设备驱动。不过,它实现的是一个虚拟,临时的i2c_client,随着设备文件的打开而产生,并随着设备文件的关闭而撤销。I2c-dev.c针对每个I2C适配器生成一个主设备号为89的设备文件,实现了i2c_driver的成员函数以及文件操作接口,所以i2c-dev.c的主题转载 2012-07-25 11:54:03 · 2081 阅读 · 0 评论 -
linux之I2C解析-------OK6410(二)
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 2、I2C总线驱原创 2012-07-25 11:50:37 · 1290 阅读 · 0 评论 -
linux之I2C解析-------OK6410(一)
转自http://blog.csdn.net/cjok376240497/article/details/69723051 硬件特性1.1 概述I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA)。由于I2C总线仅需要两根线,因此在电路板上占用的空间更少,带来的问题是带宽较窄。I2C在标准模式下传输速率最高100Kb/转载 2012-07-25 11:51:52 · 1622 阅读 · 0 评论 -
linux之I2C解析-------OK6410(四)
4 总线驱动4.1 概述I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力,比如起始,停止,应答信号和master_xfer的实现函数。I2C总线驱动由i2c_adapter和i2c_algorithm来描述 4.2 S3c2440I2C控制器的硬件描述S3c2440处理器内部集成了一个I2C控制器,通过四个寄存器来进行控制:IICCO转载 2012-07-25 11:55:03 · 1640 阅读 · 0 评论 -
Linux驱动子系统之I2C用户空间调用
在学习了linux驱动IIC,对linux有了更深一层的了解。其中在内核drivers/i2c目录下有I2c-dev.c这么一个文件,他是一个通用的从设备驱动,一般的IIC只要使用这个驱动就能完成数据的交互,比如EEPROM、实时RTC等。 首先来介绍一下重要的结构体struct i2c_rdwr_ioctl_data { struct i2c_msg __user *ms原创 2012-07-25 12:21:22 · 1562 阅读 · 0 评论 -
linux下SPI驱动----OK6410(一)
SPI是同步外设接口,由摩托罗拉公司开发的全双工同步串行总线,接口有MISO、MOSI、SCK和SS四线组成。在这里不具体介绍SPI的工作原理了,相信学SPI驱动的同学已经在单片机上实现过了SPI的通讯。 学习SPI驱动首先必须要建立一个分层的设计思想,分层设计不光在SPI中体现,在linux内核中都是分层的思想,使得linux具有强大的适应性。分层设计思想在linux的Input、原创 2012-07-26 12:20:41 · 1922 阅读 · 0 评论 -
linux设备驱动之混杂设备misc
在linux系统中,存在一类特殊的字符设备,它们共享同一个主设备号(10),但次设备号不同,我们称此类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的miscdevice设备。 include/linux/下miscdevice.h中存在混杂设备结构体定义,各种次设备号定义以及注册注销函数。 linux内核使原创 2012-07-29 08:40:24 · 1029 阅读 · 0 评论 -
手把手教你移植linux内核---------OK6410(五)
搭建NFS网络文件系统 NFS (Network File System)是由Sun开发的一种在不同机器之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。 根文件系统是Linux启动时使用的第一个文件系统。没有根文件系统,Linux将无法正常启原创 2012-08-29 09:20:18 · 3812 阅读 · 17 评论 -
手把手教你移植linux内核---------OK6410(三)
OK6410--LCD液晶驱动移植: 下面来移植一个4.3寸LCD液晶。首先打开我们的板级BSP文件,修改里面的fb部分代码,即液晶配置部分代码root@ubuntu:/forlinx/linux-3.3.5/arch/arm/mach-s3c64xx# gedit mach-ok6410.c找到static struct s3c_fb_pd_win ok6410_fb_w原创 2012-08-24 10:15:40 · 4239 阅读 · 1 评论 -
手把手教你移植linux内核---------OK6410(一)
配置信息:移植内核:linux-3.3.5 可以从 http://www.kernel.org/ 下载纯正的版本 编译环境:vmware下ubuntu11.04交叉编译版本:4.3.2准备工作:一块OK6410开发板,交叉网线,串口线一根。在ubuntu根目录下创建forlinx文件,将内核拷贝至该目录下。确保你的ubuntu已经安装原创 2012-08-22 16:21:43 · 9152 阅读 · 8 评论 -
学习嵌入式linux的路
很多人问我嵌入式到底是什么,是不是很难学,学了嵌入式能做什么?总之这群人认为嵌入式是一个神秘的学科,呵呵。个人认为嵌入式Linux是一条漫长的路,并不是短短的几个月就可以搞定,在学习的过程中还要不断的循序渐进,积累知识,虽然网上有一大堆的学习资料,但是个人认为学习还是要有自己的一套学习方法,别人可以给你指路,但是并不会带你走向成功,到最后还是靠自己。总结网上的几点学习经验,个人非常原创 2013-02-24 15:49:55 · 1362 阅读 · 2 评论