博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux用户空间寄存器,除了写一个驱动,还有什么办法在linux用户空间访问寄存器?...
阅读量:5106 次
发布时间:2019-06-13

本文共 2015 字,大约阅读时间需要 6 分钟。

1.那么这个硬件地址是否有所限制?是任意物理地址都可以映射么?

2.错误信息如下:

DBE exception at 0x4009ac

ccfg:ef0766e0e1, toea:ff1fe000

Cpu 0

$ 0   : 00000000 10040400 2aac4000 00000000

$ 4   : 00400c64 0000000e 0000000e 00400c60

$ 8   : 00000000 803a1d60 00000002 72646461

$12   : 7fcd7340 ffffffff 00000000 00000115

$16   : 00400a80 7fcd7ad4 004009e0 00000001

$20   : 00400850 10013a08 ffffffff 00000000

$24   : 00000003 2ab7f600

$28   : 10008030 7fcd7a40 7fcd7a40 00400988

Hi    : 00000000

Lo    : 00000000

epc   : 004009ac 0x4009ac

Not tainted

ra    : 00400988 0x400988

Status: 00040413    USER EXL IE

Cause : 1000001c

PrId  : 00002d40 (R49XX)

Modules linked in:

Process a.out (pid: 121, threadinfo=83a3c000, task=839ec8b8, tls=00000000)

Stack : 10008030 2aac4000 00000003 00000000 00000003 ff1fe000 10008030 00000000

00000000 7fcd7ad4 10008030 00000000 2ab18b50 7fcd7ad4 2ab0ad40 2aab84d0

00000000 00000000 2acd8a90 00000000 2ab0ad40 00400650 10013a08 10021c28

10021de8 2acd8a90 004006ac 10013a08 ffffffff 2ab0ad40 2aaa8bec 2aaa8b60

00400a80 2aab8600 7fcd7ab0 00000000 00000001 7fcd7edd 00000000 7fcd7ee5

...

Call Trace:

Code: 00000000  24840c64  8c460000 <8c470004> 8f998044  00000000  0320f809  00000000  8fdc0018

Kernel panic - not syncing: BusError!

c4000

3.这是一个64位的mips,内存空间范围是64G。所有硬件寄存器都在0xF_FF1F_0000

然后cpu把这个地址又映射到0xFF1F_0000以便32位访问。

我在bootloader中读0xff1fe008这个地址是正确的值。

TX4939 internal registers are to be accessed through 64 K bytes address space that is based on physical address

0xF_FF1F_0000 or pointed address by RAMP register. Figure 6-7 shows how to generate internal register address.

Physical address 1 and physical address 2 shown Figure 6-7 access the same register.

In TX49/H4 Core, the physical address from 0xF_FF00_0000 to 0xF_FF3F_FFFF are uncached mapped to the virtual

address from 0xFF00_0000 to 0xFF3F_FFFF (32 bit mode) /from 0xFFFF_FFFF_FF00_0000 to

0xFFFF_FFFF_FF3F_FFFF (64 bit mode).

【 在 xukey (xukey) 的大作中提到: 】

: 1. 用户进程通过mmap把硬件地址映射到虚拟地址空间访问寄存器 , 是可以的 .

: 2. 你的程序会出现 kernel panic?!

: 3. 我认为 mmap()那段写的应该没错 , 可能是地址访问部分的问题 . CPU是什么架构? 为什么要用 64bit的指针 ?

转载地址:http://yeudv.baihongyu.com/

你可能感兴趣的文章
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
java 类型转型
查看>>
基于C#编程语言的Mysql常用操作
查看>>
【转】Java反射 之 反射基础
查看>>
mysql数据库备份和还原的常用命令
查看>>
s3c2440实验---定时器
查看>>
HBase配置性能调优(转)
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
python中的字符编码
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
为什么int型最大的数是2147483647
查看>>
数据库连接的三层架构
查看>>