- 博客(133)
- 资源 (8)
- 收藏
- 关注
原创 编程技巧
1.对结构体的初始化 struct s{int a;int b; } int main(){ strucnt s huang={1,3};}其实这种初始化的方法是存在风险的假如某天对该结果体中添加了元素,变量的顺序自然就发
2011-09-28 20:50:47
1033
转载 NTP协议实现
本文出处:http://www.eefocus.com/html/10-04/94667s.shtml10.4 实验内容 ——NTP协议实现1.实验目的 通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性
2011-09-28 19:39:55
16061
原创 清中断的一个技巧
在arm 处理器中发生中断是在SRCPND中相应位将自动置位,对SRCPND等寄存器赋1表示清楚中断标志位。咋一看下面的代码是不是很别扭啊,其实不然这是一种比较有技巧的写法。a=rSRCPND; //读取中断标志为中的值如1和2发生中断则为0b11rSRCPND=a;
2011-09-27 14:31:26
2787
原创 linux lcd驱动
个人感觉如果是搞清楚了裸机上的lcd驱动,特别是看懂了时序图的话,驱动linux上的lcd还是比较简单的,当然如果是芯片级的驱动就另当别论了,需要对framebuffer有非常深的了解,linux下对framebuffer做了非常好的封装,驱动的时候只需要在相关的结构体中填充相应
2011-08-29 11:16:21
987
原创 linux pwm实现蜂鸣器
要点: 1.本驱动基于信号量的并发控制。相关的API: static struct semaphore lock; void init_MUTEX(&lock); //初始化信号量 int down_trylock(&lock);尝试获取信号量,如
2011-07-23 15:30:08
3792
原创 linux adc驱动和触摸屏驱动
见以前写的文章 adc驱动:http://blog.youkuaiyun.com/charistain_huang/article/details/6317757 触摸屏驱动:http://blog.youkuaiyun.com/charistain_huang/article/details/637
2011-07-22 15:24:30
971
原创 工程中linux的LED驱动方法
在前面的blog中使用了标准的linux下驱动设备的方法,那是从头到尾自己驱动,但是工程中我们不会那么干(除非是芯片厂商),以为linux下已经有非常完整的LED,LCD,按键等设备的驱动,都少跨平台的,我们只需要在BSP中添加一些基本信息就可以啦。下面以mini2440上开发板
2011-07-19 14:59:00
1875
原创 probe()函数是什么时候被调用,设备和驱动是怎么联系起来的
probe()函数是什么时候被调用,设备和驱动是怎么联系起来的?? platform_add_devices(ldd6410_devices, ARRAY_SIZE(ldd6410_devices)); //这是bsp中添加所有的设备--》 platform_device_
2011-07-17 18:02:37
7390
原创 linux下的led驱动
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者
2011-07-17 16:08:43
3213
原创 模块的编写
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*********************************************************
2011-07-15 15:46:20
843
原创 移植linux到mini2440
之前写的一个帖子(文件系统没有写好之后另外开贴):http://blog.youkuaiyun.com/charistain_huang/article/details/5909760遇到错误和解决方法:http://blog.youkuaiyun.com/charistain_hu
2011-07-05 09:23:21
820
原创 uboot启动参数,机器码,环境变量
这些都是以前的帖子,现在移动到这里来了,,嘻嘻!!注意的问题总结:1.内核参数传递内核中的参数是内核提供的,在配置内核时指定,而u-boot提供的则在u-boot启动时传递到内核取代内核提供的。u-boot的参数传递利用了三个通用寄存器R0,R1,R2。u-b
2011-07-05 09:12:18
5732
原创 S3C2440裸机实验(7)----LCD驱动
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-20 10:42:00
1810
原创 S3C2440裸机实验(6) ----NAND FLASH
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-18 22:14:00
2108
1
原创 s3c2440裸机实验(5)----IIS
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-17 22:03:00
1633
原创 S3C2440裸机实验(4) -----IIC
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-14 23:31:00
1982
2
原创 S3C2440裸机实验(3) ----watchdog
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-13 23:29:00
1114
原创 S3C2440裸机实验(2)-----uart
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-13 18:17:00
1644
原创 S3C2440裸机实验(1)-----clock
转载请注明出处:http://blog.youkuaiyun.com/charistain_huang 文章中有什么不正确的地方恳请请各位网友指点*************************************************************作者:黄仁军
2011-06-13 15:54:00
1138
原创 结构体
<br />在.h文件中声明<br />struct food {<br /> int ID;<br /> QString name;<br /> int num; <br /> float price; <br />};<br /> <br /> <br />同时extern struct food food_infos[20];<br /> <br />在。c文件中对其进行初始化<br /> struct food food_infos[] = { //注意前面必须要加入struct foo
2011-05-15 11:28:00
835
原创 触摸屏驱动(基于mini2440)
驱动路径:drivers/input/touchscreen/s3c2410_ts.c在static int __init s3c2410ts_init(void)函数中注册了两个中断1.if (request_irq(IRQ_ADC, stylus_action, IRQF_SHARED|IRQF_SAMPLE_RANDOM, "s3c2410_action", dev))2.if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM, "s3
2011-04-29 21:41:00
1501
转载 Marvell 88w8686 SDIO wifi
http://yk8900.blog.163.com/blog/static/123183544201099115355124/ <br /> How to setup Marvell 88w8686 SDIO wifiOverview of How-To<br />This How-To is meant to be a starting point for people to learn setup the wifi on IGEP v2 devices as quick
2011-04-19 12:38:00
9303
原创 adc驱动基于mini2440
在mini2440中只有一个ad转换器,为了和触摸屏共享资源,在adc驱动中声明了一个全局信号量 ADC_LOCK:DECLARE_MUTEX(ADC_LOCK)在adc驱动中导出符号供触摸屏驱动使用:EXPORT_SYSBOL(ADC_LOCK);这个信号量只是解决了不合触摸屏同时使用AD转换器,但是还需要一个变量来说明当前的驱动是否在使用这个资源:我们暂且用adc_own变量来表示。在init函数中首先应完成把虚拟地址映射到内存空间,这样直接写内存地址的时候就实现了对ad寄存器的操作。、static v
2011-04-12 12:47:00
2141
原创 linux 补丁文件制作和恢复
<br />1.制作补丁文件:<br />diff -rNu test.1 test.2 > test.patch<br />-r如果是文件夹将递归的比较子文件,如果是单个文件可以不要这个参数,<br />-N:确保补丁文件能够正确处理已经创建或者删除的文件<br />-u以统一格式创建补丁文件<br /> <br />2.打补丁<br /> 如果有两个目录<br /> ---old/huang/test.1<br /> ++new/huang/test.2<br /> -p0:则从当前目录开
2011-04-08 09:39:00
1095
原创 ubuntu 10.10 qte4.5 环境安装
1. 下载源码包:http://get.qt.nokia.com/qt/source/ a. Qt 4.5.2 for Open Source C++ development on Linux/X11 [120Mb]<br /> qt-x11-opensource-src-4.5.2.tar.gz 此源码包是用于在Linux系统下开发Qt程序用的,开发出的程序只能在PC机上运行。里面包含了designer,qvfb等工具。 b. Qt 4.5.2 for O
2011-03-13 10:06:00
1668
原创 mini2440 tslib1.4移植
<br /><br />tslib版本:tslib-1.4 <br />交叉编译器版本: arm-linux-gcc 4.3.2 <br />操作系统平台: ubuntu10.10<br />开发板平台: Mini2440 <br /> 开始移植: <br /> <br /><br /> <br />1.交叉编译tslib<br />过程如下:<br /><br />解压;<br /><br />#./autogen.sh<br />#./configure --prefix=/home/duancp/m
2011-03-01 16:19:00
2604
原创 souce insight 中makefile 和.s文件不能高亮显示解决办法
<br />遇到在新建工程的时候,需要加入一些除了.c .h 等之外的文件,比如.s,.scf ,Makefile和ReleaseNotes等文件,而每次新建工程的时候,即使取消了shown only known document types,和在点击Add All之后选择了Recusively add lower sub-directories ,也还是不能正常识别这类文件,也就不能加入进工程,只能我们自己手动双击添加到工程中,如果文件少还无所谓,但是包含了很多子文件夹的大工程,这样实在不可行。 <br
2011-02-26 20:42:00
4332
原创 ubuntu中samba服务器的简单配置方法
<br />在虚拟机中实现linux的文件与Windows文件共享方法比较多,开始使用的是vmtools的方法,以前在redhat下没有出现什么问题,今天在ubuntu下可是出了不少问题,而且问题没有解决,可能是有些依赖库没有找到。最好还是采用了samba服务器的方法,<br /> <br />1.下载samba:sudo apt-get install samba<br /> 2.设置你需要共享文件的目录,注意修改权限。<br /> sudo mkdir /home/huang/share<br />
2011-02-12 21:43:00
882
原创 vmtools ubuntu
<br />进入解压后的vmwaretools目录<br /> $ cd /tmp/vmware-tools-distrib<br />执行安装命令 $ sudo ./vmware-install.pl<br /><br />接下来一路输入回车<br /><br />中间出现了问题:<br />What is the location of the directory of C header files that match your runn
2011-02-12 16:37:00
1657
原创 堆排序算法
<br />对排序可分为两个部分:1.将待排序的数据调整成最大堆或者最小堆 需要比较n-1趟(假设有n个数据)耗时O(n)<br /> 2.从最大堆中选择最大或最小的元素只需比较二叉树深度logn的次数 <br /> 因此该算法的时间复杂度为O(N*log n)<br /> <br /> <br />第一部分也即为调整树的过程,参考代码如下:<br />//R[]为带调整的数组,s为要调整元素的开始下标,m为结束元素下标 <br />v
2011-01-31 19:33:00
739
转载 Android中G-Sensor相关流程
<br />Android中G-Sensor相关流程 <br />1.使G-sensor正常工作需要做的事:<br />G-sensor driver文件包括:<br />driver/i2c/chips/lis331dl.c<br />driver/i2c/chips/sensorioctl.h<br />include/linux/lis331dl.h<br />并在/kernel/arch/arm/mach-s3c6410/mach-ur6410.c文件中i2c chanel1的结构变量i2c_dev
2011-01-23 22:50:00
1610
原创 使用hash算法统计字符串中字符出现的频率
<br />字符匹配面试题,两个字符串如果字符和长度都相等,则称这两个字符串匹配,如abcd和dcab。用函数实现,<br />对这样的问题我们可以考虑使用hash算法来实现,使用两个256个单元的hash数组,根据字符的ASCII作为hash数组的下标, 每个数组单元中记录字符出现的次数<br />#include<stdio.h><br />#include<stdlib.h><br />#include<assert.h><br />#include<string.h><br /> bool
2011-01-11 13:29:00
1795
原创 面试题
<br />. 时针分针重合几次表面上有60个小格,每小格代表一分钟,时针每分钟走1/12小格,分针每分钟走1小格,从第一次重合到第二次重合分针比时针多走一圈即60小格,所以 60/(1-1/12)=720/11 每隔720/11分才重合一次(而并不是每小时重合一次) 1440里有22个720/11,如果说算上0点和24点,那也是重合23次而已,但我觉得0点应该算到前一天的24点头上,所以每一天循环下来重合22次啊 2. 找出字符串的最长不重复子串,输出长度建一个256个单元的数组,每一个单元代表一个字符,
2011-01-11 11:05:00
738
转载 字典树
字典树:字典树的基本功能是用来查询某个单词(前缀)在所有单词中出现次数的一种数据结构,它的插入和查询复杂度都为O(len),Len为单词(前缀)长度,但是它的空间复杂度却非常高,如果字符集是26个字母,那每个节点的度就有26个,典型的以空间换时间结构字典树模板代码: #define MAX 26 //字符集大小typedef struct TrieNode{ int nCount; //记录该字符出现次数 struct TrieNode *next[MAX];}TrieNode;Trie
2011-01-10 13:43:00
687
原创 Hash算法
ELFhash函数在UNIX系统V 版本4中的“可执行链接格式”( Executable and Linking Format,即ELF )中会用到,ELF文件格式用于存储可执行文件与目标文件。ELFhash函数是对字符串的散列。它对于长字符串和短字符串都很有效,字符串中每个字符都有同样的作用,它巧妙地对字符的ASCII编码值进行计算,ELFhash函数对于能够比较均匀地把字符串分布在散列表中。这些函数使用位运算使得每一个字符都对最后的函数值产生影响下面是腾讯的一个面试题:在一个cache系统中,需要实现一
2011-01-09 23:32:00
1095
原创 linux驱动模型(上)
声明:本文为作者原创,欢迎转载,但请保留作者姓名和出处,由于本人水平有限,如有错误欢迎指正 957626485@qq.com -----Christain
2011-01-08 15:54:00
763
原创 uda1341原理及驱动
<br />现在主流的音频总线接口有IIS和AC97(Audio Codec)。<br />一。IIS是由sony和PILIPS公司共同推出的一套标准。<br /> IIS有3--5根物理连线<br /> IIsDI:串行数据输入<br /> IISDO:串行数据输出<br /> IISSCLK:为串行数据提供位时钟。IISSCLK=声道数*采样频率*采用位数。如:fs=44.1Khz 声道数位2.采样位数为16.则可以知道 IISCLK的具体数值。<br />IISLRCK:帧时钟,用于左
2010-12-19 16:49:00
1312
原创 MISC设备和char设备
<br />杂项设备(misc device)<br />杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。在 Linux 内核的include/linux目录下有Miscdevice.h文件,要把自己定义的misc device从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10 ,一起归于misc device,其实misc_register就是用主标号10调用register_chrdev()的。 <br />也就是说,misc设备其实也就是特殊的字符设备
2010-12-15 19:35:00
798
原创 看门狗
<br /> 对于看门狗定时电路,有一个输入端(也称喂狗断),一个复位端,与MCU的RST相连。MCU工作时每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。<br /> <br /> <br />系统软件"看门狗"的设计思路:<br /><br /> 1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启
2010-12-15 17:08:00
1356
转载 Linux内核地址空间的布局及实现代码
<br />http://www.linuxforum.net/forum/showflat.php?Board=linuxK&Number=147603<br /> <br />Linux内核地址空间的布局<br /><br />1) Linux将整个4G线性地址空间分为用户空间和内核空间两部分,<br />而内核地址空间又被划分为"物理内存区", "虚拟内存分配区", "高端页面映射区",<br />"专用页面映射区", "系统保留映射区"几个区域. <br /><br />2) 在支持扩展页长(PSE
2010-12-14 15:25:00
2319
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人