请教
项目应用中在尝试navigator开发,应用方式为在队列中传递host packet descriptor。有几个疑问:
1、文档中给出了descriptor定义的格式,包括7个word之类的东西,但我们发现实际上descriptor定义成任何格式都可以,是否文档中所给的只是个范例,实际上队列传输的地址可以指向任何变量?
2、传输descriptor时向REG_D写入descriptor size有没有必要?我想既然队列只不过是在传输地址,那为什么它需要知道descriptor的大小呢?
King Wang1:
1. 芯片硬件会根据descriptor的预定义的格式来解析,因此你必须按照这个格式定义,否则会出现未知的错误。
2. 如同问题1,descriptor不仅仅是传输了地址,硬件在接到这个地址之后要对地址里面的内容做解析。
YUCHAO WANG:
回复 King Wang1:
您好:
1、 我在keystone中找到了相关的代码,涉及赋值的如下:
hostDescriptor->packet_length= uiByteCount; hostDescriptor->buffer_len= uiByteCount;
hostDescriptor->src_tag_lo= uiFlowID;
正常传递一个hostDescriptor这样就够了是吧?
2、还有向reg_D中写的fetch size,keystone中设定是32 字节,但实际上descriptor的大小远远超过这个值。这个fetch size到底指的是谁的大小呢?