打印
[嵌入式linux]

linux下应用程序如何访问物理地址呢?谢谢!

[复制链接]
3884|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sungirlcy|  楼主 | 2007-9-10 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在linux下用C编程,编译后准备移植到2410的板子上.

我在程序里#include <s3c2410.h>头文件,

在头文件里定义了

#define GPFCON    (*(volatile unsigned *)0x56000050) //Port F control

然后在程序里给 GPFCON 寄存器赋值

GPFCON  ¦= EINT1  ¦ EINT2  ¦ EINT3  ¦ EINT7; //K1-K4对应

EINT1, EINT2 ,EINT3, EINT7,定义过的

结果运行时在这里提示我段错误,网友说这样定义的变量不能直接赋值,

我该怎样定义呢?难道还要写驱动程序吗?

我的程序是使用外部中断,接收到按键中断后,有数据输出,程序是开发班自带的测试程序改的.

请高手帮忙指点,谢谢了!

相关帖子

沙发
sungirlcy|  楼主 | 2007-9-11 07:54 | 只看该作者

难道大家都不知道吗?

难道大家都不知道吗?还请好心人帮忙,谢谢了!

使用特权

评论回复
板凳
rockos| | 2007-9-11 12:26 | 只看该作者

re

如果你确信自己的代码对内核无害的话, 可以使用/dev/mem设备, 然后mmap物理地址就可以得到虚拟地址, 然后对它进行操作.

在应用程序中操作寄存器一般来讲是比较危险的事情.

使用特权

评论回复
地板
sungirlcy|  楼主 | 2007-9-11 13:29 | 只看该作者

虚拟地址?

谢谢,请问虚拟地址怎么回事?我的程序就是在外部按键中断到来时,打印出来是哪个外部中断按键,直接访问物理地址不可以,使用虚拟地址可以在按件按下时进入中断程序吗?

使用特权

评论回复
5
rockos| | 2007-9-12 17:26 | 只看该作者

re

处理中断的唯一方法是实现驱动程序.

使用特权

评论回复
6
sungirlcy|  楼主 | 2007-9-13 08:39 | 只看该作者

头疼死了

看来我只能写驱动程序了,唉!时间紧迫,快愁死了.

使用特权

评论回复
7
mcujackie| | 2007-9-13 09:08 | 只看该作者

请求!如何把User Mode和kernel mode地址转换到物理地址

如何把User Mode和kernel mode地址转换到物理地址

我使用arm 跑linux,但外接的一个硬件芯片要求输入一个物理地址让它做一些操作
在没有linux 及mmu 下,这个是可以的!
在linux kernel 下,我开始晕了!是不是用_virt_to_phys()就可以呢!
但是,如果应用程式经常要从User mode跳进Kernel Mode,要浪费很多资源跟时间 (1秒要做1000多次..)

因此我想使用mmap 在user mode 映射芯片的暂存器,然後把malloc()分配出来的 User Mode地址转换为Kernel Mode的地址,然後再把kernel mode的地址变为物理地址,那我就可以把物理地址写进出暂存器了。

有高手可以帮忙吗?

使用特权

评论回复
8
辰冈笑| | 2007-9-14 09:24 | 只看该作者

直接调用中断

不给寄存器赋值
直接调用中断程序可以吗?

使用特权

评论回复
9
sungirlcy|  楼主 | 2007-9-14 10:57 | 只看该作者

不设置寄存器.能进入中断吗?

不设置寄存器,能进入中断吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝