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

baiminsheng 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)来读取,但是我没有成功,请高人指点我应该如何去做,是不是我的这几句汇编不对啊。非常着急,我在线等,不胜感激。
...全文
387 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

19,523

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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