
OS-> Linux_内核开发
yeqishi
博观而约取,厚积而薄发
展开
-
Linux进程间通信方式
进程与进程通信的概念 进程通信的应用场景 进程通信的几种方式 管道 管道简介 管道原理 管道如何通信 管道如何创建 管道读写实现 管道api与用法 普通管道 流管道 命名管道 实现原理 api与应用 匿名管道和有名管道总结 信号 信号来源 信号生命周期和处理流程 api使用 消息队列 实现原理 api与应用以Posix为例 共享内存转载 2020-10-30 14:50:18 · 625 阅读 · 0 评论 -
Linux内存管理
现在的服务器大部分都是运行在Linux上面的,所以作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射 内存管理的方式 缺页异常先来看一些基本的知识,在进程看来,内存分为内核态和用户态两部分,经典比例如下:从用户态到内核态一般通过系统调用、中断来实现。用户态的内存被划分为不同的区域用于不同的目的:当然内核态也不会无差别地使用,所以,其划分如下:下面来仔细看这些内存是如何管理的。地址在Linux内部的地址的映射过程为逻辑地址–>线性地转载 2020-10-27 11:28:31 · 646 阅读 · 0 评论 -
Android Camera TakePicture过程分析
Camera子系统采用C/S架构,客户端和服务端在两个不同的进程当中,它们使用android中的binder机制进行通信,本系列文章将从Android Camera应用程序到硬件抽象的实现一步一步对照相机系统进行分析,首先从CameraService初始化过程着手,然后从上层APP打开照相机->进行preview->拍照以及聚焦等功能的实现全面的学习照相机子系统1、CameraServ原创 2014-11-22 10:58:44 · 4143 阅读 · 0 评论 -
dump_stack分析与应用
一、dump_stack(堆栈转储)作用:主要用于内核调试,打印内核堆栈段信息。二、使用前便已内核时:使用前,先在内核配置中把kernel debug选上: make menuconfig:kernel hacking-->kernel debug三、arch/x86/kernel/dumpstack.cvoid dump_stack(void){unsigned lo转载 2012-11-06 08:58:32 · 2386 阅读 · 0 评论 -
Camera模块解析之驱动篇 .
1 手机摄像头功能概述手机摄像头功能由多个功能模块组成,主要三个部分,采集,加工,显示。(1)采集部分由感光的sensor完成,通过CAM IF接口与手机芯片内的CAM连接。(2)CAM对CAM IF数据进行加工,主要是格式转换,特殊效果等。最终处理出来的一帧数据,转载 2011-09-23 17:35:48 · 3204 阅读 · 0 评论 -
Tslib主要滤波算法分析
tslib背景: 在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。 Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。 tslib插件: pthres 为Tslib 提供的触摸屏灵敏度门槛插件;variance 为Tslib转载 2011-06-13 15:10:00 · 978 阅读 · 0 评论 -
uart_get_baud_rate
<br />Nameuart_get_baud_rate -- return baud rate for a particular port Synopsis<br /> <br />unsigned int uart_get_baud_rate (struct uart_port * port, struct termios * termios, struct termios * old, unsigned int min, unsigned int max);<br /> Arguments<br /转载 2010-11-06 22:02:00 · 2561 阅读 · 0 评论 -
第 18 章 TTY 驱动
<br />目录18.1. 一个小 TTY 驱动18.1.1. 结构 struct termios18.2. tty_driver 函数指针18.2.1. open 和 close18.2.2. 数据流18.2.3. 其他缓冲函数18.2.4. 无 read 函数?18.3. TTY 线路设置18.3.1. set_termios 函数18.3.2. tiocmget 和 tiocmset18.4. ioctls 函数18.5. TTY 设备的 proc 和 sysfs 处理18.6. tty_driver转载 2010-11-06 01:36:00 · 915 阅读 · 0 评论 -
Yaffs文件系统结构
1.1 简介1.1.1 应用场合Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NAND FLASH芯片。Yaffs文件系统有些类似于JFFS/JFFS2文件系统,与之不同的是JF...转载 2010-06-29 15:50:00 · 664 阅读 · 0 评论 -
Linux2.6内核的vivi分区及内核MTD分区
ARM9 S3C2410微处理器是一款由SAMSUNG公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它与 Linux的结合越来越紧密,逐渐在嵌入式领域得到广阔的应用。目前,在PDA、移动通信、路由器、工业控制等领域都可以看到S3C2410与Linux 相结合的身影。 当前市场上基于S3C2410微处理器的开发板绝大部分都是用Nand Flash作为主存储器。Nan...转载 2010-06-28 15:44:00 · 720 阅读 · 0 评论 -
嵌入式Linux的文件系统及其存储机制分析
//来源不详嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置,本文分析了嵌入式系统中常用的存储设备及其管理机制,介绍了常用的基于FLASH的文件系统类型。 1.嵌入式系统存储设备及其管理机制分析 构建适用于嵌入式系统的Linux文件系统,必然会涉及到两个关键点,一是文件系统类型的选择,它关系到文件系统的读写性...原创 2010-03-29 20:50:00 · 611 阅读 · 0 评论 -
Linux进程函数大全
atexit(设置程序正常结束前调用的函数)相关函数 _exit,exit,on_exit表头文件 #include<stdlib.h>定义函数 int atexit (void (*function)(void));函数说明 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用,然后才...转载 2010-05-19 23:52:00 · 730 阅读 · 0 评论 -
开启linux(redhat、ubuntu) FrameBuffer
以下在f9试验过,ubuntu9.04方法稍有不同(见后)我在framebuffer开启后成功打开fb设备,移植了一个简单GUI进行点、线、面、园测试没有问题Linux -Lilo 模式启动确保您的 Linux 内核包含了 FrameBuffer 支持,并包含...原创 2010-05-09 23:09:00 · 5015 阅读 · 1 评论 -
2440平台下linux串口开发源码示例(2440双串口间通信)
/***************************************************************************** 程序说明:示例程序演示了2440平台下linux串口应用开发,可实现2440串口2与串口3的通讯*** 硬件设置:将2440板子上的串口2、3TXD、RXD交叉短接*** 编译运行:在宿主机上编译程序源码,打开超级终端(可与2...原创 2010-04-26 23:44:00 · 3172 阅读 · 1 评论 -
使用tcgetattr函数与tcsetattr函数控制终端
为了便于通过程序来获得和修改终端参数,Linux还提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。这两个函数的具体信息如表6.2所示。表6.2 tcgetattr函数和tcsetattr函数 头文件 <termios.h> <unistd...转载 2010-04-23 18:19:00 · 1342 阅读 · 0 评论 -
linux 串口编程
在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串口通信时相关参数与属性的设置。嵌入式Linux的串口编程时应注意,若在根文件中没有串口设备文件,应使用mknod命令创建,这这里假设串口设备是/dev/ttyS0,介绍一下串口的编程过程。#mknod /dev/ttyS0 c 4 641、打开串口 ...转载 2010-04-23 16:47:00 · 1673 阅读 · 0 评论 -
Linux下的串口编程
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它...转载 2010-04-23 10:29:00 · 772 阅读 · 0 评论 -
Android Java进程memleak自动化检测与堆转储方法
前言由于前一篇文章讲了如何在Java应用集群中高效找出内存泄漏进程的方法,现在开始分享Java进程memleak自动化检测与堆转储方法。在Java进程集群中,某一个或几个Java进程内存泄漏场景经常是很隐蔽的,这可能需要一系列的进程间业务动作才能暴露出来。同样,在某一个存在内存泄漏的Java进程内部,如果直接研究代码是否存在内存泄漏,这对理论基础和实际经验要求很高,而在高强度的实际场景测试...原创 2019-03-15 07:47:50 · 859 阅读 · 0 评论 -
NandFlash驱动分析
<br />今天学习了NandFlash的驱动,硬件操作非常简单,就是这个linux下的驱动比较复杂,主要还是MTD层的问题,用了一下午时间整理出来一份详细的分析,只是分析函数结构和调用关系,具体代码实现就不看了,里面有N个结构体,搞得我头大。<br /> <br />我用linux2.6.25内核,2440板子,先从启动信息入手。<br />内核启动信息,NAND部分:<br />S3C24XX NAND Driver, (c) 2004 Simtec Electronics<br />s3c2440-n转载 2010-12-13 10:39:00 · 1397 阅读 · 1 评论 -
UART控制器驱动流程
<br /><br />UART控制器也属于片上设备,因此它的流程也如其他的片上设备类似,流程可参考《2410下soc上的设备的驱动流程(RTC, watchdog等)》。首先是静态的初始化好这个设备的相关信息,包括中断号,寄存器地址等在arch/arm/mach-s3c2410/devs.c下<br />/* Serial port registrations */<br />static struct resource s3c2410_uart0_resource[] = {<br /> [转载 2010-09-29 16:58:00 · 1377 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析
一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步一步跟着走就行了):1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加s转载 2010-04-12 15:13:00 · 669 阅读 · 0 评论 -
Linux-2.6.20的cs8900驱动分析
一、初始化阶段 网络初始化被调用的路径为:init->do_basic_setup->do_initcalls->net_olddevs_init->ethif_probe2->probe_list2->cs89x0_probe->cs89x0_probe1真是不容易啊,终于进到cs89x0_probe1了,在这里开始探测和初始化cs8900了。下面就按照这个顺序来说明网转载 2010-04-12 15:03:00 · 799 阅读 · 0 评论 -
linux下的模块加载
//来源http://blog.chinaunix.net/u3/95713/showart_1946795.html一、什么是 modules? modules 的字面意思就是模块,在此指的是 kernel modules;简单来说,一个模块提供了一个功能,如 isofs、minix、nfs、lp 等等。传统来讲,模块化有两个方法解决:设计者可以把各项功能分离到单独的叫做线程的处理中去,转载 2010-03-28 23:59:00 · 1246 阅读 · 0 评论 -
基于S3C2440的Linux内核移植和yaffs2文件系统制作
来源:http://blog.ednchina.com/fafen/246308/message.aspx第一章 移植内核1.1 Linux内核基础知识在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。1.1.1 Linux版本Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的转载 2010-03-21 14:02:00 · 902 阅读 · 0 评论 -
使用GPIO控制SPI接口的AD芯片//来源不详
在实际应用中,英创的嵌入式工控主板经常需要与客户外部扩展的AD芯片相连。一般来讲AD单元的扩展有两种方法,一种是通过英创工控主板的精简ISA总线扩展,另一种则是通过同步串口的方法,如SPI、I2C接口,与AD连接。前一种方法所涉及的AD芯片一般具有并行接口,如MAX197等;而后一种方法的AD芯片则带有SPI或I2C接口。采用SPI或I2C接口的AD芯片,可使芯片的管脚数大幅减少,进一步使芯片本身转载 2010-03-21 12:43:00 · 1351 阅读 · 0 评论 -
嵌入式系统中LCD驱动的实现原理//来源不详
本文硬件采用三星公司的S3C2410芯片的开发板,软件采用Linux 2.4.19平台,编译器为arm-linux-gcc的交叉编译器,使用640×480分辨率的TFT彩色LCD,通过对其Linux驱动程序进行改写和调试,成功地实现了对该种屏的驱动和显示。 嵌入式驱动的概念 设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬转载 2010-03-21 12:23:00 · 645 阅读 · 0 评论 -
nandflash驱动分析以及与norflash的比较//来源不详
Nand在驱动方面与nor有很大的不同,首先接口就不同,nor用的是emc接口,而nand用的是ecc接口,这样nand就复杂了很多,好在现在大部分的arm芯片都有自己的nand控制器,帮我们完成了许多的工作,下面以s3c2410为例:1. 读nand的ID主要方法是先初始化ecc接口,然后写读ID的指令到指令寄存器,然后给ecc读ID的地址(0),然后等待指令响应完成,读出I转载 2010-03-21 12:18:00 · 798 阅读 · 0 评论 -
module_init和module_exit
/*http://blog.youkuaiyun.com/citytramper/archive/2006/02/16/600708.aspx*/一直以来写linux驱动,都是按照固定格式,定义一个初始化和推出函数,书上告诉我这两个函数会被调用,至于为什么会被调用,在哪调用,一直不清楚。偶然的一个机会,看到blob里面的代码,里面有一个初始化函数列表。按照一般的编程想法,各部分的初始化函数会在一个固定转载 2010-03-18 00:04:00 · 703 阅读 · 0 评论 -
modprobe XXX not found 解决与Depmod命令
-把模块文件放到 /lib/module/`uname -r`/kernel/ 目录下; -运行 depmod -再 modprobe 就好了 Depmod来自 ChinaUnix WikiLinux命令:depmod 功能说明:分析可载入模块的相依性。 语 法:depmod [-adeisvV][-m ][--help][模块名称] 补充说明:depmod可检测模块的相依性,供原创 2010-04-01 01:02:00 · 13891 阅读 · 0 评论 -
Framebuffer介绍与编程
(以下为Wiebe Zoon ;wiebe@linvision.com的一部分,原文为英文版,本文由highbar翻译)用framebuffer设备,你可以把你的计算机屏幕当成一个真正的图形设备。你可以修改分辨率,刷新率,色彩深度等。最好的一点是,你可以把像素点绘在任何你想要的地方。framebuffer设备不是一个图形库,而更确切的是一个低级的通用设备。这样创造了巨大的灵活性,...原创 2010-05-03 09:52:00 · 1475 阅读 · 0 评论 -
linux串口终端设备驱动分析
17.内核启动信息分析 Uncompressing Linux...................................................... done , booting the kernel. [archarmootcompressedmisc.c: decompress_kernel()] Linux ver转载 2010-09-29 14:17:00 · 3060 阅读 · 0 评论 -
详解linux下的串口通讯开发
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口通讯指的是计算机依次以位(bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一。Lin...转载 2010-09-23 21:05:00 · 2790 阅读 · 0 评论 -
熟悉Linux模块编程特定的宏
<br />这些宏定义在<linux/module.h>下<br />MODULE_AUTHOR(name) <br />定义驱动的编程者,name为string<br />MODULE_LICENSE(license) <br />定义驱动的license,一般为GPL,或相关公司的license<br />MODULE_DESCRIPTION(desc) <br />对驱动程序的描述,string<br />MODULE_SUPPORTED_DEVICE(name)<br />驱动程序所支持的设备,st转载 2010-08-13 16:21:00 · 1736 阅读 · 0 评论 -
fopen
fopen<br /> fopen(打开文件) 相关函数<br />open,fclose 表头文件<br /> #include<stdio.h> 定义函数<br /> FILE * fopen(const char * path,const char * mode); 函数说明<br /> 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 <br /> mode有下列几种形态字符串: <br /> r 打开只读文件,该文件必须存在。 <br /> r+ 打原创 2010-08-10 14:06:00 · 1248 阅读 · 0 评论 -
基于S3C2410的触摸屏驱动程序设计
基于S3C2410的触摸屏驱动程序设计 作者:沈阳农业大学 关键词: ADS7843 S3C2410 触摸屏 嵌入式Linux 消费电子 触摸屏 消费电子 摘要: 本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏">触摸屏控制器芯片完成触摸屏">触摸屏模块的设计。具体包括在嵌入转载 2010-05-07 10:34:00 · 2058 阅读 · 0 评论 -
undefined reference to `__gxx_personality_v0'
[root@localhost dss]# gcc -o abc abc.cpp /tmp/ccY3hmyr.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status [root@localhost dss]# gcc -o ab...转载 2010-05-05 23:51:00 · 2752 阅读 · 1 评论 -
Writting Linux Frame Buffer Driver fo LCD Device
Writting Linux Frame Buffer Driver fo LCD DeviceAbstract 1 LCD Module/Driver/Controller 2 Linux Frame Buffer Driver 2.1 Why Frame Buffer? 2.2 What is Frame Buffer Devices? 2.3 How to Wri转载 2010-05-04 23:25:00 · 1031 阅读 · 0 评论 -
S3c2410 LCD驱动学习心得
一 实验内容简要描述1.实验目的学会驱动程序的编写方法,配置S3C2410的LCD驱动,以及在LCD屏上显示包括bmp和jpeg两种格式的图片2.实验内容 (1)分析S3c2410实验箱LCD以及LCD控制器的硬件原理,据此找出相应的硬件设置参数,参考xcale实验箱关于lcd的设置,完成s3c2410实验箱LCD的设置(2)在LCD上显示一张BMP图片或JPEG图片3.实验条件(软硬件环境)P转载 2010-05-04 11:26:00 · 2349 阅读 · 0 评论 -
Linux设备驱动程序开发流程示例
以下的一些文字主要来源于khg,johnsonm的Write linux device driver,Brennans Guide to Inline Assembly,The Linux A-Z,还有清华BBS上的有关device driver的一些资料. 这些资料有的已经过时,有的还有一些错误,我依据自己的试验结果进行了修正. 一、Linux device driver 的概念转载 2010-03-03 20:56:00 · 1228 阅读 · 0 评论