• 全部
  • 问答

求助 关于MRC p15,0,R0,c0,c0,0的问题

baiminsheng 航天二院706所 项目经理  2009-03-27 12:00:09
MRC p15,0,R1,c0,c0,0这个指令是来读取ARM CPU的ID号到ARM寄存器R1里面的吗?如果是的话,我现在在EVC环境下嵌入了有下面汇编内容的.s文件:
AREA |.text|, CODE

EXPORT ARMCPUID
ARMCPUID PROC
MRC p15, 0, R1, c0, c0 ,0
STR R1,[R0],#0
MOV pc,lr
END
我想调用ARMCPUID这个函数来读取R0中存储的ID号,我怎么在EVC的环境下读取呢?
下面我简单说一下我的过程:我建立了一个button和一个edit,想通过点击这个button 在edit中显示出这个ID来,我在edit中关联了一个CString型的变量m_ID,然后在调用了ARMCPUID(&m_ID)来读取,但是我没有成功,请高人指点我应该如何去做,是不是我的这几句汇编不对啊。非常着急,我在线等,不胜感激。
...全文
251 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
baiminsheng 2009-03-27
哦 不好意思,我最开始写错了,是想读R1中内容,其实写哪个寄存器都行,呵呵
回复
baiminsheng 2009-03-27
恩对是读c0到R0,我看datasheet上说的c0存储的就是ID,其实嵌入x86CPU的汇编只用_asm{}就能实现,但是现在嵌入的是ARM的汇编就不能那么做了,现在比较困惑,ADS我没有用过。
回复
gooogleman 2009-03-27


上面的协处理器指令是读C0 送到R1

EVC嵌入汇编没有做过。

你参照一下ADS的样子试试。
回复
baiminsheng 2009-03-27
谢谢您的提醒,我知道哪里出问题了,我定义的变量的类型不对,应该是unsigned int类型的,真是一着不慎满盘皆输啊呵呵,现在读出结果来了,显示的结果是1761946886.不知道对不对,我再检查一下,谢谢您了。我会把分数给您。我看看分数怎么给啊。我的msn是minshengbai@live.cn.如果您有兴趣,可以加我。再次感谢。
回复
paul_chao 2009-03-27
有說明圖, 但沒法附上 (Please refer Intel XScale® Core Developer’s Manual, Page 81, Register 0: ID & Cache Type Registers)

31:24 Read / Write Ignored Implementation trademark (0x69 = ‘i’= Intel Corporation)
23:16 Read / Write Ignored Architecture version = ARM* Version 5TE

這東西會回傳一個 32-bits 值給你, 該值應為 0x6905xxxx, 所以你檢查 m_ID 的值, 該變數應為 unsigned int 的型態.

所以該函數 ARMCPUID 應該是正常工作, 是你期待錯了.

Paul, Chao @ Techware
回复
baiminsheng 2009-03-27
不好意思,我的cpu是ARM PXA255的
回复
baiminsheng 2009-03-27
那个.s文件里面定义了ARMCPUID这样的一个函数,我在button的程序代码中直接可以调用这个函数来进行读取,我在button的代码中是这样写的:
void CARMCPUDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData();
ARMCPUID(&m_ID);//这个ARMCPUID函数就是在.s文件中Export的那个函数
UpdateData(false);
}
没有成功指的是:没有传回给我任何信息,我感觉ARM CPU的ID应该是一个字符串形式数据
我的arm型号是PXA270。
整个在我主机上的EVC程序是没有问题的,而在那个arm的设备上 我点击了那个button按钮以后 就没有读出数据。
回复
baiminsheng 2009-03-27
那个.s文件里面定义了ARMCPUID这样的一个函数,我在button的程序代码中直接可以调用这个函数来进行读取,我在button的代码中是这样写的:
void CARMCPUDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData();
ARMCPUID(&m_ID);//这个ARMCPUID函数就是在.s文件中Export的那个函数
UpdateData(false);
}
没有成功指的是:没有传回给我任何信息,我感觉ARM CPU的ID应该是一个字符串形式数据
我的arm型号是PXA270。
整个在我主机上的EVC程序是没有问题的,而在那个arm的设备上 我点击了那个button按钮以后 就没有读出数据。
回复
paul_chao 2009-03-27
請教何謂 "然后在调用了ARMCPUID(&m_ID)来读取,但是我没有成功", 請問這個沒有成功, 指的是傳回值不對, 還是有錯誤發生呢?? 若是傳回值不對, 那該傳回值為何, 您預期的值又為何??

順便可否把您測試的機器上的 CPU 型號一併告知.

Paul, Chao @ Techware
回复
相关推荐
发帖
嵌入开发(WinCE)
创建于2007-09-28

1.9w+

社区成员

硬件/嵌入开发 嵌入开发(WinCE)
申请成为版主
帖子事件
创建了帖子
2009-03-27 12:00
社区公告
暂无公告