何为driver
来源:互联网 发布:nb 知乎 编辑:程序博客网 时间:2024/04/29 20:40
一、硬件角度看register及其地址:
a) 硬件角度并没有地址的概念,而是把地址线过来的电平看作信号来驱动,同时数据线过来的数据改变外设register的值,而这个所谓的值也只是coder的理解,ICer可能会做成register,也可能是锁存器等等。贴一个煊图,大概就是这样吧。
b) 为什么把相同功能的做成组,例如GPIO的register的地址分为ABCD组,各组连续。为了软件上操作的方便。
二、其实driver就是设置寄存器。既然通过二中的方法可以(软件意义上)设置寄存器了,那么我们coder就开始工作!!!
a) 以ARM7的GPIO_Write(GPIOB, 0x00ff); //写数据到PB 为例
b) 首先分析GPIOB:
i. #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)
ii. 简单解释上面的define就是把GPIOB_BASE开始的一段内存解释为GPIO_TypeDef
c) 然后分析GPIO_Write
i. void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
GPIOx->ODR = PortVal;
}
ii. 先保证无空指针,然后存取相应的寄存器。这就用到了二的解释了。
三、然后就没了,就这么简单,本文主讲driver与chip硬件的关系。以下问题后续文章:
a) 如何更好的封装driver,包括地址重定向、driver分层保证移植性等。
b) Driver如何注入os。
c) Os启动过程如何通过driver初始化硬件。
d) Uboot如何工作。
e) 如何编译链接生成特定内存要求的uboot。
- 何为driver
- 人生何为苦何为乐何为幸福
- 何为天,何为地,何为道
- 何为输入,何为输出?
- 何为声明 何为定义
- 何为debug 何为 release
- 何为堆?何为栈?
- 何为博客?
- 笑话--何为男人?
- 何为Robocode
- 何为DMZ区
- 何为“线速”?
- 何为日货
- 何为LE
- 何为GSM、CDMA
- 何为“顺颂商祺”?
- 何为设计模式?
- 何为换手率
- lua 取整 取余
- 1002 祭祀广场
- 未来十年,互联网将如何颠覆这17个传统行业,你知道吗?
- NUnit你不知道的秘密
- Libdgx专题系列:对象篇源码分析 SpriteBatch
- 何为driver
- 文本文件的数据显示在 DataGridView1上(整理)
- c# 获取某日期所在周的第一天和最后一天
- 使用Pro C++实现数据库连接池采用多线程方式访问oracle数据库
- 黑马程序员面试题之使用myeclipse的技巧及常用必备知识
- 漆 线 雕
- (转)常用IDEA快捷键
- ioctlsocket()
- 厦门药酒