![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 53
qq_807315755
微信公众号
展开
-
create_proc_read_entry(), create_proc_entry() | 创建 /proc 文件
说明:name : 要创建的文件名;mode : 文件掩码,为 0 则按照系统默认的掩码创建文件。base : 指定该文件所在的目录,如果为 NULL,则文件被创建在 /proc 根目录下。read_proc : 实现该文件的 read_proc 函数。也就是说,当我们读取 "name" 这个文件时(如 cat /proc/myproc_name) ,读取请求会通过这个转载 2012-02-22 20:49:14 · 10268 阅读 · 0 评论 -
LDD3源码分析之ioctl操作
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文分析LDD3第六章中关于ioctl操作的代码,并编写测试程序对ioctl功能进行测试。 一、ioctl转载 2012-06-04 17:36:27 · 1207 阅读 · 0 评论 -
LDD3源码分析之字符设备驱动程序(加上测试代码)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文是对LDD3第三章驱动代码的分析记录。LDD3的scull源码是一个综合性的驱动程序,内容涵盖了第三章到第六章的内容,初学者在学习过程中可能会转载 2012-05-18 11:18:00 · 1519 阅读 · 0 评论 -
LDD3源码分析之slab高速缓存
LDD3源码分析之slab高速缓存分类: LDD3源码分析2012-03-31 14:07 240人阅读 评论(0) 收藏 举报作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scullc 本文分转载 2012-06-18 15:14:44 · 871 阅读 · 0 评论 -
linux 中mmap的用法
函数:void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 参数start:指向欲映射的内存起始地址,通常设为 NULL,代表让系统自动选定地址,映射成功后返回该地址。参数length:代表将文件中多大的部分映射到内存。参数prot:映射区域的保护方式。可以为以下几种方式的组原创 2012-12-08 16:27:17 · 29936 阅读 · 0 评论 -
RIO的带有缓冲区函数的用法
假设我们编写一个程序来计算文本行中字符的个数, 一种方法是用read一个一个读取字节,然后传到用户存储器, 检查每个字节来查找换行符。 这个效率很低, 每次read都要经历一个系统调用。一种更好的办法, 是从内部读取一定的文件,然后再判读。但是程序还是有一个bug, 可能是回车键在文本行存储的问题。希望有心人帮忙指正。#include #include #include #inc原创 2012-12-12 16:58:32 · 3503 阅读 · 1 评论 -
链接器解析多重定义的全局变量
//first.c#include void f(void);int x = 15213;int y = 15212;int main(){ f(); printf("x = ox%x y = 0x%x\n", x, y); return 0;}//bar.cdouble x;void f(){ x = -0.0;}xxx@ubu原创 2012-12-26 16:44:04 · 1442 阅读 · 0 评论 -
android 内核出现kernel panic的分析
1 何谓OOPSOops是美国人比较常有的口语。就是有点意外,吃惊,或突然的意思。“Oops”并不是很严重,正如在Britney Spears的 “Oops I Did It Again”那首歌的歌词中,也是一种轻描淡写,有时含有抱歉的意思。http://v.youku.com/v_show/id_XMTM0ODgxMDYw.html对于Linux内核来说,Oops就意外着内核出了原创 2012-12-26 10:40:43 · 13559 阅读 · 0 评论 -
android中 Button 安装监听的三种形式
Button是事件源,当Click事件发生后Button把事件丢给监听器来处理。方法一下面的代码是最易懂,最直白的表示方法: 1 package zcy.app; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6转载 2013-04-11 10:39:37 · 836 阅读 · 0 评论 -
大牛讲解信号与系统以及数字信号处理
第一课 什么是卷积 卷积有什么用 什么是傅利叶变换 什么是拉普拉斯变换 引子很多朋友和我一样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,然后毕业了。先说”卷积有什么用”这个问题。(有人抢答,”卷积”是为了学习”信号与系统”这门课的后续章节而存在的。我大吼一声,把他拖出去枪毙!)讲一个故事:张三刚刚应聘到了一个电子产品公司做测试人员,转载 2013-08-16 09:23:33 · 1671 阅读 · 0 评论 -
心理学推荐书目
看到一些同学在问,这里推荐些个人认为值得看的书,随时修改补充 心理书目及下载 (大家挑自己喜欢的下载) http://www.xinli001.com/user/10/ 心理学入门网站:http://www.xinli001.com 必看的: 1.心理学导论 《心理学与生活》《心理学-一条整合的途径》 《人格心理学》(轻工业出版社)转载 2013-09-15 22:26:19 · 13940 阅读 · 0 评论 -
学习 FPGA 经验与书籍分享。
回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。 废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段: ①、Verilog语言的学习,熟悉Verilog语言的各种语法。 ②、转载 2013-08-29 09:57:26 · 21068 阅读 · 21 评论 -
(筆記) $dispaly()、$strobe()、$monitor() 、$fwrite()與blocking / nonblocking的關係 (SOC) (Verilog) (Debussy)
原链接: http://www.cnblogs.com/oomusou/archive/2011/06/25/verilog_strobe.html ---向博主 致敬!!!(筆記) $dispaly()、$strobe()、$monitor() 、$fwrite()與blocking / nonblocking的關係 (SOC) (Verilog) (Debussy) (V转载 2013-10-31 18:49:27 · 3934 阅读 · 2 评论 -
linux驱动开发的经典书籍
Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为《linux_device_driver 3rd Edition》,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了。但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的。除了这本Jonathan Corbet, Gr转载 2013-11-01 14:49:14 · 1109 阅读 · 0 评论 -
嵌入式 视频 名词 解释
HSYNC 是 水平同步信号。 它界定了视频帧每一行中(从左到友)有效视频的起始位置。 水平消隐为 电子枪从屏幕右侧 回归至下一行 左侧的时间间隔。VSYNC 是 垂直同步信号。 它定义了 一个新的视频图像的起始位置(从上到下)。垂直消隐为电子枪 从屏幕图像的右下角返回左上角所需的时间间隔。原创 2013-12-18 11:23:59 · 1569 阅读 · 0 评论 -
IC Design综合工具--Synplify Pro的常用选项及命令
Synplify Pro是Synplicity公司(Synopsys公司于2008年收购了Synplicity公司, 其客户遍布于通讯、半导体、航空/航天、计算机和军事电子等诸多领域,如:Philips,Agilent,Cisco,Lockheed,GE,Siemens,Lucent,Ericsson,Huawei,ZTE,UTStarcom等。本人所在公司即其中之一。)的高性能FPGA综合工具,转载 2013-12-27 09:22:01 · 4904 阅读 · 0 评论 -
关于 linux 驱动 的 学习
很早就想写个技术贴,关于 linux驱动开发的事情,从大学毕业到现在有两年余载,从毕业开始,就一直在做 android驱动开发的事情, 由于自己大学本科的专业是电子信息工程,对于计算机方便的知识很匮乏,于是我好好地学习了 (美)Brian W. Kernighan《c程序设计语言》第二版、Mark Allen Weiss (维斯) 的《数据结构与算法分析:C语言描述(原书第2版)》原创 2014-03-29 14:30:46 · 1473 阅读 · 0 评论 -
.c和.h文件的区别(头文件与之实现文件的的关系~ )
.c和.h文件的区别(头文件与之实现文件的的关系~ )分类: 12.C2011-09-22 15:21 3661人阅读 评论(3) 收藏 举报编译器includec语言工作makefile .c和.h文件的区别一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了。同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件转载 2013-09-05 16:49:22 · 1728 阅读 · 0 评论 -
android蓝牙在传输过程中会发生进度条停止的现象
平台高通8260,Android4.0: 最近项目组手机发现,手机被传入文件后,在传入几个文件时就停止在某一进度条。并且内核一直在打印h4_recv: Unknown HCI packet type ,其实一直就怀疑是频繁打开关闭串口导致的。今天终于证实了。之前机制是这样的: 首先申请Host_wake中断类型为高电平。当第一次打开蓝牙时, Host_wake =1时,此时原创 2012-06-01 14:17:59 · 3349 阅读 · 0 评论 -
LDD3源码分析之并发与竞态
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c examples/misc-modules/complete.c 本文分析LDD3第五章并发与竞态相关代码,本章代码涉及转载 2012-06-02 16:21:29 · 683 阅读 · 0 评论 -
浅析proc文件系统的创建和create_proc_read_entry函数的具体实现
浅析kern_mount加载sysfs的流程 因为sysfs是一个内存文件系统, 所以文件的物理存储关系就需要使用sd来维护, 因此sysfs_dirent即sd就类似于硬盘中的磁道. sysfs文件系统是一个排它式的文件系统, 不论被mount多少次都只产生一个sb超级块, 如果尝试再次mount,即尝试再次调用sysfs_get_sb获取另一个sb超级块,那么将执行a转载 2012-02-22 20:47:29 · 2540 阅读 · 0 评论 -
rfkill - RF kill switch support (翻译)
1、介绍 rfkill子系统在系统对于禁止无线设备工作提供了一个通用的接口,当无线设备被阻止工作时,它就不会在消耗功率。这个子系统在用户开关按钮上提供了一个方法去阻止某种无线设备的工作。这是用于某些环境下(比如飞机) ,无线设备就必须被关闭。子系统有硬件和软件模块的概念。在概念上这些意义很小,关于在于它能否被改变。2、实现细节 rfkill核心为内核驱动提原创 2012-02-10 15:17:19 · 9013 阅读 · 4 评论 -
浅谈android蓝牙睡眠机制
虽然对于linux的一些机制还不是特别了解,但还是想总结下近阶段做的一些工作。 在我们启动蓝牙的过程中,系统启动中会调用echo 1 > /proc/bluetooth/sleep/proto,并且会把host_wake的pin值拉高。蓝牙此时系统会调用bluesleep_start()这个函数,在这个函数中我们启动了mod_timer这个定时器。并且申请了类型为IRQF_TRI原创 2012-02-25 16:38:39 · 3943 阅读 · 0 评论 -
linux蓝牙驱动代码阅读笔记
昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。net/hci_core.cHCI 在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像 UAR转载 2012-02-20 17:38:25 · 1348 阅读 · 0 评论 -
write(2) - Linux man page
write(2) - Linux man pageNamewrite - write to a file descriptorSynopsis#include ssize_t write(int fd, const void *buf, size_t count);Description write() writes up转载 2012-03-05 16:46:08 · 1723 阅读 · 0 评论 -
Linux内核的ioctl函数学习
Linux内核的ioctl函数学习分类: linux学习 网络技术2008-01-25 09:49 866人阅读 评论(0) 收藏 举报 我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl。io转载 2012-04-10 20:42:16 · 1918 阅读 · 0 评论 -
c程序中存储空间布局
一、正文段。可执行程序在存储空间的的副本,cpu执行的机器指令部分。二、初始化的数据段。它包含明确地赋初值的变量。如: int a = 1; 此变量放于数据段。三、未初始化的数据段。 内核将此段中的数据初始化为0或者空指针。出现在任何函数外的c声明 ,long sum[1000];此变量存放在非初始化数据段中。四、栈。每次函数调用时,其返回地址以及调用者的环境信息都存放在栈中。最近被调原创 2012-04-13 14:21:02 · 2460 阅读 · 3 评论 -
关于c语言中的NULL
P = NULL, 说明p的地址程序不可访问。 NULL 作为一个特殊的指针变量,它不指向任何东西。所以在Linux中作这样的 #define NULL ((void *)0)定义。原创 2012-04-17 14:50:40 · 939 阅读 · 0 评论 -
散列表分离链接法初始化、插入、删去等操作(c)
#include #include struct ListNode;struct HashTb1;typedef unsigned int Index;typedef struct ListNode *Position;typedef struct HashTb1 *HashTable;typedef Position List;struct ListNode{ int原创 2012-04-28 18:03:11 · 1715 阅读 · 0 评论 -
关于android蓝牙每次开机有时候打不开。
最近在移植android4.0的蓝牙代码,发现蓝牙确实上了电,而且加载了firmware,但是还是打不开。经常一番苦苦查询才发现是蓝牙待机的问题:下面我分析下:在brcm_patchram_plus.c文件中,uchar hci_write_sleep_mode[] = { 0x01, 0x27, 0xfc, 0x0c,0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0原创 2012-04-18 21:34:25 · 3643 阅读 · 0 评论 -
关于 android 蓝牙
在蓝牙代码编译出来的可执行文件中,会看到bluetoothd这个文件。后来才发现这是由external\bluetooth\bluez\src中的文件编译而成。在android蓝牙启动过程中会启动这个可执行文件。其实也就是bluez了。 在蓝牙正常工作,和一般的模块类似。需要做三部分事情: 一、给芯片上电。 二、hciattach服务启动,从而加载固件,设置原创 2012-04-18 21:42:06 · 1057 阅读 · 0 评论 -
关于删除链表的方法
void DeleteList(List L) { Position p, tmp;p = L->Next; // 把L->Next赋值给p.L->Next = NULL; // L->Next 为NULL. 但是p不为null.只是说明L没有下一个节点了。while (p != NULL){tmp = p->Next;f原创 2012-04-19 09:41:28 · 601 阅读 · 0 评论 -
关于 a-- 和 --a
int a = 5; printf("%d\n", --a); // 此时打印出 4int a = 5; printf("%d\n", a--); // 此时打印出5原创 2012-04-19 17:48:37 · 616 阅读 · 0 评论 -
关于c 一元多项式链表的建立和打印
#include #include struct Node{ int coefficient; // 系数 int exponent; // 指数。 struct Node *Next;};typedef struct Node *PtrToNode;typedef PtrToNode Polynomial;void CreatList(PtrToNode *L原创 2012-04-20 21:24:48 · 2923 阅读 · 0 评论 -
用数组去模拟栈
用数据模拟栈,在一定的程度上提高了效率。但浪费了一些空间。下面我附上代码:#include #include #define EmptyTOS (-1)#define MinStackSize (5)struct StackRecord;typedef struct StackRecord *Stack;struct StackRecord{ int Capacity; i原创 2012-04-23 16:27:59 · 774 阅读 · 0 评论 -
用数组模拟栈
用数据模拟栈,在一定的程度上提高了效率。但浪费了一些空间。下面我附上代码:#include #include #define EmptyTOS (-1)#define MinStackSize (5)struct StackRecord;typedef struct StackRecord *Stack;struct StackRecord{ int Capacity;原创 2012-04-23 16:21:04 · 1892 阅读 · 0 评论 -
标题:我的中医自学历程(2013.8.26 更新网盘,欢迎下载和传播)
标题:我的中医自学历程(2013.8.26 更新网盘,欢迎下载和传播) 最近发现很多人都开始关注“中医入门”这个话题了;喜欢中医的人越来越多了,这是件好事,却也是件坏事;好是因为只有越来越多的人了解中医,中医才能健康发展;坏也是这个原因,哈哈 所以哦,我嘴痒的厉害,就跟大家聊一聊我的自学历程,给大家一个参考;转载 2013-09-15 22:32:45 · 14997 阅读 · 0 评论