- 论坛徽章:
- 0
|
1.GPIO
一般嵌入式处理器物理硬件上给出了很多引脚,有部分称为GPIO(一般目标的输入输出)
每个GPIO引脚要么用作输出0或1, 要么用作输入0或1, 代表了一个二进制信息位.
从功能上来说,如果只关注GPIO引脚的高低电平变化,那就是GPIO的一般功能。
但是有些GPIO引脚可以用作集成在处理器片内的外设控制器的信号输入输出(用于控制特定的外设),这就是GPIO的特殊功能。
就是说GPIO引脚要么用作输入输出0或1信号(控制非处理指定的外设),要么用于控制处理器指定的外设,这是可以配置的。
2.GPIO引脚的配置
就拿s3c2440的GPBCON和GPBDAT寄存器来说
端口B有11个GPIO引脚
(1)GPBCON是端口B的配置寄存器,用于配置这11个引脚的功能
比如配置GPB10引脚, GPBCON寄存器的[21:20]位可以配置成
00 = Input 01 = Output
10 = nXDREQ0 11 = reserved
如果配置成10就是这个引脚的特殊功能
如果配置成01就是GPB10引脚用于输出
(2)GPBDAT是端口B的数据寄存器
如果上述(1)中我们配置了GPB10引脚为输出(01), 那么只要向GPBDAT的第10个数据位写1, 物理硬件上就会在GPB10引脚输出高电平(信号1)
3.GPIO寄存器的物理地址
就上面的GPBCON和GPBDAT寄存器
datasheet上明确有
GPBCON 0x56000010
GPBDAT 0x56000014
4.GPIO寄存器的物理地址在arm虚拟地址空间的映射
如果linux打开了arm的mmu, 驱动程序中就不能直接访问上述的GPBCON或GPBDAT的物理地址, 必须先映射到虚拟地址
[ 本帖最后由 readkernel 于 2010-1-6 14:54 编辑 ] |
|