QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1811|回复: 4

如何读写ARMlinux的硬件地址端口呢?

[复制链接]
发表于 2005-8-27 14:36:11 | 显示全部楼层 |阅读模式
在一个Xscale架构的开发板上测试程序,想利用asm/io.h里面声明的宏inw和outw对开发板的硬件端口地址进行读写测试,可是编译后运行却出现错误,我是在root下运行程序的,请问哪位大虾是否在linux对硬件端口地址进行读写之前要向系统申请读写权限呢?
发表于 2005-8-27 17:22:53 | 显示全部楼层
我这几天在测试uclinux控制外围的dsp,读写硬件端口应该和外围设备原理差不多吧?
我在内核态就可以操作了,不过我是用地址直接操作,
不清楚你的inw,outw操作的方法?你运行时是出现什么错误?
回复

使用道具 举报

 楼主| 发表于 2005-8-28 10:44:12 | 显示全部楼层
我打开asm-arm/io.h看了一下,其实我用的inw和outw就是使用地址指针直接操作扩展的宏,其实是一样的,运行时的错误是:
pc : [<000083d8>]    lr : [<40034e10>]    Not tainted
sp : bffffcac  ip : bffffcc8  fp : bffffcc4
r10: 4013b914  r9 : 000083b4  r8 : 00000001
r7 : 4000ba94  r6 : 0000825c  r5 : bffffcf4  r4 : 4001c164
r3 : 00005555  r2 : e4000000  r1 : bffffcf4  r0 : 00000001
Flags: nZCv  IRQs on  FIQs on  Mode USER_32  Segment user
Control: 397F  Table: A2EB4000  DAC: 00000015
Segmentation fault

大概好象还应该先申请iomap,可是编译器找不到对应的库,不知道__ioremap函数对应的库在哪里?
回复

使用道具 举报

发表于 2005-8-30 14:00:45 | 显示全部楼层
那你直接用指针操作就完了,初始化时把地址给对就行了...
我也不知道__ioremap这个函数,你搜一下啦
回复

使用道具 举报

发表于 2005-8-31 15:33:05 | 显示全部楼层
由于arm的io端口是映射到内存空间的,要先利用ioremap函数得到虚拟地址,再用readb或readl等函数操作,不能用inw等函数!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 04:17 , Processed in 0.076251 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表