Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3125386
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: LINUX

2014-11-04 10:06:06

原文地址:
在s3c2410_wdt.c中
有一行
request_mem_region(res->start, size, pdev->name)

在devs.c中
static struct resource s3c_wdt_resource[] = {
[0] = {
.start = S3C24XX_PA_WATCHDOG,
.end = S3C24XX_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_WDT,
.end = IRQ_WDT,
.flags = IORESOURCE_IRQ,
}

}
在arch/arm/mach-s3c2410/include/mach/map.h
#define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG
在/arch/arm/plat-s3c24xx/include/mach/map.h
#define S3C2410_PA_WATCHDOG (0x53000000)

即上面行代码要申请0x53000000开始的一段size大小的内存地址空间以访问watchdog

从s3c2440/s3c2410手册上获知
watchdog的寄存器地址本来就是从0x53000000开始的一段内存区域
比如WTCON 0x53000000,WTDAwatchdog 0x53000004,WTCNT 0x53000008等,就是说这些io内存的物理地址都是已经被cpu定义好的了,即使不去request_mem_region,watchdog那些寄存器的物理地址也是从这里开始的,即在驱动程序中访问watchdog就必须去访问这部分物理地址(的ioremap之后的虚拟地址)。
难道内核会把0x53000000这个地址空间分配给别的寄存器吗?
不知道request_mem_region用意为何?

s3c2440的地址空间中,从4千8百万到5b00001c这段地址都是已经分配好的了,用于特殊寄存器的寻址,
访问某个地址就是访问一个已定的寄存器。

不知道我的理解哪有问题

阅读(1074) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~