- 博客(190)
- 资源 (6)
- 收藏
- 关注
转载 隐私政策网址(URL)
本软件尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本软件会按照本隐私权政策的规定使用和披露您的个人信息。但本软件将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本软件不会将这些信息对外披露或向第三方提供。本软件会不时更新本隐私权政策。您在同意本软件服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本软件服务使用协议不可分割的一部分。1.适用范围a)在您使用本软件网络服务,本软件自动接收并记录的您的手机
2021-12-27 17:07:44
429
转载 高通平台android 环境配置编译及开发经验总结
1、高通平台android开发总结1.1 搭建高通平台环境开发环境在高通开发板上烧录文件系统建立高通平台开发环境高通平台,android和 modem 编译流程分析高通平台 7620 启动流程分析qcril 流程分析,设置sim卡锁python scons 语法学习Python 语言之 scons 工具流程分析: 1.2 搭建高通平台环境开发
2014-01-22 21:48:28
42286
转载 android MSM8974 上DeviceTree简介
简介主要功能是不在代码中硬编码设备信息,而是用专门的文件来描述。整个系统的设备节点会形成一个树,设备节点里可以设置属性。官网在http://www.devicetree.org 。入门指南请参考http://www.devicetree.org/Device_Tree_Usage 。Linux上一些状况请参考"kernel/Document/devicetree/",其中"bindings
2014-01-22 21:35:19
12269
转载 串口编程tcflush()函数
tcflush函数刷清(扔掉)输入缓存(终端驱动法度已接管到,但用户法度尚未读)或输出缓存(用户法度已经写,但尚未发送). int tcflush(int filedes,int quene) quene数该当是下列三个常数之一: *TCIFLUSH 刷清输入队列 *TCOFLUSH 刷清输出队列 *TCIOFLUSH 刷清输入、输出队列 例如:
2013-08-09 17:43:32
2082
转载 Linux下的串口编程(二)
Linxu下的串口编程(二)---------------------------------------------------------Author :tiger-johnWebSite :blog.csdn.net/tigerjbEmail :jibo.tiger@gmail.comUpd
2013-08-08 12:41:44
1175
转载 上拉电阻下拉电阻的总结
上拉电阻:1、当TTL 电路驱动COMS 电路时,如果TTL 电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL 的输出端接上拉电阻,以提高输出高电平的值。2、OC 门电路必须加上拉电阻,才能使用。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在COMS 芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电
2013-08-07 15:35:41
1287
转载 Android Low memory killer
Android Low memory killer by 永远的伊苏Android中,进程的生命周期都是由系统控制的,即使用户关掉了程序,进程依然是存在于内存之中。这样设计的目的是为了下次能快速启动。当然,随着系统运行时间的增长,内存会越来越少。An
2013-07-18 16:55:22
914
转载 read_proc的用法实例
说明本测试程序主要参考了《linux设备驱动程序》第三版的第四章“调试技术”的‘/proc文件’一节。并对一些关键函数进行了实例化。以下是mod1.c#include#include#include#include /* read_proc需要的头文件。 */MODULE_LICENSE("GPL");/* 原型函数:int (*rea
2013-07-18 11:44:15
1608
转载 写了一个内核模块 实现简单的类似ps命令
内核模块创建在proc文件系统上建立_ps文件.遍例进程内核链表task_struct.将遍例结果存入缓冲区.影射到/proc/_ps文件中.用户态的程序去读取 这个文件.打印显示 当前进程的的pid,ppid 和进程名.[CODE] #include #include #include #include #include MODULE_LICEN
2013-07-18 09:22:35
1085
转载 open和fopen的区别
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则
2013-07-17 15:43:48
801
转载 使用call_usermodehelper在Linux内核中直接运行用户空间程序
系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化. 内核刚刚启动时,只有内核态的代码,后来在init过程中,在内核态运行了一些初始化系统的程序,才产生了工作在用户空间的进程。/* This is a non __init function. Force it to be noinline otherwise gcc 736 * makes it
2013-07-17 15:41:58
873
转载 使用异步 I/O 大大提高应用程序的性能(AIO)
简介: Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这种功能。在本文
2013-07-17 10:40:55
2539
转载 select - I/O多路转接全面透析
select()系统调用提供一个机制来实现同步多元I/O:#includesys/time.h>#include sys/types.h>#include unistd.h>int select (int n,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct
2013-07-11 17:51:58
719
转载 select函数与I/O多路转接
select函数与I/O多路转接相作大家都写过读写IO操作的代码,例如从socket中读取数据可以使用如下的代码:while( (n = read(socketfd, buf, BUFSIZE) ) >0) if( write(STDOUT_FILENO, buf, n) = n) {printf(“write error”);exit(1); }
2013-07-11 17:44:57
762
转载 linux等待队列 第四篇
Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要
2013-07-11 10:11:06
855
转载 linux 等待队列 第三篇
1、为什么要使用等待队列?等待队列就是阻塞型字符设备驱动的必需品。阻塞型就是说某个设备可读或者可写,但是呢,某个时候这个设备没有东西给你读,但你的应用程序(进程)操作却要向设备去读取数据,那没办法,要么就出错,要么就阻塞着在那里等着要读取数据。一旦设备有东西可以给你读了,进程就可以继续进行读操作了。2、定义并初始化等待队列。 (1) 定义"等待队列头" wait_
2013-07-11 09:52:02
845
转载 linux 等待队列 第二篇
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件"。它通过一个双链表和把等待tast的头,和等待的进程列表链接起来。从上图可以清晰看到。所
2013-07-11 09:46:02
770
转载 linux等待队列
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(
2013-07-11 09:32:59
748
转载 poll_wait新的理解
应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数,该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上。此时,poll() 函数上传递的参数包括含有设备文件信息的 struct file 结构体的指针参数 struct file *filp ,以及追加到设备驱动上的 poll_table结构体指针参数 poll_table
2013-07-10 16:23:59
2048
转载 理解poll_wait
poll_wait()是用在select系统调用中的. 一般你的代码会有一个struct file_operations结构, 其中fop->poll函数指针指向一个你自己的函数, 在这个函数里应该调用poll_wait() 当用户调用select系统调用时,select系统调用会 先调用 poll_initwait(&table); 然后调用你的 fop->pol
2013-07-10 16:22:38
809
转载 poll机制分析
poll机制分析所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。一、内核框架:对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析sys_poll,即可理解poll机
2013-07-10 16:19:40
632
转载 linux中字符串转换函数 simple_strtoul
Linux内核中提供的一些字符串转换函数:lib/vsprintf.c[html] view plaincopyprint?1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) 2. unsigned long simple_strt
2013-07-10 10:29:05
728
转载 远端仓库初始化成裸仓库 git init --bare
1 git init 和 git init –bare的区别 用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。比如有用户在该目录(就称为远端仓库)下执行git操作,且有两个分支(master和b1),当前在master分支下。另一个用户想把自己在本地仓库(就称为本地仓库)的master分支的更新提交到远端
2013-07-09 12:46:18
1207
转载 Linux 内核的队列实现--kfifo
今天研读了2.6.26内核的kfifo代码,感觉实现得巧妙,队列的队头队尾下标不受队列长度的限制,就算队头下标大于队列长度,也一样可以使用,原理就在于,数据不是全部放在队头(fifo->out)和队尾(fifo->in)之间的内存空间,而是把超出队头队尾之间长度的数据放到整个队列buffer的开始处,如图:蓝色部分为真实数据所在内存段,白色部分其实为逻辑上假定的数据所在地,也就是说,为
2013-07-08 16:11:03
1362
转载 内核数据结构之队列-kfifo
在操作系统内核中,一个常见的编程模式就是生产者和消费者。实现这种模式的最容易的方式就是队列。生产者将数据插入队列,消费者将数据移出队列。消费者以数据进队的顺序消费数据。内核中通用队列的实现称为kfifo,其实现文件位于kernel/kfifo.c中。本部分讨论的API接口是基于2.6.33的。Linux的kfifo工作方式与其他队列一样,提供两个主要的操作:enqueue()和dequeue(
2013-07-08 15:42:38
3691
转载 linux编程下signal()函数
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。根据信号的默认处理规则SIGPIPE信号的默认执行动作是 terminate(终止、退出), 所以client会退出。若不想客户端退出可以把 SIGPIPE设为SIG_IGN
2013-07-04 09:13:57
852
转载 hrtimer的简单使用 + 原理和实现
1.hrtimers - 为高分辨率kernel定时器,可作为超时或周期性定时器使用1). hrtimer_init初始化定时器工作模式。hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);vibe_timer.function = timer_func;/* 设置定时器的回调函数,定时器到时该函数将被调用 */
2013-07-01 12:03:28
25846
1
转载 中断处理函数中不用disable_irq而用disable_irq_nosync原因
今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现在进入中断处理后内核就挂掉了,于是研究了一下才发现disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用disable_irq_nosync来关闭中断先看一下disable_irq_nosync,内核代码中是这样解释的:
2013-06-29 10:41:53
1151
转载 Linux中的工作队列
工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。工作队列是实现延迟的新机制,从 2.5 版本 Linux内核开始提供该功能。不同于微线程一步到位的延迟方法,工作队列采用通用的延迟机制,工作队列的处理程序函数能够休眠(这在微线程模式下无法实现)。工作队列可以有比微线程更高的时延,并为任务延迟提供
2013-06-29 10:23:00
612
转载 输入子系统--event层分析
#####################################################################################################早前曾研究了一下输入子系统的原理,给人的感觉是输入子系统很复杂.但其实内核开发者在这方面已经做得很完善了,输入子系统虽然错综复杂,但是只要我们领会了输入子系统的一些设计思想后,我们要使用它并
2013-06-27 13:23:39
766
转载 set_fs get_fs
其实内核里面也可以用系统调用的,直接用read/write是可以的。但要注意几个问题: 一个是要记得编译的时候加上-D__KERNEL_SYSCALLS__ 另外源文件里面要#include 如果报错,很可能是因为使用的缓冲区超过了用户空间的地址范围。一般系统调用会要求你使用的缓冲区不能在内核区。这个可以用set_fs()、get_fs()来解决。在读写文件前先得到当前fs:
2013-06-26 11:35:17
1294
转载 LINUX内核中的xx_initcall初始化标号
LINUX内核中的xx_initcall初始化标号田海立@CSDN 2011-07-02 LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 这些起什么作用呢?查阅源代码(android goldfish-2.6.29
2013-06-18 14:50:46
580
转载 Linux驱动中,probe函数何时被调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用
2013-06-17 14:26:14
783
转载 FT5406触摸屏驱动
1.首先,分析下FT5406的基本电路接口[html] view plaincopyExternal Interface I2C/SPI: an interface for data exchange with host INT: an interrupt signal to inform the host processor that touch
2013-06-17 11:03:53
3920
转载 input 子系统架构总结
Linux输入子系统(Input Subsystem) Linux 的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输入子系统进行详细的分析。一 前言 输入子系统又叫 input 子系统。其构建非常灵活,只需要调用一些简单的函数,就可以将一个输入设备的功
2013-06-13 15:35:41
680
转载 十说电容经典
话说电容之一:电容的作用作为无源元件之一的电容,其作用不外乎以下几种:1、应用于电源电路,实现旁路、去藕、滤波和储能的作用。下面分类详述之:1)旁路旁路电容是为本地器件提供能量的储能器件,它能使稳压器的输出均匀化,降低负载需求。 就像小型可充电电池一样,旁路电容能够被充电,并向器件进行放电。 为尽量减少阻抗,旁路电容要尽量
2013-03-15 11:17:09
2172
转载 每个程序员都应该了解的内存知识
1 概述早期,计算机曾经很简单。它的各种组件,比如CPU、内存、大容量存储和网络接口,都是一起开发的,所以性能差不多。举个例子来说,内存和网络接口提供数据的速度不会比CPU快多少。这种情况随着计算机构造的固化和各子系统的优化慢慢地发生了改变。其中一些组件的性能开始落后,成为系统的瓶颈。特别是大容量存储和内存子系统,由于代价的原因,它们的发展严重滞后了。大容量存储的性能问题往往靠软件来改
2013-03-15 10:05:35
1011
转载 如何从零开始开发一款嵌入式产品(20年的嵌入式经验)
首先,如果你有幸看到这篇文章,千万不要试图在2个小时内阅读完,就算你2个小时阅读完,我相信你也不会理解里面讲解的精华之处,我相信,你应该将此文章,慢慢品尝,这绝对是一篇需要品尝2~3天,再结合自己过往的经验,加上自己的思考,我相信会对你不仅仅是技术能力,甚至包括整体的思维方式都会有一个非常大的提高。 我写这篇文章的目的,是用本人20年的嵌入式经验呈现给大家一副完整的产品,项目开发蓝图
2013-03-13 16:08:06
1158
转载 Nand 的几个名词:oob,bbt,ecc
例如Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理。8个I/O 引脚充当数据、地址、命令的复用端口。 芯片内部存储布局及存储操作特点: 一片Nand flash为一个设备(device), 其数据存储分层为: 1 (Device) = 4096 (Blocks) 1 (Block) - = 32 (Pages/Rows)
2013-03-13 15:57:23
763
转载 nand 分析(转帖)详细
直接转的贴,未整理,不方便的话请看原帖NAND Flash的驱动程序设计http://www.usr.cc/html/99/n-599.html1. 硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory
2013-03-12 16:36:03
1367
4G全网通高清视频传输设备 技术协议
2018-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人