8632|4

71

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

菜鸟问题:如何将头文件中定义的寄存器结构体与联合体与实际的物理寄存器联系起来? [复制链接]

最近刚开始学DSP,目前学的是TMS320F2812,,现在有个疑惑,就是我在头文件中定义了寄存器相对应的struct与union后,程序如何得知这些struct与union到底与哪个实际的物理寄存器联系起来呢?也就是说,如何知道struct、union与物理寄存器的映射关系?

最新回复

我也一直猜测是通过名称匹配来将h文件中定义的寄存器与实际物理单元联系在一起,只是一直仅是猜测。 刚看了版主的回答,为了验证,我将DMA的寄存器DmaRegs全部改成了DmaReg(少了一个s),如果依据版主的回答,理论上来以DmaReg命名的所有寄存器都不会再联系到物理单元DMA,程序中DMA模块将不会工作,结果发现CCS项目中DMA仍然能运行,结果与寄存器没变动之前一致  详情 回复 发表于 2016-7-9 13:39
点赞 关注
 

回复
举报

2498

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 ghoulich 的帖子

你看看实际的硬件使用的寄存器里面的机构提和共用体是如何定义的就知道了使用的是什么硬件资源啦!
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 

回复

71

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 沙发 gaoxiao 的帖子

版主,您的QQ是多少啊,我想直接问您,在版上问一来一去效率比较低呢。。。
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

4
 

回复 板凳 ghoulich 的帖子

// TCR: Control register bit definitions:

struct  TCR_BITS {          // bits  description

   Uint16    rsvd1:4;       // 3:0   reserved

   Uint16    TSS:1;         // 4     Timer Start/Stop

   Uint16    TRB:1;         // 5     Timer reload

   Uint16    rsvd2:4;       // 9:6   reserved

   Uint16    SOFT:1;        // 10    Emulation modes

   Uint16    FREE:1;        // 11

   Uint16    rsvd3:2;       // 12:13 reserved

   Uint16    TIE:1;         // 14    Output enable

   Uint16    TIF:1;         // 15    Interrupt flag

};



union TCR_REG {

   Uint16           all;

   struct TCR_BITS  bit;

};

用这个为例说吧,这个16位的TCR_REG寄存器,当使用每一位的时候是struct TCR_BITS  bit;,每一位都用特殊的含义,具体什么意思struct  TCR_BITS这个结构体说的很清楚的,,启动信号,标志什么的。当作为一个16位数的时候就是一个普通的16位的地址空间,存放数据就行了,也就是 Uint16           all;  变量all的值。应为dsp芯片的CPU本数可以直接范围这些寄存器,通过名称就可以访问,只有为什么可以访问,那就是出场之前,厂家就已经固化好了的,就想电脑的bios一样。希望我的回复对你有所帮助!
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 
 

回复

1

帖子

2

TA的资源

一粒金砂(初级)

5
 
gaoxiao 发表于 2010-11-10 21:38
// TCR: Control register bit definitions:

struct  TCR_BITS {          // bits  description

    ...

我也一直猜测是通过名称匹配来将h文件中定义的寄存器与实际物理单元联系在一起,只是一直仅是猜测。
刚看了版主的回答,为了验证,我将DMA的寄存器DmaRegs全部改成了DmaReg(少了一个s),如果依据版主的回答,理论上来以DmaReg命名的所有寄存器都不会再联系到物理单元DMA,程序中DMA模块将不会工作,结果发现CCS项目中DMA仍然能运行,结果与寄存器没变动之前一致
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表