在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1254|回复: 6

[求助] 寄存器模型的树形结构

[复制链接]
发表于 2023-4-4 10:17:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

第五步则是将子reg_blockdefault_map以子map的形式加入父reg_blockdefault_map中。这是可以理解的,因为一般在子reg_block中定义寄存器时,给定的都是寄存器的偏移地址,其实际物理地址还要再加上一个基地址。寄存器前门访问的读写操作最终都要通过default_map来完成。很显然,子reg_blockdefault_map并不知道寄存器的基地址,它只知道寄存器的偏移地址,只有将其加入父reg_blockdefault_map,并在加入的同时告知子map的偏移地址,这样父reg_blockdefault_map就可以完成前门访问操作了。
1:意思是指父map的基地址覆盖了子map的基地址吗
 楼主| 发表于 2023-4-4 10:20:15 | 显示全部楼层
QQ截图2.png QQ截图1.png
 楼主| 发表于 2023-4-4 10:24:29 | 显示全部楼层
这里我理解为子类block为单独个体,自身必须指定一个map。当被例化在父类block中时,链接子类map到父类的map,覆盖此时的子类基地址。
发表于 2023-4-17 17:46:06 | 显示全部楼层


你这里写的不对,add_submap的第二个参数是指定该子寄存器模型的基地址,如果你两个submap都指定为同一个基地址那么他们里面各自相同的偏移地址访问就对应同一个系统地址了,正确的使用是讲子block复用到一个更高的block上时需要将子block的map作为submap add到父block里同时指定自block的基地址,并且各个子block的地址空间是不能有重叠的,这一点子IP验证复用到子系统验证时做继承会用到,系统级分配地址空间的时候会考虑到基地址以及对应的寄存器空间不能有交叠,例如附件这个例子

微信图片_20230417174536.png
发表于 2023-4-17 17:48:16 | 显示全部楼层
除非你两个寄存器模型对应的是同一块地址空间,那你当然是可以用同一个基地址了
 楼主| 发表于 2023-4-18 09:40:10 | 显示全部楼层
谢谢回答,产生疑问:
1.所以说子block.reg的地址 = 父map地址+子map地址 + 子block中的偏移地址吗?
2.如附件,在最终的reg地址上,值是一样,但后者是更像是集合体,单纯只是把一片存储空间分成高中低的层次结构。而前者更像每个子block自成个体,封装性更好,独立的存储空间,对于父block来讲,就像嵌入其中,占据一定的空间。所以基本更符合真实的使用情况。如果是当做简单的使用练习,这2个效果是一样的。
截图.png
 楼主| 发表于 2023-4-18 11:29:23 | 显示全部楼层


meistin 发表于 2023-4-17 17:46
你这里写的不对,add_submap的第二个参数是指定该子寄存器模型的基地址,如果你两个submap都指定为同一个 ...


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

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-23 17:22 , Processed in 0.019175 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表