TI论坛
直播中

常静娜

7年用户 162经验值
私信 关注
[问答]

hyperlink地址映射方式不对

希望曾经调试过hyperlink并且理解映射原理的帮我解答一下。
我将历程中的配置改为了
hyperLink_cfg.address_map.tx_addr_mask = TX_ADDR_MASK_0x0FFFFFFF;     //掩码
hyperLink_cfg.address_map.tx_priv_id_ovl = TX_PRIVID_OVL_ADDR_31_28;    //发送高四位为特权ID

hyperLink_cfg.address_map.rx_priv_id_sel = RX_PRIVID_SEL_ADDR_31_28;    //接收端接收到数据后高四位为特权ID
hyperLink_cfg.address_map.rx_seg_sel = RX_SEG_SEL_ADDR_31_28;
即用发送的高四位装载privid的值并且用privid的值来选择映射的段。根据6678data manual得知接收端收到的privid的值和发送端核号的值是一样的。
所以如果我理解的没有错误那么core0映射segment0,core1映射segment1。等等。
但是在测试过程中我发现映射的方式是不对的,core0的映射地址是segment0,2,4,6    core1映射的地址是segment1,3,5,7
我不知道我对于privid的理解是否正确,希望能得到解答!
下图是关于privid的解释。

回帖(3)

周仁革

2018-12-28 11:28:52
yuxiang,你好
根据你的配置,core0修改到只映射segment0,core1对应segment1。但是每个core的Tx都还是256MB的访问空间。
请问一下,Rx侧segment0-7的起始地址和长度你有没有做了相应的修改?
还有你是如何确定core0访问了segment0,2,4,6?
举报

常静娜

2018-12-28 11:37:20
引用: jr3367 发表于 2018-12-28 14:05
yuxiang,你好
根据你的配置,core0修改到只映射segment0,core1对应segment1。但是每个core的Tx都还是256MB的访问空间。
请问一下,Rx侧segment0-7的起始地址和长度你有没有做了相应的修改?

多谢您的回答,我的问题已经解决了。我当时对ddr段的配置太大了,超过了评估板的ddr地址了,但是虚拟地址显示出来数据所以我以为错了。
真的非常感谢!
举报

常静娜

2018-12-28 11:54:29
引用: jr3367 发表于 2018-12-28 14:05
yuxiang,你好
根据你的配置,core0修改到只映射segment0,core1对应segment1。但是每个core的Tx都还是256MB的访问空间。
请问一下,Rx侧segment0-7的起始地址和长度你有没有做了相应的修改?

您好,我现在在调试中断的时候出现了一些问题,在看了文档和在网上查阅了资料也没有解决,希望您能帮忙解答。
1.我在调试中断的时候基本上还是基于例程的HYPERLINK中断,采用LOOPBACK模式的时候可以进入中断,但是在两个评估板上进行测试的时候发现进不了中断服务函数,不明白是什么情况(在两个评估板上都是在核0运行程序,DSP0产生中断包发送到远端DSP1,dsp1接收中断包,将vector存入中断挂起寄存器,再由中断挂起寄存器映射到相应的中断事件)
2.在历程中的初始化里有这样两行代码
/*map Hyperlink error/status interrupt to interrupt vector 0*/
hyperLink_cfg.interrupt_cfg.sts_int_enable = 1; 
hyperLink_cfg.interrupt_cfg.sts_int_vec= 0; 
文档中对于这两个配置的意义是这样写的

我不知道这两句代码的意义是什么,我认为这两句的意义可能是将挂起的中断清零,但是如果我没有理解错误的话,为什么不直接向挂起寄存器写0,而要间接地清零呢?
3.在接收到中断包后如果int2cfg是1则中断包映射到中断挂起寄存器,如果int2cfg是0则映射到芯片级中断,但是在看了代码后即使int2cfg=1映射到中断挂其寄存器,在中断挂起寄存器产生hyperlink_int_0事件后,还是先将这个事件映射到了CIC0控制器,那不就相当于两种方向都映射到了芯片级中断么?我可能对这边理解的有些问题希望能得到您的解答。
谢谢~
举报

更多回帖

发帖
×
20
完善资料,
赚取积分