阅读:3032回复:17
1394网络中的节点ID是否可以固定?
1394中的节点ID都是自己识别的,用来适应热插拔,但是我如果不拔插的话想固定节点的ID号,应该怎么做?
|
|
沙发#
发布于:2003-02-27 20:56
什么ID?
是说的节点地址吗? :) |
|
|
板凳#
发布于:2003-03-01 13:58
我的意思是这样的:
由于1394网络中的节点的NodeID是经常变化的,比如说网络中加入或删除了一个节点,本来这个节点的NodeID是FFC0,现在可能变成FFC1了。 但是在应用中,需要在确定节点之间传输数据。比如A和B之间,但是A和B的NodeID有可能变化,这给怎么办呢? 据我所知,读出ConfigRom中的GUID即可,但是有的芯片实现的1394可以没有ConfigureROM,那又该怎么办呢? 请各位大哥提个思路或者方法! |
|
地板#
发布于:2003-03-01 21:21
这个意思呀
这个nodeid是总线配置时产生的 根结点的id好像不会变吧 总线重标识以后 你读一下根结点的拓扑图怎么样 |
|
|
地下室#
发布于:2003-03-03 09:31
我觉得根节点的ID也是会变的。比如说,原来的根节点被删除了,自然要有一个原来不是根节点的节点出来作为新的根节点,这样节点ID能不变吗?
|
|
5楼#
发布于:2003-03-03 17:55
跟节点的id也会变的
谁当根结点和拓扑有关系 当然也可以指定一个根结点 |
|
6楼#
发布于:2003-03-04 09:43
由谁做根节点是可变的,但根节点的的物理标识总是最大的号,这样你就可以找到根节点,读出拓扑图。
|
|
7楼#
发布于:2003-03-06 09:05
是可以找到根节点,也可以读出来拓扑图,但是怎么就能知道NodeID与具体节点的对应关系呢?
等于没说。 |
|
8楼#
发布于:2003-03-07 15:40
我觉得应该固定不了
但是可以根据节点地址找到该设备 |
|
9楼#
发布于:2003-03-11 09:23
那请问你在读configrom时,用的是什么命令呀
|
|
10楼#
发布于:2003-03-11 09:24
那请问evergreen在读configrom时,用的是什么命令呀
|
|
11楼#
发布于:2003-03-15 09:15
1394各节点知道物理标识后,就可以建立节点之间的通信联系,至于物理标识N对应的是什么设备,1394不知道也不需要知道,因为使用1394网络的人知道。
这和互联网有点类似,网络地址就相当于1394的物理标识,TCP/IP通过网络地址建立计算机之间的通信联系,TCP/IP不知道也不需要知道202.108.37.42对应的是什么网站。因为上网的人知道。(什么?你不知道?晕!那还不上去看看...........原来就是新浪网啊,呵呵。) |
|
12楼#
发布于:2003-03-18 09:58
sunshine说得好,但是就是网络,即使是TCP/IP,即使有IP地址,也是有一套机制,把IP地址转化成网卡的物理地址!上网的人可以不知道IP地址具体是什么网站,但是驱动程序知道!否则,谁给你找到具体的服务器?IP地址是可以变化的呀!
sunshine你知道这些吗? 做1394的底层驱动,能不知道这些吗? |
|
13楼#
发布于:2003-03-18 19:16
节点ID是什么时候确定的? 按照你们的意思,应该是卡一插上去之后就定了? |
|
14楼#
发布于:2003-03-18 19:33
你不是通过网络拓扑找到了物理标识了吗?你应该换个角度来看,对1394来说,是先有物理标识的。物理标识和设备之间的对应是由人来决定的,具有总线管理功能的1394设备,可以显示链在1394上的各设备的物理标识(实际使用的是通过查ROM配置来显示各设备的名字)。假设是0-N吧,如果其中有一个优盘,使用设备的人访问一下,就知道5号对应的就是。
你看一下网上邻居就知道,显示的每一台计算机名其实是以太网的网址,只是换了一个名字。明白了吗? 顺便说一句,IP地址也有动态分配的,比如拨号上网,网站的地址固定,只是为了方便而已。 |
|
15楼#
发布于:2003-03-20 19:07
驱动程序知道的也只是网络地址,发送IP包。并不知道是什么网站。
|
|
16楼#
发布于:2003-04-30 22:00
是否可以将网站和1394网络中的一个设备作这么一个类比:
网站 1394设备 ----------------- IP地址(可变的) 1394网络上的ID(可变的) 域名(固定的) 设备自己的描述串(固定的) 剩下的问题就是如何获得域名/描述串。 IP网络通过域名解析的机制获得,1394网络上实在不行就遍历整个 拓扑树吧,逐个节点查询,反正最多也就64个节点。 ^_^ 我还没开始看1394标准呢,以上只是我的猜想。 |
|
17楼#
发布于:2003-05-04 19:08
要固定ID,没有这个可能,因为ID是动态分配的,其实你的思路不对,正确的做法是在数据发送前完成一次MakeRoot的过程:
//-------------------------------------------------------------------------- // Routine Name: void MakeRoot() // // Description: // Set the current host controller as the root node // // Input: // None // // Output: // None // // Return: // None // //-------------------------------------------------------------------------- // Revision History: // 01/07/02 Created, Weifeng. Ge //-------------------------------------------------------------------------- void P1394::MakeRoot(){ PhyTParameter->PhyPacketType=Phy_configPacket; PhyTParameter->gap_cnt=0x3F; PhyTParameter->T=0; PhyTParameter->R=1; LLC_REG->LLCNodeID.Quad.ulQuadlet=MEM_READ_DWORD(OHCI_SEG,OHCI_OFF+OHCI_NodeID_Reg); PhyTParameter->root_ID=LLC_REG->LLCNodeID.Reg.NodeNumber; ATPhysicalQuadlet(PhyTParameter); } 然后在进行数据传送,而且发送方ID为本地节点ID即可。 |
|