摘要: 二叉排序树其实就是二分法,平均时间复杂度为O(nlogn),以下是本人硬着头皮造的轮子。 以上程序随机生成100个0-99的数,程序不能插入相同的数,修改insert_bst_data这个函数就可以。 查找和增加数据都是比较简单,实现起来就需要依靠c的指针功底。(用全局变量毫无压力) 删除数据需要找 阅读全文
posted @ 2016-08-10 11:44 Kevin_Hwang 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 内核里面用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 阅读全文
posted @ 2016-08-03 23:11 Kevin_Hwang 阅读(2609) 评论(0) 推荐(0) 编辑
摘要: 1:复位电路的应用。 这个电路有效防止了RESET信号的按键机械抖动。 工作原理: 按键松开的过程,VCC-3V3-->R8-->(+C46-)-->R15-->R17&Q4BE-->GND对C46充电。这一个过程Q4BE瞬间导通,缓慢截止,RESET#瞬间变低电平,缓慢从低变高电平,波形均为RC曲 阅读全文
posted @ 2016-08-03 15:39 Kevin_Hwang 阅读(1496) 评论(0) 推荐(0) 编辑
摘要: 在嵌入式系统里,较多场合需要LCD人机界面。分析以下LCD驱动电路。 LCD_VIN是3.6~5V,经过DC/DC burst升压得到LCD_AVDD,LCD_AVDD为LCD需要的模拟电压,根据LCD实际情况调整FB脚电压确定,这里假设是10V。 VGH是LCD的开关管的开启电压,假设这里需要15 阅读全文
posted @ 2016-08-01 15:37 Kevin_Hwang 阅读(2854) 评论(0) 推荐(0) 编辑
摘要: pinctrl框架是linux系统为统一各SOC厂家pin管理,目的是为了减少SOC厂家系统移植工作量。 通常通过设备树初始化pinctrl,并提供调用io接口,以下为全志A64平台的实例: 在drivers/pinctrl/sunxi/pinctrl-sun50iw1p1.c: start_ker 阅读全文
posted @ 2016-07-27 17:53 Kevin_Hwang 阅读(8842) 评论(0) 推荐(0) 编辑
摘要: vmem是内存多字符设备。包含vfs的open、read、write、ioctl、poll、fasync和release函数,device文件的读写。 virtual_mem.c 测试程序virtual_test.c: Makefile: github代码地址 https://github.com/ 阅读全文
posted @ 2016-07-22 02:30 Kevin_Hwang 阅读(629) 评论(0) 推荐(0) 编辑
摘要: 在内核里,如何利用dtb?以下以全志a64为实例讲解。 解析dtb的流程如下: start_kernel // init/main.c setup_arch // arch/arm64/kernel/setup.c setup_machine_fdt(__fdt_pointer) unflatten 阅读全文
posted @ 2016-07-22 01:23 Kevin_Hwang 阅读(2874) 评论(0) 推荐(1) 编辑
摘要: 如何单独编译设备树? cd linux-x.xx & make dtbs 生成的dtb在目录linux-x.xx/arch/xxx/boot/dts下 反编译dtb,生成dts: linux-x.xx/scripts/dtc/dtc -I dtb -O dts xxxx.dtb -o xxxx.dt 阅读全文
posted @ 2016-07-13 15:00 Kevin_Hwang 阅读(10859) 评论(0) 推荐(0) 编辑
摘要: 在驱动编程里面经常会用到ioctl的系统调用,发现cmd = 2的时候,用户ioctl直接返回-1。 原因在于在linux-x.xx/fs/ioctl.c定义的do_vfs_ioctl函数 发现do_vfs_ioctl实现先判断系统的cmd不匹配后才判断用户的cmd。 从以下代码可以得出 FIGET 阅读全文
posted @ 2016-07-13 00:52 Kevin_Hwang 阅读(6571) 评论(0) 推荐(0) 编辑
摘要: 在linux-x.xx/include/uapi/asm-generic/errno-base.h和errno.h里分别定义了返回错误的信息。 errno-base.h: errno.h: 以上可知错误信息在1~133之间,返回错误会添加-号,故返回-133~-1。 部分函数内部有记录错误的信息并且 阅读全文
posted @ 2016-07-07 14:15 Kevin_Hwang 阅读(254) 评论(0) 推荐(0) 编辑