pcie外接芯片映射寻址问题

我不要可乐 2016-08-11 10:57:06
本人刚刚入行,目前在用pcie外接ath9k的无线网卡,我在ath9k驱动中找相关寄存器的时候找不到哇,偏移地址好像都不对,我之前一直认为外接芯片寄存器空间有多大,cpu就会分配多大的寻址空间给它,原来不对哇,这是个什么样的机制哇?求指教,我怎么样才能找到相应的寄存器哇?
...全文
417 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不要可乐 2016-08-18
  • 打赏
  • 举报
回复
@wenxy1 解决了, bar中存放的是映射好的pci总线域的物理地址。 小弟还有一个问题 pci设备的I/O地址空间和memory地址空间是两块地址空间还是一块地址空间的两种表现形式呢?
Wenxy1 2016-08-17
  • 打赏
  • 举报
回复
引用 7 楼 china_ce 的回复:
[quote=引用 6 楼 wenxy1 的回复:] [quote=引用 楼主 china_ce 的回复:] 本人刚刚入行,目前在用pcie外接ath9k的无线网卡,我在ath9k驱动中找相关寄存器的时候找不到哇,偏移地址好像都不对,我之前一直认为外接芯片寄存器空间有多大,cpu就会分配多大的寻址空间给它,原来不对哇,这是个什么样的机制哇?求指教,我怎么样才能找到相应的寄存器哇?
在kernel src中找个pcie wifi NIC 驱动看看。 [/quote]pci设备配置空间bar中是存放的该设备映射好的物理地址吗?得到bar中的物理地址,直接ioremap映射到虚拟地址就可以直接读写该设备吗?[/quote] 应该是,直接ioremap后,试试读device id,看看读取的值是否正确。 做实验吧。
我不要可乐 2016-08-17
  • 打赏
  • 举报
回复
引用 6 楼 wenxy1 的回复:
[quote=引用 楼主 china_ce 的回复:] 本人刚刚入行,目前在用pcie外接ath9k的无线网卡,我在ath9k驱动中找相关寄存器的时候找不到哇,偏移地址好像都不对,我之前一直认为外接芯片寄存器空间有多大,cpu就会分配多大的寻址空间给它,原来不对哇,这是个什么样的机制哇?求指教,我怎么样才能找到相应的寄存器哇?
在kernel src中找个pcie wifi NIC 驱动看看。 [/quote]pci设备配置空间bar中是存放的该设备映射好的物理地址吗?得到bar中的物理地址,直接ioremap映射到虚拟地址就可以直接读写该设备吗?
我不要可乐 2016-08-16
  • 打赏
  • 举报
回复
非常有帮助,谢谢关照。 我还有一个问题不是很清楚,就是pcie设备(比如我现在正在使用的ar9582),datasheet中为啥没有PLL控制寄存器哇?让我很是纠结,我看了看atheros系列的其他芯片的datasheet,是有PLL相关寄存器的(也就找到一个ar9331,这个不是pcie设备),难道说PLL的设置不是操作PCIE设备中的寄存器吗?
猪头三小队长 2016-08-16
  • 打赏
  • 举报
回复
pcie的bar地址控制器一般情况要对用户可见,否则就无法实现根据用户需求浮动窗口的功能了。每种pcie控制器对于如何通过窗口去读都有一套自己的做法,不过从host角度来看,假如你的bar 1在host上映射的是0xd0000000,而在芯片测的映射是0x10000000,那么你从host读写0xd0001000就是读写芯片侧的0x10001000,更详细的信息你还要去读pcie的协议和相关的芯片手册。
Wenxy1 2016-08-16
  • 打赏
  • 举报
回复
引用 楼主 china_ce 的回复:
本人刚刚入行,目前在用pcie外接ath9k的无线网卡,我在ath9k驱动中找相关寄存器的时候找不到哇,偏移地址好像都不对,我之前一直认为外接芯片寄存器空间有多大,cpu就会分配多大的寻址空间给它,原来不对哇,这是个什么样的机制哇?求指教,我怎么样才能找到相应的寄存器哇?
在kernel src中找个pcie wifi NIC 驱动看看。
猪头三小队长 2016-08-16
  • 打赏
  • 举报
回复
这个就不懂了。。。,也许他们的pll就是隐蔽的或者锁死的。
我不要可乐 2016-08-15
  • 打赏
  • 举报
回复
您好,上面说的pcie控制器中的寄存器(也就是那些决定映射的起始地址的那些寄存器)都没有在pcie设备中吧?因为起始地址是映射的,所以对pcie设备中寄存器的操作我们是不是只要知道pcie设备芯片手册中偏移地址就够了?(可是在ath9k中有一些像与PLL相关的寄存器地址在芯片手册中找不到哇,,,而且芯片手册中貌似也没有PLL Control相关寄存器,,我用的是ar9582)
猪头三小队长 2016-08-13
  • 打赏
  • 举报
回复 1
这你要看相应芯片的pcie控制器如何设置。一般情况下会有一个fixed bar作为一些重要寄存器访问的窗口,然后会有几个浮动的bar作为访问内存时使用,这个fixed bar的起始地址映射到芯片内部寄存器空间的哪个位置,要看芯片设计者根据实际情况来决定。

1,319

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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