<?xml version="1.0" encoding="gbk"?>
<rss version="2.0">
<channel>
 <title><![CDATA[关于设备IO地址的映射(原贴: s3c2410_gpi ..]]></title>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504]]></link>
 <description><![CDATA[Latest 20 replies of 关于设备IO地址的映射(原贴: s3c2410_gpi ..]]></description>
 <copyright><![CDATA[Copyright(C) ]]></copyright>
 <generator><![CDATA[PHPWind Forums by PHPWind Studio]]></generator>
 <lastBuildDate><![CDATA[Sun, 26 Jul 2026 21:04:57 +0000]]></lastBuildDate>
  <image>
 <url><![CDATA[images/rss.gif]]></url>
 <title><![CDATA[PHPWind Board]]></title>
 <link><![CDATA[http://aiothome.net]]></link>
 <description><![CDATA[]]></description>
  </image>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[看源码比较好]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#56515]]></link>
 <author><![CDATA[hhu]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Tue, 25 Jan 2011 00:57:39 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[Re:s3c2410_gpio_cfgpin中基地址的获得]]></title>
 <description><![CDATA[谢谢是发至肺腑的，像老大这样乐于指导我们这些初学者是值得尊敬的。老大，你那句点到内核映射的本质了，对我理解确实加深不少。还有个问题：如果驱动要申请内存区域，void request_region(unsigned long from, unsigned long num, const char *name) 。比如端口G(0123用于led驱动)，端口G(4567用于按键)
那按键申请就应该 ..]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11843]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 13:19:39 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[回 5楼(azfa) 的帖子]]></title>
 <description><![CDATA[[quote]这个可不可以这么理解，端口已经由其他初始化程序映射（规定）好了（当然规则和 S3C24XX_GPIO_BASE的规则一样，其实就是一家人），pin=192就是映射到0xfb000060。
void __iomem *base = S3C24XX_GPIO_BASE(pin);&nbsp;&nbsp;&nbsp;&nbsp;拿到内核区间的地址，直接操作base+偏移地址就是对端口寄存器首地址+偏移地址 ..]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11840]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 13:00:06 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[回 7楼(azfa) 的帖子]]></title>
 <description><![CDATA[我其实没做什么，这些都是你自己看源代码找出的答案，非常不错。]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11837]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 12:53:02 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[老大，我知道为什么了，崩溃了，那个button不是在注册的时候注册中断的，是在打开设备的时候注册中断的，那时候还是会把配置改为中断模式的。

先. /shell_button .退出测试程序，再后台运行，这时按键有效，加载debug.ko之后按键就没用了。


再次感谢老大的无私指导，让我对映射又有了一定的深入了解！]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11836]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 12:28:22 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[老大，我大概知道# define __iomem&nbsp;&nbsp;&nbsp;&nbsp;__attribute__((noderef, address_space(2)))
主要是告诉编译器检查后面的是不是硬件设备的寄存器在内核里所映射的地址空间，如果不是则报错，像我那样不加只不过是不检查，（当然从安全性角度考虑不可取），如果正确的话用起来是一样的。]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11835]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 12:06:39 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[老大，那个还在看，首先__attribute__就不太理解，内核内部知识还欠缺太多。


“映射本来就是一个基地址加偏移量的东西”

这个可不可以这么理解，端口已经由其他初始化程序映射（规定）好了（当然规则和 S3C24XX_GPIO_BASE的规则一样，其实就是一家人），pin=192就是映射到0xfb000060。
void __iomem *base = S3C24XX_G ..]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11833]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 11:52:26 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[[quote]我的意思是S3C24XX_GPIO_BASE(pin)这个是一个宏，展开还是一堆宏，说白了就是一堆数字加加减减，如果[/quote]
映射本来就是一个基地址加偏移量的东西

[quote]pin=192(32*6=S3C2410_GPG0)，S3C24XX_GPIO_BASE(pin)就计算得到0xfb000060。也就是等式右边就是0xfb000060。
void __iomem *base = S3C24XX_GPIO_BASE(p ..]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11832]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 11:37:49 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[附上调试代码，其中按键驱动是照着宋老师书写的，不要取笑哦，大家帮忙理解理解。]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11830]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 11:29:06 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[老大，谢谢你的关注！
我的意思是S3C24XX_GPIO_BASE(pin)这个是一个宏，展开还是一堆宏，说白了就是一堆数字加加减减，如果pin=192(32*6=S3C2410_GPG0)，S3C24XX_GPIO_BASE(pin)就计算得到0xfb000060。也就是等式右边就是0xfb000060。
void __iomem *base = S3C24XX_GPIO_BASE(pin);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11828]]></link>
 <author><![CDATA[azfa]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 11:11:54 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[关于__iomem, 可以看看这个[url]http://haoyeren.blog.sohu.com/115430836.html[/url]
对于地址的问题，我不清楚你希望怎么保护硬件，fb0000XX的地址不就是映射出来的虚拟地址吗？]]></description>
 <link><![CDATA[http://aiothome.net/read.php?tid=3504#11820]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 01 Nov 2009 10:06:06 +0000]]></pubdate>
</item>
</channel></rss>