一种基于自动化ral的寄存器访问方法及系统的制作方法
【技术领域】
[0001]本发明涉及芯片寄存器访问技术领域,具体来讲是一种基于自动化RAURegiSterAbstract1n Layer,寄存器抽象层)的寄存器访问方法及系统。
【背景技术】
[0002]随着全球通信技术的IP (Internet Protocol,网际协议)化进程不断深入,包处理类芯片的应用需求日益增多,包处理相关的协议也随之增多,进而使得包处理类芯片的测试日趋复杂,包处理芯片进行测试时,需要对包处理芯片经过多轮的设计、开发和验证。
[0003]在芯片的驱动开发和功能级验证过程中,需要多次进行寄存器的访问操作。目前,芯片的驱动开发过程和功能级验证过程分别存在以下不足:
[0004]对于驱动开发而言,由于芯片的驱动开发方式一般为手动开发,当寄存器出现硬件、软件的设计修改时,会导致驱动开发过程中需要手动进行多次软件修订,进而使得整个收敛过程出现大量的反复操作,降低了开发效率。
[0005]对于芯片功能级验证而言,由于测试用例的设计依赖寄存器的访问,当寄存器出现硬件、软件的设计修改时,会导致测试用例的重复修订,进而造成验证效率低下的问题。
【发明内容】
[0006]本发明的目的是为了克服上述【背景技术】的不足,提供一种基于自动化RAL的寄存器访问方法及系统,本发明能够基于寄存器抽象层RAL的自动生成完成寄存器的访问,有效提高芯片开发及验证的效率。
[0007]为达到以上目的,本发明提供一种基于自动化RAL的寄存器访问方法,包括以下步骤:
[0008]S1:按照规定的格式,创建若干用于描述寄存器的描述文件,转入S2 ;
[0009]S2:利用脚本工具将描述文件自动转换成访问所需的C文件,转入S3 ;
[0010]S3:根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0011]在上述技术方案的基础上,SI中所述描述文件的类型包括txt文档、doc文档和excel表格;所述描述文件的内容包括文件信息、寄存器信息和表项信息:
[0012]所述文件信息包括文件名、文件占用的地址高低bit位;
[0013]所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字数、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只读只写指示、域描述、域默认值;
[0014]所述表项信息包括表项名、条目数、条目占用字数、表项偏移地址、表项描述和表项的域信息;其中,表项的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、读写指示、域描述。
[0015]在上述技术方案的基础上,S2具体包括以下步骤:
[0016]S201:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,转入S202 ;
[0017]S202:利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,转入S203 ;
[0018]S203:根据S202中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件,S2全部结束,转入S3。
[0019]在上述技术方案的基础上,S202中读取每个描述文件,将读取的信息按照一定的数据结构进行保存,具体包括以下步骤:
[0020]每次读取描述文件时,为读取的描述文件定义一个文件class对象,将文件class对象保存在一个文件list中;
[0021]逐行读取描述文件中的关键字指示,当读到FileName时,表示为文件信息,将文件信息保存在文件class对象里面;当读到RegMem/Register时,则表示为表项/寄存器信息,为表项/寄存器定义对应的表项class对象/寄存器class对象,将表项class对象/寄存器class对象组成相应的表项list/寄存器list,并保存在文件class对象中;当读到MemRegFields/Fields时,则表示为表项的域信息/寄存器的域信息,为表项的域信息/寄存器的域信息定义对应的表项域信息class对象/寄存器域信息class对象,将表项域信息class对象/寄存器域信息class对象组成相应的表项域信息list/寄存器域信息list,并保存在对应的表项class对象/寄存器class对象中。
[0022]在上述技术方案的基础上,S203中所述对应的C文件包括以下9个文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c 文件、mems.c 文件、switch_xx.c 文件和 fields, c 文件;
[0023]allenum.h文件用于:对寄存器名、表项名、域名进行定义,通过调用该定义对寄存器或表项进行访问;
[0024]memacc.h文件用于:定义每个表项的域的读写操作;
[0025]memregs.h文件用于:定义所有寄存器的读写操作;
[0026]intenum.h文件用于:定义寄存器信息的查找索引、表项信息的查找索引;
[0027]allfields, h文件用于:对所有寄存器、表项的域指针进行声明;
[0028]regs.c文件用于:保存所有寄存器信息,包括寄存器所属描述文件的文件名、寄存器占用字数、寄存器偏移地址、寄存器的域个数、寄存器的域指针、默认值;
[0029]mems.c文件用于:保存所有表项信息,包括表项的条目最小索引、条目最大索引、表项所属描述文件的文件名、表项偏移地址、表项条目地址跳变字数、表项的域个数、表项的域指针;
[0030]switch_xx.c文件用于:对芯片进行寄存器抽象层RAL的驱动定义,所述驱动定义的内容包括芯片类型、芯片名称、芯片对应寄存器传输层RTL版本、芯片对应的寄存器、芯片对应的表项以及初始化值;
[0031]fields, c文件用于:保存寄存器、表项对应的域信息,每个寄存器的域信息、表项的域信息均以结构体数组ARRAY的形式保存,且每个域信息包括域名、域所在字的偏移量、域占用的地址尚低bit位、读与指不。
[0032]在上述技术方案的基础上,S3具体包括以下步骤:
[0033]S301:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,转入S302 ;否则直接返回错误信息,结束;
[0034]S302:在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,转入S303 ;
[0035]S303:根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,转入S304 ;否则返回错误信息,结束;
[0036]S304:获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
[0037]在上述技术方案的基础上,S2中所述脚本工具采用工具命令语言TCL,TCL是一种基于字符串解释性的命令语言。
[0038]本发明还提供一种实现上述方法的基于自动化RAL的寄存器访问系统,包括描述文件创建模块、C文件转换模块和域信息操作模块;
[0039]所述描述文件创建模块用于:按照规定的格式,创建若干用于描述寄存器的描述文件,向C文件转换模块发送转换信号;
[0040]所述C文件转换模块用于:收到转换信号后,利用脚本工具将描述文件自动转换成访问所需的C文件,向域信息操作模块发送操作信号;
[0041]所述域信息操作模块用于:收到操作信号后,根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0042]在上述技术方案的基础上,所述C文件转换模块包括文件获取子模块、文件解析子模块和C文件生成子模块;
[0043]所述文件获取子模块用于:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,向文件解析子模块发送解析信号;
[0044]所述文件解析子模块用于:收到解析信号后,利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,向C文件生成子模块发送文件生成信号;
[0045]所述C文件生成子模块用于:收到文件生成信号后,根据文件解析子模块中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件。
[0046]在上述技术方案的基础上,所述域信息操作模块包括判断子模块、查找子模块、域信息判断子模块和域信息处理子模块;
[0047]所述判断子模块用于:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,向查找子模块发送查找信号;否则直接返回错误信息,结束;
[0048]所述查找子模块用于:收到查找信号后,在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,向域信息判断子模块发送判断信号;
[0049]所述域信息判断子模块用于:收到判断信号后,根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,向域信息处理子模块发送处理信号;否则返回错误信息,结束;
[0050]所述域信息处理
子模块用于:收到处理信号后,获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
[0051]本发明的有益效果在于:
[0052](I)本发明利用脚本工具将描述文件自动转换成访问所需的C文件,从而实现自动生成RAL(寄存器抽象层),系统根据需要访问的寄存器名、表项名和域名,在自动生成的C文件中查找对应的寄存器的域信息、表项的域信息后,即可对相应域值进行操作,从而实现寄存器的访问。
[0053]因此,利用本方法进行寄存器的访问时,不需要关心寄存器或表项的具体信息,当寄存器或表项有更新时(如地址修改、域占用的高低bit位变化、新增域等),只要寄存器名、表项名、域名没有变化,就无需对代码进行任何修改,只需更新寄存器抽象中生成的C文件即可,进而能够有效提高芯片开发及验证的效率。
[0054](2)本发明适用于各类芯片的驱动开发及验证过程,适用范围比较广,复用性较尚O
【附图说明】
[0055]图1为本发明实施例中基于自动化RAL的寄存器访问方法的流程图;
[0056]图2为本发明实施例中S2的具体步骤的流程图;
[0057]图3为本发明实施例中保存解析信息的数据结构的示意图;
[0058]图4为本发明实施例中S3的具体步骤的流程图。
【具体实施方式】
[0059]下面结合附图及具体实施例对本发明作进一步的详细描述。
[0060]参见图1所示,本发明实施例提供一种基于自动化RAL的寄存器访问方法,包括以下步骤:
[0061]S1:按照规定的格式,仓Il建若干用于描述寄存器的描述文件,转入S2。
[0062]该描述文件的类型包括txt文档、doc文档和excel表格;该描述文件的内容包括文件?目息、寄存器?目息和表项?目息:
[0063]文件信息包括文件名、文件占用的地址高低bit位;
[0064]寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字数、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只读只写指示、域描述、域默认值;
[0065]表项信息包括表项名、条目数、条目占用字数、表项偏移地址、表项描述和表项的域信息;其中,表项的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、读写指示、域描述。
[0066]另外,同一描述文件中,寄存器名和表项名不能相同,但域名可相同;不同描述文件中,寄存器名、表项名、域名均可以相同。
[0067]S2:利用脚本工具将描述文件自动转换成访问所需的C文件,从而实现RAL(寄存器抽象层)的自动生成,转入S3。
[0068]所述脚本工具采用TCL (Tool Command Language,工具命令语言)脚本工具,TCL是一种基于字符串解释性的命令语言。
[0069]将描述文件自动转换成访问所需的C文件时,可基于用户需求选择转换所有描述文件、转换某种格式的描述文件或转换指定的描述文件。
[0070]参见图2所示,实际操作时,S2具体包括以下步骤:
[0071]S201:获取描述文件:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,转入S202。
[0072]S202:解析描述文件:利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存(如图3所示),转入S203。
[0073]S203:生成C文件:根据S202中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件,S2全部结束,转入S3。
[0074]S3:根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0075]参见图4所示,实际操作时,S3具体包括以下步骤:
[0076]S301:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,转入S302 ;否则直接返回错误信息,结束。
[0077]S302:在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,转入S303。
[0078]S303:根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,转入S304 ;否则返回错误信息,结束。
[0079]S304:获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
[0080]S202中读取每个描述文件,将读取的信息按照一定的数据结构进行保存,具体包括以下步骤:每次读取描述文件时,为读取的描述文件定义一个文件class (类,与C++相似,一种具有相同属性或功能的具体实例)对象,将文件class对象保存在一个文件list (列表,是TCL中由一堆有特殊解释元素组成的有序集合)中(通过文件class对象名可以访问对应描述文件的信息);
[0081]逐行读取描述文件中的关键字指示,当读到FileName时,表示为文件信息,将文件信息保存在文件class对象里面;当读到RegMem/Register时,则表示为表项/寄存器信息,为表项/寄存器定义对应的表项class对象/寄存器class对象,将表项class对象/寄存器class对象组成相应的表项list/寄存器list,并保存在文件class对象中;当读到MemRegFields/Fields时,则表示为表项的域信息/寄存器的域信息,为表项的域信息/寄存器的域信息定义对应的表项域信息class对象/寄存器域信息class对象,将表项域信息class对象/寄存器域信息class对象组成相应的表项域信息list/寄存器域信息list,并保存在对应的表项class对象/寄存器class对象中。
[0082]S203中所述对应的C文件包括以下9个文件:allenum.h文件、memacc.h文件、memregs.h 文件、intenum.h 文件、allfields, h 文件、regs.c 文件、mems.c 文件、switch_XX.c文件和fields, c文件;
[0083]allenum.h文件用于:对寄存器名、表项名、域名进行定义,通过调用该定义对寄存器或表项进行访问;
[0084]memacc.h文件用于:定义每个表项的域的读写操作;
[0085]memregs.h文件用于:定义所有寄存器的读写操作;
[0086]intenum.h文件用于:定义寄存器信息的查找索引、表项信息的查找索引;
[0087]allfields, h文件用于:对所有寄存器、表项的域指针进行声明;
[0088]regs.c文件用于:保存所有寄存器信息,包括寄存器所属描述文件的文件名、寄存器占用字数、寄存器偏移地址(描述文件基地址+寄存器偏移地址=寄存器地址)、寄存器的域个数、寄存器的域指针(可基于寄存器的域指针找到寄存器对应的域信息)、默认值。
[0089]mems.c文件用于:保存所有表项信息,包括表项的条目最小索引、条目最大索引、表项所属描述文件的文件名、表项偏移地址、表项条目地址跳变字数(描述文件基地址+表项偏移地址+条目索引*条目地址跳变字数,即为此表项对应条目的地址)、表项的域个数、表项的域指针(可基于表项的域指针找到表项对应的域信息)。
[0090]switch_xx.c文件用于:对芯片进行RAL驱动定义,该驱动定义的内容包括芯片类型、芯片名称、芯片对应RTL(Register-Transport_layer,寄存器传输层)版本、芯片对应的寄存器、芯片对应的表项以及初始化值。
[0091]fields, c文件用于:保存寄存器、表项对应的域信息,每个寄存器的域信息、表项的域信息均以结构体数组ARRAY的形式保存,且每个域信息包括域名、域所在字的偏移量、域占用的地址尚低bit位、读与指不。
[0092]本发明还提供一种实现上述方法的基于自动化RAL的寄存器访问系统,包括描述文件创建模块、C文件转换模块和域信息操作模块。
[0093]描述文件创建模块用于:按照规定的格式,创建若干用于描述寄存器的描述文件,向C文件转换模块发送转换信号。
[0094]C文件转换模块用于:收到转换信号后,利用脚本工具将描述文件自动转换成访问所需的C文件,向域信息操作模块发送操作信号。
[0095]其中,C文件转换模块包括文件获取子模块、文件解析子模块和C文件生成子模块;
[0096]文件获取子模块用于:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,向文件解析子模块发送解析信号;
[0097]文件解析子模块用于:收到解析信号后,利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,向C文件生成子模块发送文件生成信号;
[0098]C文件生成子模块用于:收到文件生成信号后,根据文件解析子模块中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件。
[0099]域信息操作模块用于:收到操作信号后,根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0100]其中,域信息操作模块包括判断子模块、查找子模块、域信息判断子模块和域信息处理子模块;
[0
101]判断子模块用于:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,向查找子模块发送查找信号;否则直接返回错误信息,结束;
[0102]查找子模块用于:收到查找信号后,在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,向域信息判断子模块发送判断信号;
[0103]域信息判断子模块用于:收到判断信号后,根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,向域信息处理子模块发送处理信号;否则返回错误信息,结束;
[0104]域信息处理子模块用于:收到处理信号后,获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
[0105]本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
【主权项】
1.一种基于自动化RAL的寄存器访问方法,其特征在于,包括以下步骤: 51:按照规定的格式,创建若干用于描述寄存器的描述文件,转入S2 ; 52:利用脚本工具将描述文件自动转换成访问所需的C文件,转入S3 ; 53:根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。2.如权利要求1所述的基于自动化RAL的寄存器访问方法,其特征在于:S1中所述描述文件的类型包括txt文档、doc文档和excel表格;所述描述文件的内容包括文件信息、寄存器?目息和表项?目息: 所述文件信息包括文件名、文件占用的地址高低bit位; 所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字数、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只读只写指示、域描述、域默认值; 所述表项信息包括表项名、条目数、条目占用字数、表项偏移地址、表项描述和表项的域信息;其中,表项的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、读写指示、域描述。3.如权利要求2所述的基于自动化RAL的寄存器访问方法,其特征在于,S2具体包括以下步骤: 5201:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,转入S202 ; 5202:利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,转入S203 ; 5203:根据S202中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件,S2全部结束,转入S3。4.如权利要求3所述的基于自动化RAL的寄存器访问方法,其特征在于:S202中读取每个描述文件,将读取的信息按照一定的数据结构进行保存,具体包括以下步骤: 每次读取描述文件时,为读取的描述文件定义一个文件class对象,将文件class对象保存在一个文件list中; 逐行读取描述文件中的关键字指示,当读到FileName时,表示为文件信息,将文件信息保存在文件class对象里面;当读到RegMem/Register时,则表示为表项/寄存器信息,为表项/寄存器定义对应的表项class对象/寄存器class对象,将表项class对象/寄存器class对象组成相应的表项list/寄存器list,并保存在文件class对象中;当读到MemRegFields/Fields时,则表示为表项的域信息/寄存器的域信息,为表项的域信息/寄存器的域信息定义对应的表项域信息class对象/寄存器域信息class对象,将表项域信息class对象/寄存器域信息class对象组成相应的表项域信息list/寄存器域信息list,并保存在对应的表项class对象/寄存器class对象中。5.如权利要求2所述的基于自动化RAL的寄存器访问方法,其特征在于:S203中所述对应的C文件包括以下9个文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h 文件、allfields, h 文件、regs.c 文件、mems.c 文件、switch_xx.c 文件和fields, c 文件; allenum.h文件用于:对寄存器名、表项名、域名进行定义,通过调用该定义对寄存器或表项进行访问; memacc.h文件用于:定义每个表项的域的读写操作; memregs.h文件用于:定义所有寄存器的读写操作; intenum.h文件用于:定义寄存器信息的查找索引、表项信息的查找索引; allfields, h文件用于:对所有寄存器、表项的域指针进行声明; regs.c文件用于:保存所有寄存器信息,包括寄存器所属描述文件的文件名、寄存器 占用字数、寄存器偏移地址、寄存器的域个数、寄存器的域指针、默认值; mems.c文件用于:保存所有表项信息,包括表项的条目最小索引、条目最大索引、表项所属描述文件的文件名、表项偏移地址、表项条目地址跳变字数、表项的域个数、表项的域指针; switch_xx.c文件用于:对芯片进行寄存器抽象层RAL的驱动定义,所述驱动定义的内容包括芯片类型、芯片名称、芯片对应寄存器传输层RTL版本、芯片对应的寄存器、芯片对应的表项以及初始化值; fields, c文件用于:保存寄存器、表项对应的域信息,每个寄存器的域信息、表项的域信息均以结构体数组ARRAY的形式保存,且每个域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、读写指示。6.如权利要求2所述的基于自动化RAL的寄存器访问方法,其特征在于:S3具体包括以下步骤: 5301:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,转入S302 ;否则直接返回错误信息,结束; 5302:在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,转A S303 ; S303:根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,转入S304 ;否则返回错误信息,结束; S304:获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。7.如权利要求1至6中任一项所述的基于自动化RAL的寄存器访问方法,其特征在于:S2中所述脚本工具采用工具命令语言TCL,TCL是一种基于字符串解释性的命令语言。8.一种实现权利要求1至7中任一项所述方法的基于自动化RAL的寄存器访问系统,其特征在于:包括描述文件创建模块、C文件转换模块和域信息操作模块; 所述描述文件创建模块用于:按照规定的格式,创建若干用于描述寄存器的描述文件,向C文件转换模块发送转换信号; 所述C文件转换模块用于:收到转换信号后,利用脚本工具将描述文件自动转换成访问所需的C文件,向域信息操作模块发送操作信号; 所述域信息操作模块用于:收到操作信号后,根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。9.如权利要求8所述的基于自动化RAL的寄存器访问系统,其特征在于:所述C文件转换模块包括文件获取子模块、文件解析子模块和C文件生成子模块; 所述文件获取子模块用于:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,向文件解析子模块发送解析信号; 所述文件解析子模块用于:收到解析信号后,利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,向C文件生成子模块发送文件生成信号; 所述C文件生成子模块用于:收到文件生成信号后,根据文件解析子模块中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件。10.如权利要求8所述的基于自动化RAL的寄存器访问系统,其特征在于:所述域信息操作模块包括判断子模块、查找子模块、域信息判断子模块和域信息处理子模块; 所述判断子模块用于:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,向查找子模块发送查找信号;否则直接返回错误信息,结束; 所述查找子模块用于:收到查找信号后,在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,向域信息判断子模块发送判断信号; 所述域信息判断子模块用于:收到判断信号后,根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,向域信息处理子模块发送处理信号;否则返回错误信息,结束; 所述域信息处理子模块用于:收到处理信号后,获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
【专利摘要】本发明公开了一种基于自动化RAL的寄存器访问方法及系统,涉及芯片寄存器访问技术领域。该方法包括以下步骤:按照规定的格式,创建若干用于描述寄存器的描述文件;利用脚本工具将描述文件自动转换成访问所需的C文件;根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息,根据查找到的域信息进行对应域值的读取或改变操作。本发明能够基于寄存器抽象层RAL的自动生成完成寄存器的访问,有效提高芯片开发及验证的效率。
【IPC分类】G06F3/06, G06F9/44
【公开号】CN104898991
【申请号】CN201510315874
【发明人】杨宗悦, 王良俊
【申请人】烽火通信科技股份有限公司
【公开日】2015年9月9日
【申请日】2015年6月10日