[X]关闭

学习第二个课在线逻辑分析程序

文档创建者:warlord
浏览次数:4958
最后更新:2019-09-11
悬赏1积分未解决
#define MATH_REG0 0
#define MATH_REG1 8
#define MATH_REG2 0
在SDK程序,为什么这三个寄存器的值设置为这样,不明白;为什么不能设置为其他值;我自己把REG1的值修改为8,运行程序,运算的结果不是0x42+0x12的值了,而是0x42,问题就是这个寄存器的值不对造成的

发表评论已发布 3

uisrc

发表于 2019-9-11 17:36:44 | 显示全部楼层

这是个悬赏问答,虽然我已经很富有了,我有8000多积分的,但是你这一分,在本网站也很少有人来领的,那我就不客气了,        Xil_Out32(MATH_IP_BASE+MATH_REG0,0X42);
        Xil_Out32(MATH_IP_BASE+MATH_REG1,0X12);
        val = Xil_In32(MATH_IP_BASE+MATH_REG2);


你看这个函数,比如,MATH_IP_BASE+MATH_REG0 IP的及地址+寄存器的偏移,算出寄存器在内存地址空间的地址位置,所以你地址改错了,不能访问正确的寄存器,自然就不对了。
越努力越幸运!加油!
回复

使用道具 举报

warlord

发表于 2019-9-11 18:03:23 | 显示全部楼层

msxbo 发表于 2019-9-11 17:36
这是个悬赏问答,虽然我已经很富有了,我有8000多积分的,但是你这一分,在本网站也很少有人来领的,那我就 ...

这个偏移地址是如何算出来的,我就是不明白为什么不能设置为别的数据
回复

使用道具 举报

uisrc

发表于 2019-9-11 21:03:27 | 显示全部楼层

所有的AXI总线IP都是挂到总线上的,软件会自动分配一个地址给IP,如果有些不能自动分配的需要手动去分配,分配的地址就是基地址,那么IP内部有寄存器,为了保持和总线的一致性,寄存器的IP是分配的基地址+寄存器自己的偏移地址,基地址会变,但是偏移地址是固定的,比如控制寄存器便宜是0,状态寄存器偏移是4,如果你随便写地址去访问,比如你访问偏移地址8的位置,肯定错了,因为偏移地址8的地方什么都没有。另外为什么偏移地址是4的整数倍,这是因为对于32bit ARM 地址指针每移动一次32bit 就是4BYTES的意思了
越努力越幸运!加油!
回复

使用道具 举报

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

本版积分规则