08 2016 档案
摘要:废话不多说,直接进入主题。在驱动insmod后,我们应用层对input设备如何操作?以下以全志a64为实例。 在/dev/input/eventX下(X的形成为后续会分析),是内核把接口暴露给应用层,一切操作都在这个文件上。 input子系统有两大部分,分别是input_dev和input_hand
阅读全文
摘要:看了apue3,关于进程线程和进程间通信写了一个例子,方便自己理解相关知识,备忘。 程序开启4进程8线程同时一起累加。线程可以用全局变量同步,但4个子进程间不能共享累加结果,需要用进程共享量。同时涉及到多线程多进程的并发,需要用进程互斥量。
阅读全文
摘要:在终端下输入一串ip字符串如:19219219211,ip地址可能是19.219.219.211、192.19.219.211、192.192.19.211和192.192.192.11。 以下是本人造的轮子,代码看起来比较粗糙。 因为每个ip段都只有3种情况:个十百。只要把四段ip段解析出来再校验
阅读全文
摘要:面试比较频繁且基础的题目,以下是本人用两种不同方法造的轮子。 reverse_list1是通过每个节点的next指针反向指向prev,reverse_list2是利用递归,直接到链表末段再重新把next指向prev。用reverse_list2消耗更多栈。 程序初始化可能比较晦涩,没有写插入节点直接
阅读全文
摘要:1:ADC按键 以下是某平台提供的标准原理图: 功能很简单,就是通过分压进行ADC采集。标准应用是没什么问题。但我们因为需求原因需要把一个按键拉到长距离传输数据。如上图绿色虚线部分。长度大约30M x 2。 当按下S5的时候,CPU会误报S6按下的值,并且和S5来回切换,一段时间后才消失。断开绿色虚
阅读全文
摘要:两年前设计了一个心率电路,人的心率频率一般在0.6~4HZ,心率采集电路是微弱型号,对市电50HZ等干扰是十分敏感,所以硬件需要设计滤波器,设计带宽在0.6~4HZ之间。 以下是运放处理与仿真电路: 偏压电路: U4产生1.65V的偏压电路,保证放大最优点。C7和C8作为偏压滤波,保证电压稳定。 第
阅读全文
摘要:在linux用户层上要操作底层串口需要对/dev/ttySxxx操作,这里的ttySx指实际的终端串口。 以下以全志A64为实例,分析UART驱动以及浅谈TTY架构。 linux-3.10/drivers/tty/serial/sunxi-uart.c: 先看看注册tty_driver里面做了什么操
阅读全文
摘要:二叉排序树其实就是二分法,平均时间复杂度为O(nlogn),以下是本人硬着头皮造的轮子。 以上程序随机生成100个0-99的数,程序不能插入相同的数,修改insert_bst_data这个函数就可以。 查找和增加数据都是比较简单,实现起来就需要依靠c的指针功底。(用全局变量毫无压力) 删除数据需要找
阅读全文
摘要:内核里面用list_for_each_entry实在太多了,定义在linux-3.10/include/linux/list.h: 要分析list_entry就得分析container_of,linux-3.10/include/linux/kernel.h: 宏定义的第一行:typeof(x)是g
阅读全文
摘要:1:复位电路的应用。 这个电路有效防止了RESET信号的按键机械抖动。 工作原理: 按键松开的过程,VCC-3V3-->R8-->(+C46-)-->R15-->R17&Q4BE-->GND对C46充电。这一个过程Q4BE瞬间导通,缓慢截止,RESET#瞬间变低电平,缓慢从低变高电平,波形均为RC曲
阅读全文
摘要:在嵌入式系统里,较多场合需要LCD人机界面。分析以下LCD驱动电路。 LCD_VIN是3.6~5V,经过DC/DC burst升压得到LCD_AVDD,LCD_AVDD为LCD需要的模拟电压,根据LCD实际情况调整FB脚电压确定,这里假设是10V。 VGH是LCD的开关管的开启电压,假设这里需要15
阅读全文