CN108009103B - 一种VxWorks系统的PCI设备排序方法 - Google Patents
一种VxWorks系统的PCI设备排序方法 Download PDFInfo
- Publication number
- CN108009103B CN108009103B CN201711214864.3A CN201711214864A CN108009103B CN 108009103 B CN108009103 B CN 108009103B CN 201711214864 A CN201711214864 A CN 201711214864A CN 108009103 B CN108009103 B CN 108009103B
- Authority
- CN
- China
- Prior art keywords
- pci
- equipment
- sequencing
- pci equipment
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0796—Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Transfer Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种VxWorks系统的PCI设备排序方法。该方法步骤如下:在Shell下使用pciDeviceShow接口函数查看系统中PCI设备的信息,确定所有待排序PCI设备的槽位信息;编写XML配置文件,在文件中记录PCI设备排序信息;在PCI设备驱动程序中添加解析函数,解析配置文件中的排序信息;根据排序信息确定每个PCI设备的排序序号,并对PCI设备执行初始化操作,然后使用接口函数iosDrvInstall完成驱动程序的注册;最后根据PCI设备的排序序号查找对应的PCI设备,并使用iosDevAdd接口函数为其创建设备节点。本发明在VxWorks系统中将多个同类型PCI设备的节点名与PCI插槽绑定在一起,并且实现了PCI设备的灵活调度。
Description
技术领域
本发明涉及通信技术领域,特别是一种VxWorks系统的PCI设备排序方法。
技术背景
在嵌入式实时操作系统领域,VxWorks系统性能卓越并占据着重要的地位,在通信、航空、航天等领域应用十分广泛。PCI(Peripheral Component Interconnect)总线从1992年创立规范至今,已经成为计算机的一种标准总线,并得到了非常广泛的应用,几乎所有的主板产品上都带有PCI插槽。
每一种PCI设备都有固定的厂商ID和设备ID,在VxWorks系统中,驱动程序使用接口pciFindDevice根据厂商ID、设备ID查找PCI设备,并确定其总线号、设备号和功能号。当系统中存在多个同一种PCI设备时,VxWorks系统会根据总线号、设备号和功能号为其排序,依次为0、1、2…,驱动程序根据此顺序创建设备节点,应用程序则根据设备节点名操作其对应的PCI设备。在实际使用过程中,当其中的一个PCI设备出现故障或被移除时,VxWorks系统会为此种PCI设备重新排序,原来的0、1、2…n号变为0、1…(n-1)号,进而导致驱动程序创建的设备节点名与实际设备可能出现不一致情况,应用程序无法根据原有的设备节点名操作对应的PCI设备。
目前,当VxWorks系统中存在多个同类型PCI设备时,若某一设备出现故障或被移除,排在该设备前的PCI设备节点名不会变化,而排在该设备之后的PCI设备节点名会出现错位,进而导致应用程序出现不可预料的错误。
发明内容
本发明的目的在于提供一种VxWorks系统的PCI设备排序方法,从而实现某个PCI设备故障或移除时,剩余设备仍可正常工作。
实现本发明目的的技术解决方案为:一种VxWorks系统的PCI设备排序方法,在配置文件中依据该类型PCI设备的总线号、设备号和功能号为该PCI设备排好顺序,PCI设备驱动程序初始化时首先解析配置文件中的排序信息,再执行初始化操作,最后按解析的排序顺序创建设备节点,具体包括以下步骤:
步骤1、在Shell下使用pciDeviceShow接口函数查看系统中PCI设备的信息,从中选择待排序PCI设备,确定所有待排序PCI设备的槽位信息;
步骤2、编写XML配置文件,在文件中记录PCI设备排序信息,每个PCI设备的排序信息占用两个标签,分别标记PCI设备的排序序号和槽位信息,配置文件存储在系统磁盘中;
步骤3、在PCI设备驱动程序中添加解析函数,用于解析配置文件中的排序信息,解析函数的输入参数为配置文件路径,输出参数为排序链表的表头地址指针;
步骤4、初始化PCI设备,根据排序链表确定每个PCI设备的排序序号,之后对PCI设备执行包括资源分配、寄存器配置和中断挂接的初始化操作,最后使用接口函数iosDrvInstall完成驱动程序的注册;
步骤5、创建设备节点,根据PCI设备的排序序号查找对应的PCI设备,并使用iosDevAdd接口函数为所查找到的PCI设备创建设备节点。
进一步地,步骤1中PCI设备的槽位信息包括总线号、设备号和功能号,系统中每个PCI设备具有唯一的槽位信息。
进一步地,步骤2所述在文件中记录PCI设备排序信息,其中排序采用手动排序,每个PCI设备的次序任意指定,但每个设备有唯一的排序序号。
进一步地,步骤3所述在PCI设备驱动程序中添加解析函数,用于解析配置文件中的排序信息,具体为:
(1)打开配置文件,读取其中的PCI设备排序信息;
(2)建立排序链表,链表结点的数据结构包括设备序号、总线号、设备号、功能号和下一结点的地址指针;
(3)将PCI设备的排序信息转存到排序链表中,其中每一个PCI设备分别对应一个链表结点;
(4)返回排序链表的表头地址指针。
进一步地,步骤4所述根据排序链表确定每个PCI设备的排序序号,具体为:
(1)调用解析函数解析配置文件,获得排序链表;
(2)根据厂商ID、设备ID循环扫描该类型PCI设备,直至扫描失败即没有扫描到该类型PCI设备;每次成功扫到PCI设备后均遍历一遍排序链表,从中匹配该PCI设备的总线号、设备号和功能号,进而确定该PCI设备的排序序号。
本发明与现有技术相比,其显著优点为:(1)当系统中存在多个同一种PCI设备时,实现了PCI设备节点名与插槽一一对应,便于管理;(2)某个PCI设备故障或移除时,剩余设备仍可正常工作,提高了系统的健壮性;(3)采用配置文件为PCI设备排序,无需更改软硬件即可灵活调度PCI设备。
附图说明
图1为传统驱动程序为PCI设备生成设备节点示意图。
图2为传统驱动程序为PCI设备生成设备节点示意图。
图3为驱动程序使用本排序方法为PCI设备生成设备节点示意图。
图4为驱动程序使用本排序方法为PCI设备生成设备节点示意图。
图5为本发明VxWorks系统的PCI设备排序方法的流程图。
具体实施方式
VxWorks系统中存在多个同类型PCI设备时,系统会根据总线号、设备号和功能号为其自动排序,如图1、图2所示,驱动程序据此创建设备节点,图1为传统驱动程序为PCI设备生成设备节点示意图,共四个PCI设备。图2为传统驱动程序为PCI设备生成设备节点示意图,与图1相比,第三槽PCI设备被移除,第四槽PCI设备节点名与原第三槽相同。本发明在现有技术的基础上,设计了一种新的PCI设备排序方法,该方法可保证PCI设备节点名与插槽一一对应,避免某个PCI设备出现故障或被移除时新创建的设备节点出现错位。图3为驱动程序使用本排序方法为PCI设备生成设备节点示意图。图4为驱动程序使用本排序方法为PCI设备生成设备节点示意图,与图3相比,第三槽PCI设备被移除,第四槽PCI设备节点名保持不变。
本发明VxWorks系统的PCI设备排序方法,在配置文件中依据该类型PCI设备的总线号、设备号和功能号为该PCI设备排好顺序,PCI设备驱动程序初始化时首先解析配置文件中的排序信息,再执行初始化操作,最后按解析的排序顺序创建设备节点,结合图5,具体包括以下步骤:
1、获取PCI设备槽位信息:在Shell下使用pciDeviceShow接口函数查看系统中PCI设备的信息,从中选择待排序PCI设备,确定所有待排序PCI设备的槽位信息;
将所有待排序PCI设备插入对应的PCI插槽中,启动VxWorks系统,在Shell下使用pciDeviceShow函数查看系统中PCI设备的详细信息,从中选择待排序设备,确定其总线号、设备号和功能号等槽位信息;所述PCI设备的槽位信息包括总线号、设备号和功能号,系统中每个PCI设备具有唯一的槽位信息。
2、编写配置文件:编写XML配置文件,在文件中记录PCI设备排序信息,每个PCI设备的排序信息占用两个标签,分别标记PCI设备的排序序号和槽位信息,配置文件存储在系统磁盘中;
根据获取到的槽位信息编写配置文件,在配置文件中为PCI设备排序,配置文件使用XML格式编写,其中每一项排序占用两个标签,分别标记设备的“序号”和“总线号、设备号、功能号”,其中排序采用手动排序,每个PCI设备的次序任意指定,排序序号不要求连续,但每个设备有唯一的排序序号。
3、解析配置文件,获取排序信息:在PCI设备驱动程序中添加解析函数,用于解析配置文件中的排序信息,解析函数的输入参数为配置文件路径,输出参数为排序链表的表头地址指针,驱动程序在初始化PCI设备之前,需要先通过解析函数获取排序信息,并将其存储到排序链表中,具体为:
(1)打开配置文件,读取其中的PCI设备排序信息;
(2)建立排序链表,链表结点的数据结构包括设备序号、总线号、设备号、功能号和下一结点的地址指针;
(3)将PCI设备的排序信息转存到排序链表中,其中每一个PCI设备分别对应一个链表结点;
(4)返回排序链表的表头地址指针。
4、初始化设备:根据排序链表确定每个PCI设备的排序序号,之后对PCI设备执行包括资源分配、寄存器配置和中断挂接的初始化操作,最后使用接口函数iosDrvInstall完成驱动程序的注册;
所述根据排序链表确定每个PCI设备的排序序号:首先,调用解析函数解析配置文件,获得排序链表;其次,根据厂商ID、设备ID循环扫描该类型PCI设备,直至扫描失败即没有扫描到该类型PCI设备;每次成功扫到PCI设备后均遍历一遍排序链表,从中匹配该PCI设备的总线号、设备号和功能号,进而确定该PCI设备的排序序号。
驱动程序初始化PCI设备,步骤如下:
步骤4.1,使用pciFindDevice函数根据厂商ID、设备ID扫描PCI设备,找到设备后获取其总线号、设备号和功能号等槽位信息;
步骤4.2,遍历排序链表,从中匹配该PCI设备的总线号、设备号和功能号,进而确定该设备的排序序号;
步骤4.3,记录该设备序号到设备驱动的基本数据结构中,并执行具体的初始化操作;
步骤4.4,返回4.1步骤继续搜寻PCI设备直至搜寻结束;
步骤4.5,使用接口函数iosDrvInstall注册该驱动。
5、创建设备节点:根据PCI设备的排序序号查找对应的PCI设备,并使用iosDevAdd接口函数为所查找到的PCI设备创建设备节点;
驱动程序使用设备节点创建函数创建设备节点,该函数包括两个输入参数,分别为设备名称和设备序号,节点创建函数根据设备序号在设备驱动的基本数据结构中查找与之对应的PCI设备,之后再用设备名称为该设备创建设备节点。
下面结合具体实施例对本发明作进一步详细说明。
实施例1
某系统使用4个基于PCI的AD采集板(代号为cp6348,厂商ID为0x0716,设备ID为0x6348)进行数据采集,每块采集板可实现32路AD数据采集,共采集128路数据。4个cp6348设备名依次为/cp6348/0、/cp6348/1、/cp6348/2、/cp6348/3,分别用于采集0-31、32-63、64-95、96-127路数据,驱动程序使用本方法对4个cp6348设备进行排序并创建设备节点名,具体实现方法如下:
1、获取CP6348设备的槽位信息
首先将4个cp6348设备均插入对应PCI插槽中,启动VxWorks系统,在shell下查看cp6348设备的槽位信息,信息如表1所示:
表1VxWorks系统PCI设备信息查看
由此可知4个cp6348设备槽位信息,整理后如表2所示:
表2cp6348设备槽位信息
默认设备序号 | 总线号 | 设备号 | 功能号 |
0 | 7 | 11 | 0 |
1 | 7 | 12 | 0 |
2 | 7 | 13 | 0 |
3 | 7 | 14 | 0 |
2、编写CP6348设备的排序配置文件
为4个cp6348设备排序,顺序与系统默认顺序相反,具体如表3所示:
表3cp6348设备排序信息
设备排序序号 | 总线号 | 设备号 | 功能号 |
0 | 7 | 14 | 0 |
1 | 7 | 13 | 0 |
2 | 7 | 12 | 0 |
3 | 7 | 11 | 0 |
根据cp6348设备排序顺序编写XML配置文件(cp6348info.xml),在XML文件中,每一项排序占用两个标签,分别标记序号和PCI槽位信息,其中<cp6348_0_index>和<cp6348_0_pci>标签表示“总线号为7,设备号为14,功能号为0的设备序号为0”,<cp6348_1_index>和<cp6348_1_pci>标签表示“总线号为7,设备号为13,功能号为0的设备序号为1”,<cp6348_2_index>和<cp6348_2_pci>标签表示“总线号为7,设备号为12,功能号为0的设备序号为2”,<cp6348_3_index>和<cp6348_3_pci>标签表示“总线号为7,设备号为11,功能号为0的设备序号为3”,配置文件具体内容如
表4所示:
表4cp6348设备配置文件信息
3、解析配置文件,获取CP6348设备排序信息
将上一步中编写的配置文件放入磁盘的特定路径(/ata0a/driver/config/)中,编写配置文件解析函数,将解析的排序信息转存到排序链表中,排序链表节点的数据结构如表5所示,解析函数如表6所示。
表5链表结点数据结构示例
表6配置文件解析函数示例
4、初始化设备
初始化cp6348设备,步骤如下:
步骤1,使用pciFindDevice函数扫描cp6348设备,找到设备后获取该cp6348设备的总线号、设备号和功能号;
步骤2,遍历排序链表,从中匹配当前cp6348设备的总线号、设备号和功能号,进而确定该设备的排序序号;
步骤3,在该cp6348设备驱动的基本数据结构中记录设备序号,并进行参数配置、中断挂接等初始化操作;
步骤4,返回4.1步骤继续搜寻cp6348设备直至结束;
步骤5,将cp6348设备驱动程序注册到系统驱动表。
具体代码如表7所示。
表7驱动初始化函数示例
5、创建CP6348设备节点
创建函数有两个输入参数,分别为cp6348设备名称和设备序号,根据设备序号在设备结构体中查找对应的cp6348设备,之后再用设备名称为该cp6348设备创建设备节点。具体实现代码见表8所示。
表8创建设备节点函数示例
综上所述,本发明可以在VxWorks系统中将多个同类型PCI设备的节点名与PCI插槽绑定在一起,避免该类型PCI设备个数发生变化时设备节点名与实际设备不一致情况;此外只需更改配置文件,即可为PCI设备重新排序,实现PCI设备的灵活调度。
Claims (3)
1.一种VxWorks系统的PCI设备排序方法,其特征在于,在配置文件中依据PCI设备的总线号、设备号和功能号为该PCI设备排好顺序,PCI设备驱动程序初始化时首先解析配置文件中的排序信息,再执行初始化操作,最后按解析的排序顺序创建设备节点,具体包括以下步骤:
步骤1、在Shell下使用pciDeviceShow接口函数查看系统中PCI设备的信息,从中选择待排序PCI设备,确定所有待排序PCI设备的槽位信息,PCI设备的槽位信息包括总线号、设备号和功能号,系统中每个PCI设备具有唯一的槽位信息;
步骤2、编写XML配置文件,在文件中记录PCI设备排序信息,每个PCI设备的排序信息占用两个标签,分别标记PCI设备的排序序号和槽位信息,配置文件存储在系统磁盘中;所述在文件中记录PCI设备排序信息,其中排序采用手动排序,每个PCI设备的次序任意指定,但每个设备有唯一的排序序号;
步骤3、在PCI设备驱动程序中添加解析函数,用于解析配置文件中的排序信息,解析函数的输入参数为配置文件路径,输出参数为排序链表的表头地址指针;
步骤4、初始化PCI设备,根据排序链表确定每个PCI设备的排序序号,之后对PCI设备执行包括资源分配、寄存器配置和中断挂接的初始化操作,最后使用接口函数iosDrvInstall完成驱动程序的注册;
步骤5、创建设备节点,根据PCI设备的排序序号查找对应的PCI设备,并使用iosDevAdd接口函数为所查找到的PCI设备创建设备节点。
2.根据权利要求1所述的VxWorks系统的PCI设备排序方法,其特征在于,步骤3所述在PCI设备驱动程序中添加解析函数,用于解析配置文件中的排序信息,具体为:
(1)打开配置文件,读取其中的PCI设备排序信息;
(2)建立排序链表,链表结点的数据结构包括设备序号、总线号、设备号、功能号和下一结点的地址指针;
(3)将PCI设备的排序信息转存到排序链表中,其中每一个PCI设备分别对应一个链表结点;
(4)返回排序链表的表头地址指针。
3.根据权利要求1所述的VxWorks系统的PCI设备排序方法,其特征在于,步骤4所述根据排序链表确定每个PCI设备的排序序号,具体为:
(1)调用解析函数解析配置文件,获得排序链表;
(2)根据厂商ID、设备ID循环扫描PCI设备,直至扫描失败即没有扫描到PCI设备;每次成功扫到PCI设备后均遍历一遍排序链表,从中匹配该PCI设备的总线号、设备号和功能号,进而确定该PCI设备的排序序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711214864.3A CN108009103B (zh) | 2017-11-28 | 2017-11-28 | 一种VxWorks系统的PCI设备排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711214864.3A CN108009103B (zh) | 2017-11-28 | 2017-11-28 | 一种VxWorks系统的PCI设备排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009103A CN108009103A (zh) | 2018-05-08 |
CN108009103B true CN108009103B (zh) | 2021-03-26 |
Family
ID=62054300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711214864.3A Active CN108009103B (zh) | 2017-11-28 | 2017-11-28 | 一种VxWorks系统的PCI设备排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009103B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874544A (zh) * | 2018-06-11 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种gpu服务器io资源分配的方法及系统 |
CN114546500B (zh) * | 2022-01-28 | 2024-06-21 | 郑州信大捷安信息技术股份有限公司 | 一种支持多设备的密码卡驱动实现方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020723B2 (en) * | 2003-04-23 | 2006-03-28 | Texas Instruments Incorporated | Method of allowing multiple, hardware embedded configurations to be recognized by an operating system |
CN103294509A (zh) * | 2013-05-17 | 2013-09-11 | 深圳市亿威尔信息技术股份有限公司 | 用于VxWorks操作系统的驱动多串口设备的方法 |
CN104503792A (zh) * | 2014-12-22 | 2015-04-08 | 山东超越数控电子有限公司 | 一种在VxWorks中实现设备管理功能的方法 |
CN105068792B (zh) * | 2015-07-15 | 2018-03-02 | 上海斐讯数据通信技术有限公司 | 一种驱动设备管理方法及嵌入式系统 |
CN107346296B (zh) * | 2016-05-05 | 2022-01-18 | 研祥智能科技股份有限公司 | 一种驱动方法及装置 |
-
2017
- 2017-11-28 CN CN201711214864.3A patent/CN108009103B/zh active Active
Non-Patent Citations (1)
Title |
---|
基于VxWorks的PCI设备驱动程序设计与实现;蒋景红,冯欣欣,何国建,蔡惠智;《测控技术》;20090930;第59-61页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108009103A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710810B (zh) | 变更管理方法、装置、设备和存储介质 | |
CN109165209B (zh) | 数据库中对象类型的数据校验方法、装置、设备及介质 | |
US20070245198A1 (en) | Method and apparatus for interactive generation of device response templates and analysis | |
CN111259627A (zh) | 文档分析方法、装置、计算机存储介质及设备 | |
CN108009103B (zh) | 一种VxWorks系统的PCI设备排序方法 | |
CN111143359A (zh) | 查询语句生成方法及装置 | |
JP4786998B2 (ja) | ソフトウェア再利用部品管理システム | |
CN111460232A (zh) | 功能模块的查找方法、装置、终端和计算机可读存储介质 | |
CN112035169B (zh) | 跳转处理方法及装置、计算机设备及计算机可读存储介质 | |
CN113535481A (zh) | 数据的回溯方法、装置和非易失性计算机可读存储介质 | |
CN112084111B (zh) | 一种数据处理方法、系统和装置 | |
CN100507842C (zh) | 控制界面上控件之间关系的方法、装置及控件显示系统 | |
CN110837412B (zh) | 一种作业就绪状态判断方法、装置、设备和存储介质 | |
CN107766228B (zh) | 一种基于多语种的自动化测试方法和装置 | |
CN115842861A (zh) | 边缘连接设备适配方法、装置及计算机可读存储介质 | |
CN116048981A (zh) | 一种后端接口测试用例设计方法、装置、介质及设备 | |
CN112818007B (zh) | 数据处理方法、装置及可读存储介质 | |
CN115987865A (zh) | 一种路由代码生成方法、装置、矩阵检测方法及储存介质 | |
CN112559339B (zh) | 一种基于数据模板引擎的自动化测试验证方法及其测试系统 | |
CN112988429B (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN112306876B (zh) | 自动化流程图的生成方法、装置、计算机设备及存储介质 | |
CN112988558B (zh) | 测试执行方法、装置、电子设备及存储介质 | |
CN111522748B (zh) | 一种自动化测试案例生成方法、装置、服务器及存储介质 | |
CN114090014A (zh) | 程序拆分方法、装置、设备及计算机存储介质 | |
CN113918606A (zh) | 日志查询方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 222000 18 Shenghu Road, Lianyungang City, Jiangsu Province Patentee after: The 716th Research Institute of China Shipbuilding Corporation Address before: 222000 18 Shenghu Road, Lianyungang City, Jiangsu Province Patentee before: 716TH RESEARCH INSTITUTE OF CHINA SHIPBUILDING INDUSTRY Corp. |
|
CP01 | Change in the name or title of a patent holder |