CN105739992B - 基于gcc编译器的软件控制内存分拆和映射的方法及系统 - Google Patents

基于gcc编译器的软件控制内存分拆和映射的方法及系统 Download PDF

Info

Publication number
CN105739992B
CN105739992B CN201610108587.7A CN201610108587A CN105739992B CN 105739992 B CN105739992 B CN 105739992B CN 201610108587 A CN201610108587 A CN 201610108587A CN 105739992 B CN105739992 B CN 105739992B
Authority
CN
China
Prior art keywords
bank
function
address
information
ram
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
Application number
CN201610108587.7A
Other languages
English (en)
Other versions
CN105739992A (zh
Inventor
吴瀚平
何凯帆
张静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BUILDWIN INTERNATIONAL (ZHUHAI) LTD.
Original Assignee
Qilong Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qilong Technology Co Ltd filed Critical Qilong Technology Co Ltd
Priority to CN201610108587.7A priority Critical patent/CN105739992B/zh
Publication of CN105739992A publication Critical patent/CN105739992A/zh
Application granted granted Critical
Publication of CN105739992B publication Critical patent/CN105739992B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages

Abstract

本发明公开了基于GCC编译器的软件控制内存分拆和映射的方法,包括:对程序中的不同函数分别配置BANK属性和NEAR属性;若函数属性为NEAR,则编译方式不变;若函数属性为BANK,则将对BANK函数的调用改为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,将返回跳转改为跳转至BANK函数退出管理接口;对芯片地址总线进行MASK处理;设置程序空间,包括将对芯片地址总线MASK处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。还公开了基于GCC编译器的软件控制内存分拆和映射的系统。

Description

基于GCC编译器的软件控制内存分拆和映射的方法及系统
技术领域
本发明涉及一种基于GCC编译器的软件控制内存分拆和映射的方法及系统,属于嵌入电子技术领域。
背景技术
8位CPU与32位CPU广泛地应用于嵌入式电子的设计当中。其中,8位机是以8051为代表,主要面向相对低端的电子产品;32位CPU主要是以ARM为代表,主要面向相对高端的电子产品市场。
切BANK是将一种将大内存拆分成为很多小块,分映射到一个小的逻辑空间的一种做法。
切BANK机制,是软件在不同时刻,将不同物理地址的内容加载到相同的逻辑地址之中,让CPU通过较少的RAM就能够运行软大程序的方法。有些类似硬件的iCache与dCache机制,但是由软件控制,不需要额外的硬件资源。
iCache与dCache是CPU的指令缓存以及数据缓存。通常,需要一个相对较为复杂的硬件管理模块对该缓存进行管理。
GCC是由GNU开发的编程语言编译器,它是以GPL许可证发行的自由软件。主要是面向32位CPU的C/C++语言开发。基于GCC平台的编译器并没有一个很好的对BANK支持的机制,这使得在使用GCC平台时,要么就需要很大的代码及变量空间,要么就需要iCache以及dCache的支持。
随着电子产品的发展,传统的8位CPU已经无法满足更新产品的开发工作。我们也不愿意无止境地去增加芯片的开发成本。我们希望在有限的资源下,能够使用更强劲的CPU,于是,我们就迫切地需要一种基于GCC的切BANK方法。
发明内容
本发明的目的在于克服现有技术问题的缺陷,提供一种基于GCC编译器的软件控制内存分拆和映射的(切BANK)方法及系统。
根据本发明的一个方面,提供了一种基于GCC编译器的软件控制切BANK方法,包括如下步骤:
S1、对程序中的不同函数分别配置BANK属性和NEAR属性;
S2、修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
S3、对芯片地址总线进行MASK处理,使地址能够支持BANK号的记录;
S4、设置程序空间,包括将对芯片地址总线MASK处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
优选地,所述BANK函数进入管理接口处理步骤包括:
S211、从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
S212:从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S213;否则执行步骤S214;
S213、根据BANK号信息计算出程序在存储介质中的物理地址;
S214、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S215、跳转并执行RAM的逻辑地址。
优选地,所述BANK函数退出管理接口处理步骤包括:
S221、从返回地址信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S222;否则执行步骤S223;
S222、根据BANK号信息计算出程序在存储介质中的物理地址;
S223、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S224、跳转并执行RAM的逻辑地址。
根据本发明的另一方面,提供一种基于GCC编译器的软件控制切BANK系统,包括:
配置模块,配置为对程序中的不同函数分别配置BANK属性和NEAR属性;
修改编译器模块,配置为修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
MASK模块,配置为对芯片地址总线进行MASK处理,使地址能够支持BANK号的记录;
设置模块,配置为设置程序空间,包括将对芯片地址总线MASK处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
优选地,所述BANK函数进入管理接口包括:
地址信息获取单元,配置为从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
判断单元,配置为从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序;
计算单元,配置为根据BANK号信息计算出程序在存储介质中的物理地址;
内容加载单元,配置为从存储介质的物理地址中加载内容到RAM的逻辑地址;
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
优选地,所述BANK函数退出管理接口包括:
判断单元,配置为从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序;
计算单元,配置为根据BANK号信息计算出程序在存储介质中的物理地址;
内容加载单元,配置为从存储介质的物理地址中加载内容到RAM的逻辑地址;
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
本发明的有益效果是:
利用本发明,在不需要增加cache管理硬件模块的前提下,就能够实现32位CPU对大程序的管理以及运行,从而以较低成本实现较高性能MCU的开发以及应用。
附图说明
下面结合附图和实例对本发明作进一步说明:
图1是根据本发明一实施例基于GCC编译器的软件控制切BANK方法流程图;
图2是根据本发明的BANK函数进入管理接口流程图;
图3是根据本发明的BANK函数返回管理接口流程图;
图4是根据本发明的程序空间分配示意图;
图5是根据本发明的芯片地址总线设计示意图;
图6是根据本发明另一实施例的基于GCC编译器的软件控制切BANK系统模块图。
具体实施方式
本发明所要解决的技术问题是克服现有技术的不足, 提出一种基于GCC编译器的软件控制切BANK方法及系统,以实现使用更强劲CPU的同时,仍能控制保持低成本的优势。
根据本发明的一实施例,参照图1,提供一种基于GCC编译器的切BANK方法,包括步骤:
S1、对程序中的不同函数分别配置BANK属性和NEAR属性;
S2:修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
S3、对芯片地址总线进行MASK处理,使地址能够支持BANK号的记录;
S4:设置程序空间,包括将对芯片地址总线MASK处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
其中,参照图2,所述BANK函数进入管理接口处理步骤包括:
S211、从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
S212、从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S213;否则执行步骤S214;
S213、根据BANK号信息计算出程序在存储介质中的物理地址;
S214、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S215、跳转并执行RAM的逻辑地址。
其中,参照图3,所述BANK函数退出管理接口处理步骤包括:
S221、从返回地址信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S222;否则执行步骤S223;
S222、根据BANK号信息计算出程序在存储介质中的物理地址;
S223、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S224、跳转并执行RAM的逻辑地址。
具体地,在编译过程中,首先对GCC编译器进行修改,主要增加BANK与NEAR(非BANK函数,则为NEAR函数)的Attribute属性的支持。对于属性为NEAR的函数,保留原有的GCC编译方式;对于BANK的函数,修改函数的调用及其返回接口,使其函数内容能够动态地加载至RAM空间来。所述的Attribute属性,是GCC编译器的一个关键词支持。通过Attribute关键词,我们可以给函数或变量设置不同的属性,以便在编译过程的处理。
在GCC编译器对函数调用的过程进行编译时,我们首先获取出被调用函数的Attribute类型,判断该函数的类型。如果该函数类型为NEAR,则不需要修改,继续按照原来的方式继续编译。如果为BANK,先修改调用处,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式。调用的函数进入管理接口处理流程如图2所示,从返回地址处取出32位地址,并将返回地址进行加4处理。将提取的32位地址,根据MASK分为M与N两部分,利用M地址从存储介质中加载程序到RAM的N地址处进行执行。
BANK函数的第二处修改是修改函数返回处,将返回跳转改写为跳转至BANK函数退出管理接口。BANK函数返回接口如图3所示,在进入后,直接根据从返回地址中获取M与N信息,进行程序加载后再进行返回。
在完成BANK的接口函数以及编译器的设计后,我们开始根据实际需求来对程序进行地址分配。假设实际使用中,公共区空间为0-0x7FFF,BANK空间为0x8000-0xFFFF,我们需要设计BANK0-BANK8共9个BANK,如图4所示具体的BANK空间分配图所示,BANK区的地址共使用了16位总线,我们可以取M=16, N=16。
最后,我们还需要修改对芯片地址总线的MASK处理,我们将芯片CPU出来的32位地址总线中的N位连接到物理内存上,剩下的M位直接悬空,如图5所示。通过以上所述的编译器及芯片地址总线的修改,便能够更好地支持这种软件控制切BANK结构。
根据本发明的另一实施例,参照图2,提供一种基于GCC编译器的切BANK系统,包括:
配置模块,配置为对程序中的不同函数分别配置BANK属性和NEAR属性;
修改编译器模块,配置为修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
MASK模块,配置为对芯片地址总线进行MASK处理,使地址能够支持BANK号的记录;
设置模块,配置为设置程序空间,包括将对芯片地址总线MASK处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
其中,所述BANK函数进入管理接口包括:
地址信息获取单元,配置为从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
判断单元,配置为从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序;
计算单元,配置为根据BANK号信息计算出程序在存储介质中的物理地址;
内容加载单元,配置为从存储介质的物理地址中加载内容到RAM的逻辑地址;
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
其中,所述BANK函数退出管理接口包括:
判断单元,配置为从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序;
计算单元,配置为根据BANK号信息计算出程序在存储介质中的物理地址;
内容加载单元,配置为从存储介质的物理地址中加载内容到RAM的逻辑地址;
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
上述各模块的详细实施例与第一实施例相似,这里不做详细描述。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。
除非一个必需的步骤需要由前面步骤所产生的输入,否则本文描述的步骤的特定顺序仅用于示例性说明,而非限制。

Claims (6)

1.基于GCC编译器的软件控制内存分拆和映射的方法,其特征在于,包括步骤:
S1、对程序中的不同函数分别配置BANK属性和NEAR属性;
S2、修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
S3、对芯片地址总线进行掩膜处理,使地址能够支持BANK号的记录;
S4、设置程序空间,包括将对芯片地址总线掩膜处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
2.根据权利要求1所述的基于GCC编译器的软件控制内存分拆和映射的方法,其特征在于,所述BANK函数进入管理接口处理步骤包括:
S211、从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
S212、从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S213;否则执行步骤S214;
S213、根据BANK号信息计算出程序在存储介质中的物理地址;
S214、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S215、跳转并执行RAM的逻辑地址。
3.根据权利要求1所述的基于GCC编译器的软件控制内存分拆和映射的方法,其特征在于,所述BANK函数退出管理接口处理步骤包括:
S221:从返回地址信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序,若是,则执行步骤S222;否则执行步骤S223;
S222、根据BANK号信息计算出程序在存储介质中的物理地址;
S223、从存储介质的物理地址中加载内容到RAM的逻辑地址;
S224、跳转并执行RAM的逻辑地址。
4.基于GCC编译器的软件控制内存分拆和映射的系统,其特征在于,包括:
配置模块,配置为对程序中的不同函数分别配置BANK属性和NEAR属性;
编译器修改模块,配置为修改编译器,若函数属性为NEAR函数,则编译方式不变;若函数属性为BANK函数,则修改函数调用,将对BANK函数的调用改写为调用BANK函数进入管理接口,并在后面紧跟真实函数地址的形式,修改函数返回,将返回跳转改写为跳转至BANK函数退出管理接口;
掩膜模块,配置为对芯片地址总线进行掩膜处理,使地址能够支持BANK号的记录;
设置模块,配置为设置程序空间,包括将对芯片地址总线掩膜处理的部分设置为BANK号,剩余部分设置为直接映射到RAM空间的逻辑地址。
5.根据权利要求4所述的基于GCC编译器的软件控制内存分拆和映射的系统,其特征在于,所述BANK函数进入管理接口包括:
地址信息获取单元,配置为从返回地址处获取32位的地址信息到ADDR,并将返回地址加4;
判断单元,配置为从ADDR信息中获取逻辑地址以及BANK号信息,并根据BANK号信息判断是否需要加载程序;
计算单元,配置为根据BANK号信息计算出程序在存储介质中的物理地址;
内容加载单元,配置为从存储介质的物理地址中加载内容到RAM的逻辑地址;
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
6.根据权利要求4所述的基于GCC编译器的软件控制内存分拆和映射的系统,其特征在于,所述BANK函数退出管理接口包括:
跳转并执行单元,配置为跳转并执行RAM的逻辑地址。
CN201610108587.7A 2016-02-26 2016-02-26 基于gcc编译器的软件控制内存分拆和映射的方法及系统 Active CN105739992B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610108587.7A CN105739992B (zh) 2016-02-26 2016-02-26 基于gcc编译器的软件控制内存分拆和映射的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610108587.7A CN105739992B (zh) 2016-02-26 2016-02-26 基于gcc编译器的软件控制内存分拆和映射的方法及系统

Publications (2)

Publication Number Publication Date
CN105739992A CN105739992A (zh) 2016-07-06
CN105739992B true CN105739992B (zh) 2019-05-07

Family

ID=56249660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610108587.7A Active CN105739992B (zh) 2016-02-26 2016-02-26 基于gcc编译器的软件控制内存分拆和映射的方法及系统

Country Status (1)

Country Link
CN (1) CN105739992B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557351B (zh) * 2016-11-21 2019-08-09 广东高标电子科技有限公司 嵌入式应用程序的数据处理方法及装置
CN108776594B (zh) * 2018-06-05 2021-02-09 西安交通大学 适用于处理器实时控制的软件编程及其汇编链接方法
CN111796831B (zh) * 2020-06-24 2023-02-28 苏州大学 一种多芯片兼容的编译方法和装置
CN113076263A (zh) * 2021-05-06 2021-07-06 北京字节跳动网络技术有限公司 一种进程运行的方法、装置、计算机设备及存储介质
CN114237746B (zh) * 2021-12-16 2023-11-14 北京天融信网络安全技术有限公司 基于c语言的配置信息管理方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102340320A (zh) * 2011-07-08 2012-02-01 电子科技大学 卷积Turbo码双向并行译码方法
CN102662853A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现使用存储级并行的内存管理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099726B2 (en) * 2005-12-07 2012-01-17 Microsoft Corporation Implementing strong atomicity in software transactional memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102340320A (zh) * 2011-07-08 2012-02-01 电子科技大学 卷积Turbo码双向并行译码方法
CN102662853A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现使用存储级并行的内存管理方法及装置

Also Published As

Publication number Publication date
CN105739992A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
CN105739992B (zh) 基于gcc编译器的软件控制内存分拆和映射的方法及系统
US8595439B1 (en) Optimization of cache configuration for application design
US8533698B2 (en) Optimizing execution of kernels
JP6122493B2 (ja) 適応的に移植性を有したライブラリ
US9766867B2 (en) Systems and methods for improving performance of mobile applications
US8949532B1 (en) Automatic generation of cache-optimized code
US8286130B2 (en) Methods and systems for using type models to generate an implementation of a type
CN102087609B (zh) 多处理器平台下的动态二进制翻译方法
EP3306479A1 (en) Memory structure comprising scratchpad memory
CN106021257A (zh) 一种支持在线编程的爬虫抓取数据方法、装置及系统
US20110067013A1 (en) Systems and methods for deferring software implementation decisions until load time
JPH10105411A (ja) プログラム実行中に手順を作り出す方法
WO2014099828A1 (en) Test scope determination based on code change(s)
CN113196243A (zh) 使用编译器生成的仿真优化元数据改进仿真和跟踪性能
CN112463417A (zh) 基于国产信创软硬件平台的迁移适配方法、装置和设备
US7478376B2 (en) Computer program code size partitioning method for multiple memory multi-processing systems
CN102004662A (zh) 嵌入式可裁剪式虚拟机
US20160117157A1 (en) Eager and optimistic evaluation of promises
CN116523023A (zh) 算子融合方法及装置、电子设备与存储介质
CN112559336B (zh) 自适应调试异构计算芯片的方法、装置、系统及主板芯片
US20030070117A1 (en) Simulation apparatus and simulation method
US8984473B2 (en) Methods for type analysis in systems for code generation
CN110502439A (zh) 调试方法、装置、电子设备以及存储介质
JP3309810B2 (ja) プログラムリンクシステム、方法及び記録媒体
Weng et al. Acceleration of a Python-based tsunami modelling application via CUDA and OpenHMPP

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190404

Address after: 519000 3rd Floor, Stereo Science and Technology Building, 184 Bailian Road, Jida, Zhuhai City, Guangdong Province

Applicant after: Qilong Technology Co., Ltd.

Address before: 519015 3rd Floor, Stereo Science and Technology Building, 184 Bailian Road, Jida, Zhuhai City, Guangdong Province

Applicant before: ZHUHAI HUANGRONG INTEGRATED CIRCUIT TECHNOLOGY CO., LTD.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190929

Address after: 519000 3rd Floor, Stereo Science and Technology Building, 184 Bailian Road, Jida, Zhuhai City, Guangdong Province

Patentee after: Jianrong Integrated Circuit Technology (Zhuhai) Co., Ltd.

Address before: 519015 Guangdong city of Zhuhai province Jida Bailian Road No. 184 building 3 floor three-dimensional technology

Patentee before: ZHUHAI HUANGRONG INTEGRATED CIRCUIT TECHNOLOGY CO., LTD.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220415

Address after: Rooms 1306-1309, 13 / F, 19 science Avenue West, Hong Kong Science Park, Shatin, New Territories, China

Patentee after: BUILDWIN INTERNATIONAL (ZHUHAI) LTD.

Address before: 519000 3rd floor, stereoscopic science and technology building, No. 184, Bailian Road, Jida, Zhuhai, Guangdong

Patentee before: BUILDWIN INTERNATIONAL (ZHUHAI) Ltd.