驱动原理

wangling21908 2009-02-12 06:42:17
我一直在坚持学LINUX,以及其内核代码与驱动。但是好象现在很遇到瓶颈了。~~ 我是学计算机软件的, 因此对硬件不是很懂。。比如现在我想知道 为什么 IN , OUT 指令可以同一个硬件交互, 它怎么依靠电平高低进行识别的?这需要学习哪些课程? 以前的<<电路>>是混过来的,模电 也差不多 , 数电 好象理解得还可以。 请问需要哪些知识, 我去恶补一下/
...全文
274 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Silitex 2009-02-14
  • 打赏
  • 举报
回复
懂软件的人想懂硬件,动硬件的人又想懂点软件!理解支持楼主ing
有时候学习并不是最终目的,最终的目的是出产品!稳定的产品!
wangling21908 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ilovedrv 的回复:]
个人感觉,即使把in out的实现原理弄清楚了,也不一定能帮你突破瓶颈

驱动不过是按照一个框架填东西,是os和应用之间的一个接口层,可发挥的余地并不多



[/Quote]
嗯,看LDD 好象也只是按框架填东西,实现一些读写函数.但是操作系统那一块具体是如何同设备交互的呢.应该就是IN, OUT指令吧.我想
timerri 2009-02-13
  • 打赏
  • 举报
回复
找本《计算机原理》,基本概念都有。

要写驱动,还是必须知道原理,远远不是填空那么简单。特别是需要用通用总线扩展自己设备的时候,中断,时序,地址,端口一个都不能少。

完全没概念的话,可以学学51单片机,基本概念就会有了。再过渡到arm或者x86体系就容易很多。
ilovedrv 2009-02-13
  • 打赏
  • 举报
回复
个人感觉,即使把in out的实现原理弄清楚了,也不一定能帮你突破瓶颈

驱动不过是按照一个框架填东西,是os和应用之间的一个接口层,可发挥的余地并不多



kingsoft55555 2009-02-13
  • 打赏
  • 举报
回复
mark
netsocket 2009-02-13
  • 打赏
  • 举报
回复
mark
gooogleman 2009-02-13
  • 打赏
  • 举报
回复
楼上说的比较好。


操作系统下的驱动通常都给出了固定的框架和接口。驱动工程师只要在那里填写即可。
huabinsir 2009-02-12
  • 打赏
  • 举报
回复
我个人认为(不知是否正确,请高手指正): 真正的驱动是将 高低电位表示的位信息 转换为计算机能处理的字节信息 的代码.

由于很多平台上可运行操作系统并支持很多协议, 操作系统已经实现了很多功能, 并留出了许多接口, 这样我们写驱动就相对简单了,

并不要考虑太多,只要以操作系统支持的方式写代码,实现接口就可以了(以流方式或其它形式).

《android技术内幕:系统卷》 前言 第1章 准备工作 /1 1.1 深入认识android /2 1.1.1 android的系统构架 /2 1.1.2 android的初始化流程 /5 1.1.3 各个层次之间的相互关系 /8 1.1.4 android系统开发(移植)和应用开发 /11 1.2 获取和编译android的源码 /13 1.2.1 环境配置 /13 1.2.2 获取android源码 /14 1.2.3 编译android的源码及其工具包 /16 1.2.4 运行android系统 /21 1.3 开发环境搭建 /23 1.3.1 应用开发环境搭建 /23 1.3.2 源码开发环境搭建 /26 1.4 android源码结构 /32 1.5 小结 /33 第2章 android的内核机制和结构剖析 /34 2.1 linux与android的关系 /35 .2.1.1 为什么会选择linux /35 2.1.2 android不是linux /35 2.2 android对linux内核的改动 /37 2.2.1 goldfish /37 2.2.2 yaffs2 /38 2.2.3 蓝牙 /39 2.2.4 调度器(scheduler)/39 2.2.5 android新增的驱动 /40 2.2.6 电源管理 /41 2.2.7 杂项 /41 2.3 android对linux内核的增强 /42 2.3.1 alarm(硬件时钟)/43 2.3.2 ashmem(匿名内存共享)/46 2.3.3 low memory killer(低内存管理)/52 2.3.4 logger(日志设备)/56 2.3.5 android pmem /65 2.3.6 switch /79 2.3.7 timed gpio /88 2.3.8 android ram console /94 2.4 小结 /99 第3章 android的ipc机制--binder /100 3.1 binder概述 /101 3.1.1 为什么选择binder /101 3.1.2 初识binder /102 3.2 binder驱动原理和实现 /102 3.2.1 binder驱动原理 /102 3.2.2 binder驱动的实现 /103 3.3 binder的构架与实现 /132 3.3.1 binder的系统构架 /132 3.3.2 binder的机制和原理 /133 3.4 小结 /150 第4章 电源管理 /151 4.1 电源管理概述 /152 4.2 电源管理结构 /152 4.3 android的电源管理机制 /153 4.4 android电源管理机制的实现 /154 4.5 小结 /187 第5章 驱动的工作原理及实现机制 /188 5.1 显示驱动(framebuffer)/189 5.1.1 framebuffer的工作原理 /189 5.1.2 framebuffer的构架 /190 5.1.3 framebuffer驱动的实现机制 /190 5.2 视频驱动(v4l和v4l2)/201 5.2.1 v4l2介绍 /201 5.2.2 v4l2的原理和构架 /201 5.2.3 v4l2的实现 /202 5.3 音频驱动(oss和alsa)/208 5.3.1 oss与alsa介绍 /208 5.3.2 oss的构架与实现 /209 5.3.3 alsa的构架与实现 /213 5.4 mtd驱动 /214 5.4.1 mtd驱动的功能 /214 5.4.2 mtd驱动的构架 /215 5.4.3 mtd驱动原理及实现 /215 5.5 event输入设备驱动 /223 5.5.1 input的系统构架 /223 5.5.2 event输入驱动的构架 /224 5.5.3 event输入驱动原理 /224 5.5.4 event输入驱动的实现 /225 5.6 蓝牙驱动(bluetooth)/235 5.6.1 bluetooth驱动的构架 /235 5.6.2 bluez的原理及实现 /237 5.7 wlan驱动(wi-fi)/244 5.7.1 wlan构架 /244 5.7.2 wi-fi驱动的实现原理 /245 5.8 小结 /245 第6章 原生库的原理及实现 /246 6.1 系统c库(bionic libc)/247 6.1.1 bionic libc功能概述 /247 6.1.2 bionic libc实现原理 /248 6.2 功能库 /258 6.2.1 webkit构架与实现 /258 6.2.2 多媒体框架与实现 /275 6.2.3 android sqlite框架及原理

21,619

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧