- 博客(31)
- 资源 (26)
- 收藏
- 关注
转载 Linux开机启动过程分析
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当 你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关 信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息
2013-03-07 21:49:39
1303
转载 LCM模块闪屏现象分析
摘要:手机模块在手机上显示时,会出现闪屏现象,本文对闪屏产生的原因进行初步的分析,并提出了一些改善的方法。关键词:TFT;LCM;FLICKER;VCOM;频率;扫描方向;PWM;横条纹。一、闪屏现象综述。 手机模块多采用TFT和CSTN模块,主要为TFT模块,闪屏在所有不良现象中占了很大的比重,主要是因为很多外部环境的影响都会造成闪屏,而且由于测试环境的不同,同样加大了分析的难
2013-01-09 17:15:18
5774
转载 sysfs接口函数到建立_DEVICE_ATTR
sysfs接口:函数宏DEVICE_ATTR原型:#define DEVICE_ATTR(_name, _mode, _show, _store) struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_A
2012-11-06 08:46:08
1501
转载 Android系统makefile文件(Android.mk)组织结构
参考blog:http://blog.youkuaiyun.com/kobeyxyx/article/details/6614970一. main.mk1、检查版本号,设置环境变量(BUILD_SYSTEM)和缺省的目标。$(MAKE_VERSION) >= 3.81,BUILD_SYSTEM= build/core2、包含文件BUILD_SYSTEM/config.mk。根据配置信息和主机目标机
2012-09-25 18:32:15
6142
原创 内核树的建立及其Hello World 模块的加载
内核树的建立及其Hello World 模块的加载 每每到了一定程度过后,对自己所做过的事,看过的书等做一些总结是很有必要的。初学驱动编程,面对的第一个难题就是这个驱动编程该怎么学,入门是关键。在前辈们推荐下和在网上搜索中,得出结论:不知道怎么学和该学些什么,那就看这两本书:O'REILLY写的《LINUX设备驱动程序》和宋宝华的《LINUX设备驱动程序(第3版)》,或者你有兴趣的
2012-09-20 09:06:53
1893
原创 关于EXPORT_SYMBOL的作用浅析
在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL()这样的宏定义,通过网上查阅,它的作用大致总结如下:1、定义说明 把内核函数的符号导出,也可以理解成将函数名作为符号导出;符号的意思就是函数的入口地址,或者说是把这些符号和对应的地址保存起来的,在内核运行的过程中,可以找到这些符号对应的地址的。2、相关处理 (1)、对编译所得的.ko进
2012-09-20 09:06:11
18788
原创 Linux设备中的并发控制
并发执行的唯一原因是:硬件中断服务。内核代码是可抢占的。什么是竞争?当 2 个执行的线路[有机会操作同一个数据结构(或者硬件资源), 混合的可能性就一直存在。避免竞争方法: 在你设计驱动时在任何可能的时候记住避免共享的资源. 如果没有并发存取, 就没有竞争情况. 因此小心编写的内核代码应当有最小的共享. 这个想法的最明显应用是避免使用全局变量. 如果你将一个资源放在多个执行
2012-09-20 09:04:40
1261
原创 Ubuntu12.04下在Android4.0.4源码下载及其编译过程
一、下载源码1、下载工具repo:https://android.googlesource.com/tools/repo/在本地目录建个bin的文件夹,进入bin文件夹;通过git下载:git clone https://android.googlesource.com/tools/repo下载完成后,进入repo文件夹,切换到稳定分支:git checkout -b stable
2012-09-15 16:03:06
6447
2
原创 Linux设备驱动入门----USB设备驱动
/**************************************** * USB主机与设备驱动 * 主机侧:由底到高:USB主机控制器硬件--> * USB主机控制器驱动--> USB核心层 --> USB * 设备驱动层 * 设备侧:UDC驱动程序、Gadget API和Gadget * 驱动程序 * 逻辑组织:设备(1) 配置(n) * 配置
2012-08-20 17:40:41
3083
2
原创 Linux设备驱动入门----I2C设备驱动
/* * I2C驱动的一些模板: * (1)、I2C总线驱动的的模块加载和卸载函数模板 * (2)、I2C总线通信方法 * (3)、I2C设备驱动模块的加载和卸载 * (4)、I2C设备驱动的文件操作接口 * (与普通驱动的文件操作一致,只是要使用 * i2c_client,i2c_driver,i2c_adapter,i2c_algorithm * 结构体和I2C
2012-08-13 15:53:44
1608
原创 异步:fasync_struct
这一节主要在上一节中添加了异步通知的功能,要注意观察和对比该字符设备的驱动是怎样一步步完善的。补充一下小知识:异步通知的意思是一旦设备就绪,就主动通知应用程序,这样应用程序根本读不需要查询设备状态。#include #include #include #include #include #include #include #include #include #incl
2012-08-07 18:18:12
4614
1
原创 信号量和队列:semaphore and wait_queue_head_t
这一次是在globalmem的字符设备驱动的基础上,增加了并发控制(也就是多进程多共享资源的访问的控制),还增加了阻塞I/O 和poll轮询操作,因为我还是菜鸟,有很多东西还不懂,希望与大侠能指点学习Linux设备驱动的要点和关键点。还是看代码吧#include #include #include #include #include #include #include #in
2012-08-07 16:37:25
2427
2
原创 Linux设备驱动入门----globalmem字符设备驱动
/* globalmem字符设备驱动 * 作者:liwei.cai * 日期:2012-08-03 * globalmem.c */#include #include #include #include #include #include #include #include #include #include #include #define GLOBALMEM
2012-08-06 10:42:04
2210
2
原创 碎纸片中的我的大学
碎纸片中的我的大学—— 以此来纪念我的青春我的大学 还记得初中高中的语文老师们都说,写作文最难的就是开头,这也刚好印证了那句古话:“万事开头难……”,于是我的回忆也从这里开启。记得那还是小时候吧,但或许也不小了,都是青春年少的好时光,每每在周记日记的开头都会对时间的流逝感叹一回,什么“一转眼”,什么“不经意”,感叹时间的苍茫和无情,感叹白驹过隙留不住青春,
2012-08-04 21:18:00
5138
原创 linux驱动入门---test驱动模块加载
编写一简单的字符驱动程序,这里的设备也就是一段内存,实现简单的都写功能, 并列出常用格式的Makefile已经驱动加载和卸载脚本。/* test_drv.c */#include #include #include #include #include #include #include #include #include #define TEST
2012-08-01 08:56:42
2003
6
转载 vim常用命令
一. VIM高亮进入vim后,在普通模式下输入如下命令,开启php代码高亮显示 :syntax enable :source $VIMRUNTIME/syntax/php.vim 二. VI常用命令_______________________________________________________一般模式
2012-07-25 23:19:47
1102
1
原创 Ubuntu10.04不能安装grub到/dev/sda,实现bootloader
方法一:启动不了内核,开机过后出现:命令输入我ls了一下,看到有(hd0,1)(hd0,10)(hd0,2)....set root=(hd0,1)linux /boot/vmlinuz-2.6.32-25-generic root=/dev/sda8initrd /boot/initrd.img-2.6.32-25-genericboot成功的启动了linux,之
2012-07-24 14:21:55
20235
2
原创 消息:ftok(), msgget(), msgsnd(),msgrcv(),msgctl()
/* * msgsnd.c * * Created on: 2012-7-20 * Author: liwei.cai *///以下是消息队列发送端的代码,与接收端配合使用,//输入字符串quit时退出程序,其他字符串发送#include #include #include #include #include #include #include #de
2012-07-21 00:53:54
1862
原创 信号:signal(), sigaction(), sigaddset(), sigemptyset(), sigismember(), sigprocmask()
实例一:如何使用信号函数捕捉相应的信号,并做相应的处理。/* * signal.c * * Created on: 2012-7-19 * Author: liwei.cai */#include #include #include //自定义信号处理函数void my_func(int sign_no){ if (sign_no == SIGINT
2012-07-21 00:53:14
7016
原创 共享内存的创建和映射shmget()和shmat()
共享内存的实现分为两步:1、创建共享内存,用到的函数是shmget();2、映射共享内存,就是把这段创建的共享内存映射到具体的进程空间去,使用的函数是:shmat();这样就可以使用不带缓冲的I/O读写命令对其进行操作了。实例如下:/* * shmem.c * * Created on: 2012-7-20 * Author: liwei.cai */
2012-07-21 00:52:10
10891
原创 如何创建守护进程fork()函数的运用
编写守护进程只要遵循一个特定的流程,就很方便写出自己的守护进程。第一步、创建子进程,父进程退出;pid = fork()if (pid > 0){exit(0); //父进程退出}第二步、在子进程中创建新会话;第三步、改变当前目录为根目录;第四步、重设文件权限掩码;第五步、关闭文件描述符;这样就基本创建了一个守护进程。下面看一个实例:作用是让该守
2012-07-21 00:50:38
2466
原创 使用多路复用实现3个串口的通信
如题,Linux环境下操作串口设备,实现多路复用。串口配置函数:/* * set_com_config.c * * Created on: 2012-7-18 * Author: liwei.cai */#include int set_com_config(int fd, int baud_rate, int data_bits, char parity
2012-07-19 19:52:07
9953
1
原创 简单的多路复用编程(I/O)----select()和poll函数的运用
多路复用一般用于I/O操作可能会被阻塞的情况,对可能会有阻塞的I/O的管道、网路进行编程。下面我们来看个例子来说明如何使用两个多路复用函数。 本实例中主要实现通过调用select()函数来监听3个终端的输入(分别重定向到两个管道文件的虚拟终端以及主程序所运行的虚拟终端),并分别进行相应的处理。通过监视主程序的虚拟终端标准输入来实现程序的控制(例如:程序结束);以两个管道作为数据的
2012-07-17 21:03:01
4562
原创 文件锁fcntl()函数的使用
问:为什么要使用文件锁?答:当多个用户共同使用、操作一个文件的情况时,Linux采用的方法就是给文件上锁,来避免共享的资源产生竞争的状态。问:文件锁有哪些类型?答:文件锁包括建议性锁和强制性锁。一般情况下,内核和系统都不适用建议性锁,采用强制性锁的影响很大,每次读写操作都必须检查是否有所存在。问:怎样实现文件上锁?答:在Linux中,实现文件上锁的函数有lockf() 和fcn
2012-07-17 21:01:36
8093
原创 使用autotools生成包含多文件的makefile
这里以简单的一段程序为例:/* * daemon.c * * Created on: 2012-7-13 * Author: liwei.cai */#include #include #include #include #include #include #include int main(){ pid_t pid; int i, fd; char
2012-07-16 21:19:45
2051
原创 GCC创建使用静态库,动态库
如何创建和使用,简而言之看代码,从例子入手:/* * unsgn_pow.c * * Created on: 2012-7-16 * Author: liwei.cai *///库函数unsigned long long unsgn_pow(unsigned int x , unsigned int y){ unsigned long long res = 1
2012-07-16 21:02:05
3302
原创 ubuntu设置保护一下眼睛
经常写文章或打游戏写到半夜,第二天眼睛总是不舒服,视力下降也挺快的,还是得想法保护一下眼睛1、安装 Ubuntu Tweak,在“电源管理设置”中把显示器亮度调低些我是经常晚上关了灯用电脑,所以亮度调整为 65%,感觉明暗刚合适2、显示器默认色温太高,有点偏蓝,就算不是晚上,用久了眼睛也受不了,装个根据时间动态调整色温的软件 f.luxsudo add-apt-repo
2012-06-05 23:16:15
3899
1
原创 git 基本操作与规范流程
git是个非常好用的版本工具,不但可以在linux下环境使用,还可以在windows下使用。我们的整个代码工程需要使用这个来管理,我们自己的一些联系也可以很方便的使用它去管理,节省了很多代码维护的成本。 一、基本应用1.安装 git的安装除了git core这个东西以外,我们还需要安装git gui和gitk,这些东西后面会方便我们的工作。ubuntu下:直接采用新立德安装
2012-05-15 01:14:46
8932
转载 Failed to load VMMR0.r0 (VERR_SUPLIB_WORLD_WRITABLE).
Failed to load VMMR0.r0 (VERR_SUPLIB_WORLD_WRITABLE).Unknown error creating VM (VERR_SUPLIB_WORLD_WRITABLE).Result Code: NS_ERROR_FAILURE (0x80004005)Component: ConsoleInterface: IConsole {5
2012-05-13 16:29:57
3829
原创 linux 一些常用文件结构和命令
1、linux目录结构/ 根目录,最高级别/bin 系统基本命令存放目录(/usr/bin)/boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img) 一般情况下,GRUB或LILO系统引导管理也位于这个目录/dev 设备文件存储目录,如声卡、光驱.../ect 存放系统设置文件(如用户账号密码、服务器配置文件
2012-04-11 23:39:15
2846
原创 ubuntu 系统清理常用命令
虽然linux下不会有windows下的那么多垃圾和磁盘碎片!但还是会留下一些用不着的临时文件或是多次升级后的N个旧的内核!1,非常有用的清理命令:sudo apt-get autocleansudo apt-get cleansudo apt-get autoremove这三个命令主要清理升级缓存以及无用包的。2,清理opera firefox的缓存文件:
2011-07-17 18:14:34
1146
基于JSP+Servlet的租赁系统(毕业设计)源代码
2012-06-04
基于Android平台的即时通信系统的设计与实现
2012-05-29
大学各种课程设计
2012-03-27
简易博客留言系统
2012-03-27
微机原理课程程序_电子琴设计
2011-06-22
微机原理_简单的电子琴程序设计
2011-06-22
通信原理课程设计——数字信源电路设计
2011-06-22
通信原理Ewb仿真软件--增量调制设计
2011-06-22
通信原理课程设计_AMI编译码系统设计
2011-06-22
通信原理课程设计_△M通信系统设计
2011-06-22
数字图像处理DSP_IIR带通滤波器的设计
2011-06-22
单片机课程设计_包含步进电机、音乐发声和其他参考资料
2011-06-22
单片机串行通信课程设计
2011-06-22
通信原理课程设计---增量调制
2011-06-21
单片机数字钟程序设计与仿真(带校时)
2011-06-21
简易无线遥控系统设计
2011-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人