TI中文支持网
TI专业的中文技术问题搜集分享网站

c66 hyperlink

TI 的专家好,

想咨询一下,hyperlink的地址映射可以分多个段吗,看STK 例程上分了16段:

for(iSeg= 0; iSeg<8; iSeg++)

for(iPrvId=0; iPrvId<4; iPrvId++)

{

hyperLink_cfg.address_map.rx_addr_segs[(iPrvId<<4)|iSeg].Seg_Base_Addr

= 0x10000000+iSeg*0x01000000;

hyperLink_cfg.address_map.rx_addr_segs[(iPrvId<<4)|iSeg].Seg_Length

= RX_SEG_LEN_0x0_0100_0000;

}

如上映射到多个地址段,

for(i= 0; i< 64; i++)

{

hyperLinkRegs->RX_SEG_IDX= i;

hyperLinkRegs->RX_SEG_VAL=  addr_map->rx_addr_segs[i].Seg_Base_Addr  |  addr_map->rx_addr_segs[i].Seg_Length;

}

赋值时RX_SEG_IDX,RX_SEG_VAL 寄存器只有一个,配置的信息是保存到哪里的

Nancy Wang:

请问具体是什么配置的信息?是指Hyperlink_Test.c->Hyperlink_config的配置吗?

,

user3912087:

我的意思是前面的代码是有多个内存段的地址映射,到时后面的赋值都是赋值到同一个寄存器,这样会生成多个段的地址映射吗

,

Zahir Wang:

HyperLink_Rx_Address_Segment rx_addr_segs[64];//程序中这里定义了大小为64的数组

for(iSeg= 0; iSeg<8; iSeg++) for(iPrvId=0; iPrvId<4; iPrvId++)       //iSeg值为0x0F,iPrvid值为4 正好就是64 { hyperLink_cfg.address_map.rx_addr_segs[(iPrvId<<4)|iSeg].Seg_Base_Addr= 0x10000000+iSeg*0x01000000; hyperLink_cfg.address_map.rx_addr_segs[(iPrvId<<4)|iSeg].Seg_Length= RX_SEG_LEN_0x0_0100_0000; }

for(i= 0; i< 64; i++)     //然后前面配置的时候也是分别对这64个值分别配置,应该是不会重叠的吧。 { gpHyperLinkRegs->RX_SEG_IDX= i; gpHyperLinkRegs->RX_SEG_VAL= addr_map->rx_addr_segs[i].Seg_Base_Addr |addr_map->rx_addr_segs[i].Seg_Length; }

可以参考 https://www.ti.com.cn/cn/lit/an/zhca565/zhca565.pdf这个手册

赞(0)
未经允许不得转载:TI中文支持网 » c66 hyperlink
分享到: 更多 (0)