摘要: 一、总体框架 deferred io机制主要用于驱动没有实现自刷新同时应用层又不想调用FBIOPAN_DISPLAY的一个折中方案, 使用ioctrl FBIOPAN_DISPLAY好处是节能, 驱动不用盲目的刷数据(尤其是一静态帧数据), 数据的更新是由应用程序操作的, 所以应用程序当然知道何时刷 阅读全文
posted @ 2019-04-17 11:40 Vedic 阅读(1949) 评论(0) 推荐(1) 编辑
摘要: Linux framebuffer的框架非常简单, 对于应用程序就是操作一块内存(俗称帧缓存), 当然也有可能是双缓存, 一般用于高帧率场景, 一块帧在填充数据时, 另一块在显示, 接着对调过来, 那通过设置哪里告知驱动层读取哪块帧数据呢? 答案是用vinfo.xoffset, vinfo.yoff 阅读全文
posted @ 2019-04-14 14:56 Vedic 阅读(5005) 评论(0) 推荐(0) 编辑
摘要: 一、MIPI MIPI(Mobile Industry Processor Interface/移动工业处理器接口)是2003年由ARM、Nokia、ST 等公司成立联盟并为移动应用处理器制定的一个开放标准, 旨在将各个模块标准化以降低设计的复杂度和兼容性。 由于定义的范围太广,所以在针对具体的模块 阅读全文
posted @ 2019-04-09 20:28 Vedic 阅读(6174) 评论(2) 推荐(2) 编辑
摘要: 一、单端信号 如图,特点就是一根信号线就可以了, 其参考的基准电压就是地,当电压大于VH就是1(高电平);小于VL就是0(低电平),为啥高低电平不是等于某个值而是大于/小于呢? 这很好理解, 输出的电压是小范围波动的, 不可能低电平就是0mv, 有可能是1mv,十多mv甚至更大! 如果等于0mv才是 阅读全文
posted @ 2019-04-08 15:31 Vedic 阅读(15331) 评论(0) 推荐(1) 编辑
摘要: 在上一篇博文 代码优化小技巧(持续更新......) 第三条关于数组和指针谁更高效, 意犹未尽, 决定单独拉出一篇来讲 编译和反汇编 <main>: 400596: 55 push %rbp 400597: 48 89 e5 mov %rsp,%rbp 40059a: 48 83 ec 60 sub 阅读全文
posted @ 2019-04-03 14:34 Vedic 阅读(1501) 评论(0) 推荐(1) 编辑
摘要: x86: movl(int) movb(char) arm: ldr(int) ldrb(char) ARM早期编译器不支持ldrb strb,在操作char类型时, 32bit处理器下用ldr加载R0寄存器(char所在的4byte), 假设在低8位,就左移24bit,右移24bit 如果在第二b 阅读全文
posted @ 2019-04-03 11:33 Vedic 阅读(1353) 评论(0) 推荐(0) 编辑
摘要: hello.c文件: Makefile文件: 追加: 上面的Makefile其实写得不严谨!首先make命令后处理的Makefile是kernel下的Makefile, 查看内容得知里面除了用CC LD AR 还会用其他的 所以我们要做的是赋值CROSS_COMPILE变量才对 阅读全文
posted @ 2019-03-29 17:42 Vedic 阅读(2736) 评论(0) 推荐(0) 编辑
摘要: 上一篇博文中 电池温度检测原理和示例代码 ,由于驱动要使用对数函数而从网上参看一个实现 尴尬的是当时内核不支持浮点运算所以停滞了, 时间紧迫只能折中先列出各个温度和电压对应表, 通过查表方式处理, 今天着重了解一下为何内核使用浮点运算“前世今生” 一、早期处理器 由于早期处理器硬件压根没有浮点运算功 阅读全文
posted @ 2019-03-29 16:48 Vedic 阅读(10525) 评论(0) 推荐(1) 编辑
摘要: 一、原理 其实电池内部有个热敏电阻, 与外部分压电阻构成一个简单的分压电路, 根据ADC采样得到的电压j计算热敏阻值再反推此时的温度, 首先我们要先了解热敏电阻阻值和温度一个公式: 我的外部电路如下: J2是电池插座, 三根线, 中间的就是NTC, BAT_DET连接处理器的ADC采样引脚, 分压电 阅读全文
posted @ 2019-03-28 16:23 Vedic 阅读(3528) 评论(0) 推荐(0) 编辑