CN112380119B - 芯片、编程调试器、系统及锁定编程调试入口的方法 - Google Patents
芯片、编程调试器、系统及锁定编程调试入口的方法 Download PDFInfo
- Publication number
- CN112380119B CN112380119B CN202011263296.8A CN202011263296A CN112380119B CN 112380119 B CN112380119 B CN 112380119B CN 202011263296 A CN202011263296 A CN 202011263296A CN 112380119 B CN112380119 B CN 112380119B
- Authority
- CN
- China
- Prior art keywords
- port
- chip
- programming
- ports
- 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
- 238000000034 method Methods 0.000 title claims abstract description 100
- 238000001514 detection method Methods 0.000 claims abstract description 187
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 abstract description 6
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 238000012360 testing method Methods 0.000 description 33
- 230000006854 communication Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000001914 filtration Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 102100036285 25-hydroxyvitamin D-1 alpha hydroxylase, mitochondrial Human genes 0.000 description 3
- 101000875403 Homo sapiens 25-hydroxyvitamin D-1 alpha hydroxylase, mitochondrial Proteins 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种芯片、编程调试器、系统及锁定编程调试入口的方法。该方法包括:S101,从芯片的I/O端口接收入口检测序列;S102,判断与入口检测序列相关的数值是否等于第一预设值,若是,则锁定该I/O端口为编程调试入口,若否,则确定该I/O端口锁定失败。与现有技术相比,本发明实施例可以提供多组或多个I/O端口作为编程调试入口的备选端口,增强了编程调试入口选择的灵活性;并且,可以从多组I/O端口中锁定一组I/O端口,或从多个I/O端口中锁定一个I/O端口,从而避免了编程调试过程中的端口冲突问题。
Description
技术领域
本发明涉及芯片设计技术领域,尤其涉及一种锁定编程调试入口的方法及芯片、编程调试器和系统。
背景技术
目前,嵌入式系统做得越来越小,对芯片的端口数量要求也越来越高,即同等条件下,需要使用最少数量的输入/输出(IN/OUT,I/O)端口以满足最多的应用需求。
在一些应用情形下,可编辑逻辑器件、内嵌存储器芯片需要完成编程调试。然而,芯片在首次或二次开发编程调试的过程中,编程调试端口常常与程序正常运行所使用的通用端口发生冲突。为解决该类问题,本发明提出多组或多个编程调试端口复用的方法。
发明内容
本发明实施例的目的在于,提供一种锁定编程调试入口的方法及芯片、编程调试器和系统。
本发明实施例提供一种芯片锁定编程调试入口的方法,包括:S101,从芯片的I/O端口接收入口检测序列;S102,判断与入口检测序列相关的数值是否等于第一预设值,若是,则锁定该I/O端口为编程调试入口,若否,则确定该I/O端口锁定失败并将其标识为通用端口。
可选地,包括:产生标志位以标识所锁定的I/O端口,并标识其它端口为通用端口。
可选地,包括:基于入口检测序列而输出信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。
可选地,包括:当该I/O端口锁定失败时返回执行步骤S101。
可选地,包括:当连续N次I/O端口锁定失败和/或锁定超时时确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
可选地,包括:当I/O端口锁定失效时基于复位延时时间进行复位并返回执行步骤S101;其中,复位包括:直接复位芯片或芯片的所有I/O端口,或获取复位指令并复位芯片或芯片的所有I/O端口。
可选地,包括:基于复位延时配置信息获取复位延时时间,其中,复位延时配置信息包括于入口检测序列或复位指令内。
可选地,复位延时时间大于或等于100ms。
本发明还提供一种编程调试器锁定编程调试入口的方法,包括:S601,向芯片的I/O端口发送入口检测序列;S602,接收来自芯片基于入口检测序列而发送的信息;S603,判断该信息是否等于第二预设值,若是,则确定该I/O端口被锁定为编程调试入口,若否,则确定该I/O端口锁定失败。
可选地,在S601之前包括:向芯片发送复位指令,复位指令包括芯片复位延时时间。
可选地,包括:在接收不到该信息时,确定该I/O端口锁定失败。
可选地,包括:当确定该I/O端口锁定失败时返回执行步骤S601。
可选地,包括:当连续N次I/O端口锁定失败时确定I/O端口锁定失效,其中,N≥1;在I/O端口锁定失效时输出复位指令。
本发明实施例还提供一种锁定编程调试入口的方法,包括:S701,编程调试器向芯片的I/O端口发送入口检测序列;S702,芯片从I/O端口接收入口检测序列,并判断与入口检测序列相关的数值是否等于第一预设值,若是,则锁定该I/O端口为编程调试入口,若否,则确定该I/O端口锁定失败。
可选地,包括:芯片基于入口检测序列而向编程调试器发送信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;编程调试器接收该信息,并判断该信息是否等于第二预设值,若是,则确定I/O端口被锁定为编程调试入口,若否,则确定该I/O端口锁定失败返回执行步骤S701。
可选地,包括:编程调试器在接收不到该信息时,确定该I/O端口锁定失败。
可选地,包括:当连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
可选地,包括:当I/O端口锁定失效时,芯片基于复位延时时间进行复位并返回执行步骤S701;其中,复位包括:直接复位芯片或芯片的所有I/O端口,或获取复位指令并复位芯片或芯片的所有I/O端口。
可选地,包括:当I/O端口锁定失效时,编程调试器向芯片发送复位指令。
可选地,包括:当I/O端口锁定失效时,芯片基于复位延时配置信息获取复位延时时间,其中,复位延时配置信息包括于入口检测序列内或复位指令内。
可选地,在S701之前包括:编程调试器基于芯片的规格确定备选端口,备选端口为芯片中适于作为编程调试入口的多组或者多个I/O端口;芯片为备选端口中的每一组或者每一个I/O端口分别配置组号;编程调试器向芯片发送读取组号的命令;芯片选择相应的备选端口作为待测端口,并将该待测端口的组号返回给编程调试器。
可选地,编程调试器向芯片发送用以获取备选端口的组号的命令之前包括:编程调试器向芯片发送复位指令,复位指令包括芯片复位延时时间。
可选地,在S701中:编程调试器向待测端口发送入口检测序列。
本发明实施例还提供一种芯片,包括:若干个I/O端口,其中至少一组或一个I/O端口适于接收入口检测序列;与若干个I/O端口连接的检测模块,其适于判断所接收的与入口检测序列相关的数值是否等于第一预设值,并在二者相等时锁定该I/O端口为编程调试入口、以及在二者不相等时确定该I/O端口锁定失败。
可选地,包括与检测模块连接的第一寄存器,其适于产生标志位以标识所锁定的I/O端口。
可选地,检测模块适于基于入口检测序列而输出信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。
可选地,检测模块适于在连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
可选地,包括与检测模块连接的复位延时模块,其适于在I/O端口锁定失效时基于复位延时时间进行复位,复位包括直接复位芯片或芯片的所有I/O端口,或获取复位指令并复位芯片或芯片的所有I/O端口。
本发明实施例还提供一种编程调试器,包括:编程调试口,其适于向芯片的I/O端口输出入口检测序列以及接收基于入口检测序列而产生的信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;处理模块,其适于判断该信息是否等于第二预设值,并在二者相等时确定该I/O端口被锁定为编程调试入口、以及在二者不相等时确定该I/O所述端口锁定失败。
可选地,处理模块适于在编程调试口接收不到该信息时确定I/O端口锁定失败。
可选地,处理模块适于在连续N次I/O端口锁定失败时确定I/O端口锁定失效,其中,N≥1,以及在I/O端口锁定失效时输出复位指令。
本发明实施例还提供一种锁定编程调试入口的系统,包括上述的芯片和编程调试器,其中,芯片的若干个I/O端口与编程调试器的编程调试口连接。
与现有技术相比,本发明的技术方案具有有益效果。例如,本发明实施例提供多组或多个I/O端口作为编程调试入口的备选端口,增强了编程调试入口选择的灵活性;并且,可以从多组I/O端口中锁定一组I/O端口,或从多个I/O端口中锁定一个I/O端口,从而避免了编程调试过程中的端口冲突问题。
又例如,本发明实施例提供延时复位,并且复位延时时间可配置为多个档位,而多个挡位的适当选择既可以确保足够的时间以使入口检测序列被芯片接收,又可以避免过长的时间以使编程调试的效率降低。
又例如,本发明实施例提供编程复位,通过重启编程调试模式、以及复位芯片或芯片的I/O端口,使得复位结束时I/O端口可以处于输入状态,并且在复位后的较短时间内I/O端口可以处于输入状态的几率较大(复位结束到程序运行设置I/O端口为输出的所需时间较长),使得从多组I/O端口中锁定一组I/O端口或从多个I/O端口中锁定一个I/O端口的可能性增大。
又例如,本发明实施例基于入口检测序列及判断等手段锁定端口,而无需外部复位端口参与编程调试通讯,这可节省额外的复位端口;对于I/O端口比较少的芯片,尤其是对于小规格芯片,由于其对IO端口的设计要求不高,可以节省复位端口的资源,降低芯片的成本。
附图说明
图1为本发明实施例中芯片锁定编程调试入口的方法的第一种流程图;
图2为本发明实施例中入口检测序列的示意图;
图3为本发明实施例中的通信协议时序图,其中,子图3a为一组IO端口作为编程调试入口的通信协议时序图,子图3b为一个IO端口作为编程调试入口的通信协议时序图;
图4为本发明实施例中芯片锁定编程调试入口的方法的第二种流程图;
图5为本发明实施例中芯片锁定编程调试入口的方法的第三种流程图;
图6为本发明实施例中芯片锁定编程调试入口的方法的第四种流程图;
图7为本发明实施例中芯片锁定编程调试入口的方法的第五种流程图;
图8为本发明实施例中编程调试器锁定编程调试入口的方法的流程图;
图9为本发明实施例中锁定编程调试入口的方法的流程图;
图10为本发明实施例中锁定编程调试入口的系统的示意图。
具体实施方式
在本发明实施例中,芯片为可编程的器件,例如,可以为现场可编程门阵列(Field-Programmable Gate Array,FPGA),或复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD),或微控制器(Micro-Controller Unit,MCU)。
I/O端口为芯片的引脚,其在正常通信时可处于输入状态以接收外部设备发送的信息或可处于输出状态以向外部设备发送信息。
芯片通过其I/O端口与外部设备如编程调试器连接。
首先,需要确定哪些I/O端口可以作为备选端口以用于后续端口锁定的操作。
具体而言,编程调试器可以根据芯片规格,确定芯片支持哪几组或哪几个I/O端口,并可将这些I/O端口作为备选端口体现在编程调试器的用户界面上;同时芯片也可以对每组或每个备选端口编织组号并保存于芯片配置信息区,组号也可以体现在编程调试器的用户界面上。对于特定的一款芯片,只支持多组I/O端口可选,或者只支持多个I/O端口可选,两者不能同时兼容在同一款芯片上。
其次,编程调试器从备选的多组I/O端口中选择一组I/O端口或从备选的多个I/O端口中选择一个I/O端口作为待测端口。
具体而言,芯片在上电复位期间,会从芯片配置信息区获取备选端口的组号及其相应的状态(输入状态或者输出状态),编程调试器可以向芯片发送读取备选端口的组号的命令,通过命令来确定待测端口,并通过该待测端口与芯片连接。
在一些实施例中,芯片可以在上电复位期间,获取到各个备选端口的状态(输入状态或者输出状态),并将处于输入状态的备选端口(该端口的状态在芯片工作中可能会受到干扰而变成输出状态)作为待测端口,以及将待测端口的组号发送给编程调试器。
在另一些实施例中,芯片也可以随机从备选端口中选择一组或一个作为待测端口,并将待测端口的组号发送给编程调试器。
当编程调试器通过待测端口与芯片连接时,可以向该待测端口发送入口检测序列,如果锁定成功,例如通过判断入口检测序列中特定配置信息的数值等于第一预设值来确定被正确的接收,则确定该一组或一个I/O端口处于输入状态而可以接收编程调试器后续的输入信息,并锁定该一组或一个I/O端口作为编程调试入口,其中,该特定配置信息中的数值可称为与入口检测序列相关的数值;如果锁定成功,除编程调试相关的电路和锁定的I/O端口运行外,其它功能模块和芯片内核电路等锁定为复位状态;如果锁定失败,例如入口检测序列由于待测端口处于输出状态而未被正确的接收,从而无法获得其特定配置信息中的数值,而是获得无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,则该一组或一个I/O端口锁定失败。其中,无效信息可称为与入口检测序列相关的数值。
接着,如果锁定成功,则芯片可以将编程调试入口设置为输出状态,并可以通过该入口向编程调试器发送锁定成功的反馈信息;如果锁定失败,例如入口检测序列由于待测端口处于输出状态而未被正确的接收,则芯片无法通过该待测端口向编程调试器发送表示锁定成功的反馈信息,编程调试器接收到的可能是该待测端口上的不确定数据,或者编程调试器也可能接收不到任何信息。
然后,如果锁定成功,则可以将编程调试入口设置为输入状态,使得编程调试器可以向芯片发送编程信息和调试命令;如果锁定失败,尤其是连续多次锁定失败或锁定超时时,可以确定端口锁定失效,并且对芯片进行重新上电、复位、重新选择待测端口以进行端口检测。
当端口锁定失效时,芯片可以进行直接复位或间接复位。其中,直接复位可以在确定I/O端口锁定失效时(例如,当锁定超时时,确定I/O端口锁定失效)由芯片中的定时器计数溢出产生复位信号,以使得芯片复位;间接复位需要芯片先从编程调试器获取到复位指令后再进行,例如,当编程调试器向芯片发送预定次数的入口检测序列后仍未收到任何反馈信息时,编程调试器可以向芯片发送复位指令,以使得芯片复位。同时,在编程调试器向芯片的待测端口发送入口检测序列之前,编程调试器也可以先向芯片发送复位指令,复位指令中包含芯片复位延时时间的设置,可设置较大的复位延时时间,以保证在芯片内核复位期间能有足够的时间锁定编程调试入口。
当芯片的多组I/O端口作为备选端口时,其中任一组I/O端口均包括二个I/O端口,其中一个I/O端口作为串行时钟(Serial Clock,SCK)端口以接收时钟信息,另一个I/O端口作为串行数据(Serial Data,SDA)端口以接收和发送数据信息(或称为数据信号),其可以基于时钟信息(或称为时钟信号)而被同步地接收和发送。
当芯片的多个I/O端口作为备选端口时,其中任一个I/O端口可以作为SDA端口以接收和发送数据信息,此时,芯片的内部时钟(其频率例如为4MHz)作为数据接收和发送的同步时钟。单个端口的编程调试方式,兼容标准的UART通讯协议。
为使本发明实施例的目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例进行详细说明。
如图1所示,该芯片锁定编程调试入口的方法100可以包括:
S101,从芯片的I/O端口接收入口检测序列;
S102,判断与入口检测序列相关的数值是否等于第一预设值,若是,则执行步骤S103,若否,则执行步骤S104;
S103,锁定该I/O端口为编程调试入口;
S104,确定该I/O端口锁定失败并将其标识为通用端口。
在步骤S101的执行中,从备选端口中选择一组或一个I/O端口作为待测端口以接收入口检测序列。
在具体实施中,当待测端口处于输入状态时,芯片才可能从待测端口接收到入口检测序列;当待测端口处于输出状态时,芯片并不能从待测端口正确地接收到入口检测序列。
在步骤S102的执行中,可以基于与入口检测序列相关的数值和第一预设值之间的比较来判断待测端口是否处于输入状态。其中,第一预设值可预先保存于芯片处。
在具体实施中,第一预设值可以预先保存于芯片处,并用以配置标识芯片的I/O端口锁定成功的信息。入口检测序列可以包括若干个配置信息,其中一个或多个配置信息为特定配置信息,特定配置信息内的数值可称为与入口检测序列相关的数值,用以匹配第一预设值。
在本发明实施例中,如果芯片能够通过待测端口正确地接收到入口检测序列(即待测端口处于输入状态),则芯片的相关模块(例如检测模块)会解析出入口检测序列中特定配置信息内的数值。如果芯片未能通过待测端口正确地接收到入口检测序列(例如该待测端口处于输出状态),则芯片的相关模块(例如检测模块)无法正确地解析出入口检测序列中特定配置信息内的数值,而是获得无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,无效信息也可称为与入口检测序列相关的数值,但其无法匹配第一预设值。
当与入口检测序列相关的数值等于第一预设值时,可以确定该待测端口处于输入状态,此时执行步骤S103,即锁定该待测端口而作为编程调试入口;当与入口检测序列相关的数值不等于第一预设值时,可以确定该待测端口没有处于输入状态,此时执行步骤S104,即确定该I/O端口锁定失败并将其标识为通用端口。
在一些实施例中,多组I/O端口中的每组I/O端口或多个I/O端口中的每个I/O端口可以配置成共同对应一个第一预设值;相应地,多组I/O端口中的每组I/O端口或多个I/O端口中的每个I/O端口所接收的入口检测序列中特定配置信息内的数值都相同。
如图2所示,入口检测序列可以包括起始位S、检测数据CMD<m:0>和结束位P,其中,m表示检测数据CMD<m:0>的位数。具体而言,位数m表示检测数据CMD<m:0>的长度,其以“位”为单位,一位占据一个bit。
在一些较优的具体示例中,检测数据CMD<m:0>可以包括若干个配置信息,并且其位数可根据功能需求而设置。
具体而言,检测数据CMD<m:0>可以包括比较配置信息、复位延时配置信息、校验码配置信息、滤波配置信息等。其中,比较配置信息中可以设置相应数值(即,第一预设值),其用于与保存于芯片处的第一预设值进行比较,当比较配置信息中的数值等于第一预设值时,表示待测端口处于输入状态,此时,待测端口可以被锁定为编程调试入口,比较配置信息的位数可以大于或等于32,以提高芯片在通信过程的抗干扰能力;复位延时配置信息中可以设置复位延时时间,其用于指示芯片或其端口复位的延时时间;校验码配置信息中可以设置校验码,其用于校验检测数据CMD<m:0>的准确性,例如,CMD<39:32>可为CMD<31:0>的CRC8校验码;滤波配置信息中可以设置用以获取滤波时间,其用于指示芯片进行滤波的时间,相应地,可以在芯片中都设置滤波电路,以避免外围信号的干扰,并提高编程调试入口锁定的可靠性。滤波电路的工作时间,即滤波时间可以基于检测滤波配置信息中的滤波时间确定,滤波时间可以为1ns至99ns。
图3为本发明实施例中的通信协议时序图。
如子图3a所示,芯片的待测端口为多组I/O端口中的一组I/O端口,其中,一个I/O端口作为SCK端口以接收SCK信号,另一个I/O端口作为SDA端口以接收和发送SDA信号。
具体而言,SCK信号用于SDA信号的同步接收。在编程调试器与芯片交互通信的过程中,编程调试器与芯片中的一者可以作为发送端,而另一者可以作为接收端;发送端可以在SCK信号的上升沿发送SDA信号,接收端可以在SCK信号的下降沿采集SDA信号。
例如,在确定编程调试入口的过程中,首先,编程调试器作为发送端发送入口检测序列,此时其可以在SCK信号的上升沿发送SDA信号;其次,芯片可以作为接收端而从处于输入状态的待测端口接收到入口检测序列,此时其可以在SCK信号的下降沿采集到SDA信号;再次,芯片还可以作为发送端而从该待测端口(其改变为输出状态)发送反馈信息,此时其可以在SCK信号的上升沿发送SDA信号。
如子图3b所示,芯片的待测端口为多个I/O端口中的一个I/O端口,该I/O端口可以作为SDA端口以接收和发送数据信息;此时,芯片的内部时钟可以作为数据接收和发送的同步时钟。
如图4所示,与方法100比较,在步骤S103之后,方法200还可以包括:
S201,产生标志位以标识所锁定的I/O端口,并标识其它端口为通用端口。
在具体实施中,芯片中可以设置第一寄存器,其适于产生标志位置一以标识所锁定的I/O端口,每组或者每个被锁定的I/O端口,都对应有独立的标志位。I/O端口被标识则可以进入编程调试模式,该被标识的I/O端口可以用于编程和调试,而未被标识的I/O端口不用于编程和调试。芯片重新上电、复位或者退出编程调试模式后,标志位被清零,所有端口设置为通用端口,此时可以重新选择编程调试端口进行入口序列的检测。
当编程和调试结束时,可以通过编程调试器向被锁定的I/O端口发送退出序列,以使芯片退出编程调试模式。
在具体实施中,退出序列可以包括起始位、退出数据CMDT<mT:0>和结束位,其中,mT表示退出数据CMDT<mT:0>的位数。
在一些实施例中,入口检测序列中的检测数据CMD<m:0>和退出序列中的退出数据CMDT<mT:0>彼此可为互斥码,从而提高数据传输的可靠性。例如,CMD<m:0>和CMDT<mT:0>二者的异或值为0xff。
在另一些实施例中,检测数据CMD<m:0>、退出数据CMDT<mT:0>中的一段数据可以为另一段数据的互斥码或校验码,从而提高数据传输的可靠性。例如,CMD<31:24>和CMD<7:0>彼此为互斥码,CMD<23:16>和CMD<15:8>彼此为互斥码,CMD<39:32>为CMD<31:0>的CRC8校验码。
在本发明实施例中,方法200还可以包括:
基于入口检测序列而输出信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。
在本发明实施例中,如果备选的多组I/O端口中的一组I/O端口或备选的多个I/O端口中的一个I/O端口作为待测端口而被锁定,则芯片可以通过该被锁定的端口(即待测端口)向编程调试器发送表示锁定成功的反馈信息。如果备选的多组I/O端口中的一组I/O端口或备选的多个I/O端口中的一个I/O端口锁定失败,则芯片无法通过该待测端口发送正确的反馈信息,编程调试器可能接收到的是待测端口发送的不确定信息,或者编程调试器也可能接收不到任何信息。
具体而言,如果芯片通过其一组或一个I/O端口正确地接收到入口检测序列(即该I/O端口处于输入状态),则芯片的相关模块(例如检测模块)会解析出入口检测序列中特定配置信息内的数值,并且将其与第一预设值比较,如果二者相等,则可以确定待测端口处于输入状态,并锁定该待测端口,接着通过该被锁定的端口向编程调试器发送反馈信息。如果芯片通过其一组或一个I/O端口未正确地接收到入口检测序列(例如该I/O端口处于输出状态),则芯片的相关模块(例如检测模块)无法正确地解析出入口检测序列中特定配置信息内的数值,而是获得无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,无效信息不等于第一预设值,此时,该I/O端口锁定失败。在该I/O端口锁定失败时,芯片无法通过该I/O端口发送表示锁定成功的反馈信息,而是发送不确定信息或不发送信息。
反馈信息可以表示为DATA<n:0>,其中,n表示反馈信息DATA<n:0>的位数,即表示反馈信息DATA<n:0>的长度,其以“位”为单位,一位占据一个bit,n可以大于或等于8。反馈信息DATA<n:0>可以包括一个或多个配置信息。
在一些实施例中,检测数据CMD<m:0>和反馈信息DATA<n:0>可为互斥码,以提高数据传输的可靠性。
在本发明实施例中,编程调试器可以用以接收反馈信息DATA<n:0>,并以此判断I/O端口是否锁定成功。
在本发明实施例中,方法100和方法200在步骤S104之后,即在确定待测端口锁定失败之后,可以返回执行步骤S101以重新从芯片的I/O端口接收入口检测序列,也可以直接确定待测端口锁定失效。
在具体实施中,当确定待测端口锁定失败之后,可以从不同的一组或一个I/O端口重新接收入口检测序列(即,选择不同的待测端口),如此可以增大锁定编程调试入口的可能性。
在具体实施中,当确定待测端口锁定失败之后,可以停止执行锁定编程调试入口的操作,也可以复位芯片或其I/O端口而重新执行锁定编程调试入口的操作。
在本发明实施例中,当连续N次I/O端口锁定失败和/或锁定超时时,可以确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
如图5所示,与方法200比较,在步骤S104之后,方法300还可以包括:
S301,获取I/O端口锁定失败的累计次数;
S302,判断I/O端口锁定失败的累计次数是否达到预定失败次数N,若是,则执行步骤S303,若否,则返回执行步骤S101;
S303,确定I/O端口锁定失效。
在具体实施中,从首次执行S101开始,N设置为0;每执行一次S101至S104,N累加1,表示I/O端口锁定失败的次数增加了一次。可以在编程调试器中设置计数器来采集I/O端口锁定失败的次数N。
N可以选择,例如为2,即当I/O端口锁定失败的次数达到2次时,确定I/O端口锁定失效;从而既可以在端口锁定失败时尝试进行适当次数的端口检测和锁定,又可以在若干次锁定失败后确定为锁定失效,从而可以及时地进行后续操作,例如,终止I/O端口检测和锁定的操作,或复位芯片或其I/O端口然后再进行I/O端口检测和锁定的操作。
如图6所示,与方法300比较,方法400不是基于I/O端口锁定失败的累计次数,而是基于I/O端口锁定失败的时长判断I/O端口锁定是否失效。
具体而言,与方法300比较,方法400包括:
S401,获取I/O端口锁定失败的时长;
S402,判断I/O端口锁定失败的时长是否达到预定时长,若是,则执行步骤S403,若否,则返回执行步骤S101;
S403,确定I/O端口锁定失效。
在具体实施中,从首次执行步骤S101开始至当前时刻(此时,尚未完成I/O端口锁定)的时长为I/O端口锁定失败的时长。当在预定时长内未完成I/O端口锁定时,则确定I/O端口锁定失效。具体而言,可以在芯片中设置计时器来采集I/O端口锁定失败的时长。
对于I/O端口锁定失效的判断并不限于图5或图6所示示例中的单一判断,还可以结合图5和图6所示示例进行组合判断。例如,可以当连续N次I/O端口锁定失败并且锁定超时时,确定I/O端口锁定失效。
如图7所示,与方法400比较,在步骤S403之后,方法500还可以包括:
S501,进行复位并返回执行步骤S101。
复位可以包括复位芯片或复位芯片中的所有I/O端口。复位还可以包括直接复位或间接复位。其中,直接复位可以在确定I/O端口锁定失效时(例如,当锁定超时时,确定I/O端口锁定失效)由芯片中的定时器计数溢出产生复位信号,以使得芯片复位;间接复位需要芯片先从编程调试器获取到复位指令后再进行。
对于间接复位,可以在确定在I/O端口锁定失效时,例如,在编程调试器向芯片发送预定次数的入口检测序列后仍未收到任何反馈信息而确定I/O端口锁定失效时,通过编程调试器向芯片的待测端口或其他I/O端口发送复位指令以复位芯片。
由于,芯片中处于输入状态的I/O端口不确定,从而会导致复位指令不一定能被芯片接收到,因此,可以向芯片的多个I/O端口同时发送复位指令,以提升芯片接收到复位指令的可能性。如果待测端口的状态已经变为输入状态,或其他I/O端口此时的状态为输入状态,则芯片可以接收到复位指令。
进一步地,复位可以包括直接复位芯片、或直接复位芯片的所有I/O端口、获取复位指令并复位芯片、以及获取复位指令并复位芯片的所有I/O端口。复位后,芯片的各I/O端口可以处于输入状态,并且在芯片运行程序而进行正常通信时用于通信的相应I/O端口可称为通用端口,其可以基于收发信息的要求而动态地调整为输入状态或输出状态。
具体而言,复位指令可以采用类似于入口检测序列的序列表示。例如,复位指令可以包括起始位S’、复位数据CMD’<m’:0>和结束位P’,其中,m’表示复位数据CMD’<m’:0>的位数。具体而言,位数m’表示复位数据CMD’<m’:0>的长度,其以“位”为单位,一位占据一个bit。
复位数据可以基于复位延时时间进行复位,复位延时时间可以设置于检测数据CMD<m:0>的复位延时配置信息内,也可以设置于复位数据CMD’<m’:0>的复位延时配置信息内。芯片在准备复位时,可以获取复位延时时间而延时一段时间再进行复位。
复位延时时间可以配置为多个档位。多个挡位对应的复位延时时间的具体数值可以由编程调试器选择性地设置于检测数据CMD<m:0>的复位延时配置信息内或复位数据CMD’<m’:0>的复位延时配置信息内,例如,由编程调试器自动设置复位延时时间的具体数值,或通过编程调试器的用户界面来设置复位延时时间的具体数值。
例如,复位延时时间可以包括第一档位0ms、第二档位10ms、第三档位20ms、……、第十档位90ms、第十一档位100ms。相应地,可以在芯片中设置有第二寄存器,其用于配置复位延时时间的多个档位信息。
多个挡位的适当选择既可以确保有足够的复位延时时间以使编程调试器发送的信息(例如入口检测序列)被芯片的端口全部接收以及被判断处理,又可以避免过长的复位延时时间使编程调试的效率降低。
例如,当选择较低的复位延时档位时,可以缩短复位时间、提高复位效率;当选择较高的复位延时档位时,可以确保编程调试器发送的信息(例如入口检测序列)完全被芯片接收和处理;当选择适中的档位时,则可以兼顾复位效率和所接收的信息是否完全被芯片接收和判断处理。
在一些实施例中,最大复位延时时间可以大于或等于100ms。
进一步地,芯片或芯片的所有I/O端口的复位均可以包括软复位,或硬复位。其中,软复位为通过配置于芯片中的复位程序来重启芯片或芯片的所有I/O端口,并使芯片或芯片的I/O端口处于默认状态(如输入状态),硬复位为通过对芯片进行下电再重新上电来重启芯片或芯片的所有I/O端口,并使芯片或芯片的I/O端口处于默认状态(如输入状态)。
本发明实施例还提供一种编程调试器锁定编程调试入口的方法。
如图8所示,方法600包括:
S601,向芯片的I/O端口发送入口检测序列;
S602,接收来自芯片基于入口检测序列而发送的信息;
S603,判断该信息是否等于第二预设值,若是,则执行步骤S604,若否,则执行步骤S605;
S604,确定该I/O端口被锁定为编程调试入口;
S605,确定该I/O端口锁定失败。
在具体实施中,可以选择多组I/O端口中的一组或多个I/O端口中的一个I/O端口作为待测端口,并通过编程调试器向待测端口发送入口检测序列,芯片可能会正确地或不正确地接收到入口检测序列,并且根据所获得的、与入口检测序列相关的数值来判断待测端口是否可以被锁定为编程调试入口。当待测端口能够被锁定为编程调试入口时,芯片可以向编程调试器发送表示锁定成功的反馈信息。当待测端口不能被锁定为编程调试入口时,芯片可以向编程调试器发送不确定信息,或者不发送任何信息。
在本发明实施例中,基于预定入口检测序列而发送的信息包括芯片发送的反馈信息和不确定信息。
具体而言,如果芯片通过其一组或一个I/O端口正确地接收到入口检测序列(即该I/O端口处于输入状态),则芯片的相关模块(例如检测模块)会解析出入口检测序列中特定配置信息内的数值,并且将其与第一预设值比较,如果二者相等,则可以确定待测端口处于输入状态,并锁定该待测端口,接着通过该被锁定的端口向编程调试器发送反馈信息。
如果芯片通过其一组或一个I/O端口未正确地接收到入口检测序列(例如该I/O端口处于输出状态),则芯片的相关模块(例如检测模块)无法正确地解析出入口检测序列中特定配置信息内的数值,而是获得无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,无效信息不等于第一预设值,此时,该I/O端口锁定失败,芯片无法通过该一组或一个I/O端口向编程调试器发送反馈信息,而是向编程调试器发送不确定信息。
在本发明实施例中,当编程调试器在接收到反馈信息或不确定信息后,可基于此确定待测端口是否锁定成功。
在具体实施中,第二预设值可以预先保存于编程调试器处,并用以配置标识芯片的I/O端口锁定成功的信息。
当与入口检测序列相关的数值为入口序列的特定配置信息内的数值而其等于第一预设值时,芯片向编程调试器输出反馈信息DATA1<n1:0>。当编程调试器接收到反馈信息DATA1<n1:0>并判断其等于第二预设值时,可以确定待测端口已被锁定为编程调试入口。
当与入口检测序列相关的数值为无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,而其不等于第一预设值时,芯片会向编程调试器发送不确定信息。当编程调试器接收到该不确定信息并且将其中的数据与第二预设值比较时,由于该不确定信息中的数据不等于第二预设值,则可以确定该I/O端口锁定失败。
进一步地,在步骤S601之前还可以包括:向芯片发送复位指令,复位指令包括芯片复位延时时间。
在具体实施中,编程调试器可以先向芯片发送复位指令,复位指令中包含芯片复位延时时间的设置,可设置较大的复位延时时间,以保证在芯片内核复位期间能有足够的时间锁定编程调试入口。
在另一些实施例中,方法600还可以包括:在接收不到芯片基于预定入口检测序列而发送的信息时,执行步骤S605,即在接收不到芯片基于预定入口检测序列而发送的信息时,确定I/O端口锁定失败。例如,当编程调试器向芯片发送预定次数的入口检测序列后仍未收到任何基于预定入口检测序列而发送的信息时,可以确定I/O端口锁定失败。
在本发明实施例中,方法600在步骤S605之后还可以包括:返回执行步骤S601。即,当确定I/O端口锁定失败时,可以重新返回执行步骤S601,即,重新向芯片的I/O端口发送入口检测序列;也可以直接确定I/O端口锁定失效。
在一些较优的具体示例中,可以向不同的I/O端口重新发送入口检测序列(即,重新选择不同的待测端口)。如此,可以提升快速锁定编程调试入口的可能性。
在本发明实施例中,方法600还可以包括:当连续N次I/O端口锁定失败和/或锁定超时时,可以确定I/O端口锁定失效。当I/O端口锁定失效时,编程调试器可以向芯片输出复位指令,以使得芯片可以基于复位指令间接复位芯片或芯片的所有I/O端口。
对于间接复位,可以在确定在I/O端口锁定失效时,例如,在编程调试器向芯片发送预定次数的入口检测序列后仍未收到芯片任何基于预定入口检测序列而发送的信息而确定I/O端口锁定失效时,通过编程调试器向芯片的待测端口或其他I/O端口发送复位指令以复位芯片。
由于,芯片中处于输入状态的I/O端口不确定,从而会导致复位指令不一定能被芯片接收到,因此,可以向芯片的多个I/O端口同时发送复位指令,以提升芯片接收到复位指令的可能性。如果待测端口的状态已经变为输入状态,或其他I/O端口此时的状态为输入状态,则芯片可以接收到复位指令。
本发明实施例中编程调试器锁定编程调试入口的方法中各步骤的执行以及它们之间的关系可以参考上述结合图1至7所述的芯片锁定编程调试入口的方法中的相关描述。
本发明实施例还提供一种锁定编程调试入口的方法。
图9为本发明实施例中锁定编程调试入口的方法的流程图。
如图9所示,该锁定编程调试入口的方法700包括:
S701,编程调试器向芯片的I/O端口发送入口检测序列;
S702,芯片从该I/O端口接收入口检测序列;
S703,芯片判断与入口检测序列相关的数值是否等于第一预设值,若是,则执行步骤S704,若否,则执行步骤S705;
S704,芯片锁定该I/O端口为编程调试入口;
S705,芯片确定该I/O端口锁定失败。
在具体实施中,芯片的I/O端口设置有多组或多个,其中,多组I/O端口中的一组可以被编程调试器或用户选定以作为待测端口,多个I/O端口中的一个可以被编程调试器或用户选定以作为待测端口;通过待测端口接收入口检测序列,判断该待测端口是否可以作为编程调试入口。
上述被编程调试器选定表示,一组或一个I/O端口的选取可以由编程调试器独立执行。具体而言,编程调试器可以从芯片的多组I/O端口中选取一组I/O端口作为待测端口,也可以从芯片的多个I/O端口中选取一个I/O端口作为待测端口。其中,选取可以在备选端口中任意进行,也可以是按照一定规则进行。
上述被用户选定表示,一组或一个I/O端口的选取可以由用户进行。具体而言,可以在编程调试器上设置用户界面,并在用户界面上呈现芯片的所有I/O端中多组I/O端口或多个I/O端口的选择项,以供用户从多组I/O端口中选取一组I/O端口作为待测端口,或从多个I/O端口中选取一个I/O端口作为待测端口。其中,选取可以由用户随意进行,也可以由用户按照一定的规则进行。
编程调试入口表示在芯片正常通信时可以用于编程和调试的I/O端口。
在一些实施例中,当一组I/O端口(包括二个I/O端口)作为待测端口时,一个I/O端口为SCK端口,另一个I/O端口为SDA端口。当一个I/O端口作为待测端口时,该待测端口可以为SDA端口,而芯片的内部时钟作为数据接收和发送的同步时钟。
在具体实施中,在S701之前还可以包括:
编程调试器基于芯片的规格确定备选端口,备选端口为芯片中适于作为编程调试入口的多组或者多个I/O端口;
芯片为备选端口中的每一组或者每一个I/O端口分别配置组号;
编程调试器向芯片发送读取组号的命令;
芯片选择相应的备选端口作为待测端口,并将该待测端口的组号返回给编程调试器。
在一些实施例中,芯片可以在上电复位期间,获取到各个备选端口的状态(输入状态或者输出状态),并将处于输入状态的备选端口(该端口的状态在芯片工作中可能会受到干扰而变成输出状态)作为待测端口,以及将待测端口的组号发送给编程调试器。
在另一些实施例中,芯片也可以随机从备选端口中选择一组或一个作为待测端口,并将待测端口的组号发送给编程调试器。
进一步地,编程调试器向芯片发送用以获取备选端口的组号的命令之前还可以包括:
编程调试器向芯片发送复位指令,复位指令包括芯片复位延时时间。
在具体实施中,编程调试器可以先向芯片发送复位指令,复位指令中包含芯片复位延时时间的设置,可设置较大的复位延时时间,以保证在芯片内核复位期间能有足够的时间锁定编程调试入口。
当待测端口确定后,可以通过编程调试器向待测端口发送入口检测序列。
在步骤S702的执行中,当待测端口处于输入状态时,芯片可以从待测端口正确地接收到入口检测序列;当待测端口处于输出状态时,芯片并不能从待测端口正确地接收到入口检测序列。
在步骤S703的执行中,可以基于与入口检测序列相关的数值与第一预设值的比较来判断待测端口是否处于输入状态。具体而言,当接收到的入口检测序列等于第一预设值时,可以确定待测端口处于输入状态,此时,可以执行步骤S704,即锁定待测端口(即接收入口检测序列的I/O端口)为编程调试入口;当待测端口处于输出状态而不能正确地接收到入口检测序列时,不能将待测端口锁定为编程调试入口,此时,可以执行步骤S705,即确定I/O端口锁定失败。
在一些实施例中,多组I/O端口中的每组I/O端口或多个I/O端口中的每个I/O端口可以配置成共同对应一个第一预设值;相应地,多组I/O端口中的每组I/O端口或多个I/O端口中的每个I/O端口所接收的入口检测序列中特定配置信息内的数值都相同。
当锁定待测端口(即,接收入口检测序列的I/O端口)为编程调试入口时,锁定的I/O端口(可以是一组I/O端口,也可以是一个I/O端口)可以被用于编程和调试,而除锁定的I/O端口外的其他I/O端口为非编程调试入口。
该锁定编程调试入口的方法700还可以包括:产生标志位以标识所锁定的I/O端口。
在具体实施中,芯片中可以设置第一寄存器,其适于产生标志位以标识所锁定的I/O端口。被标识的I/O端口可用于编程和调试;而未被标识的I/O端口不用于编程和调试。
在本发明实施例中,当确定I/O端口锁定失败时可以返回执行步骤S701,即编程调试器重新向芯片的I/O端口发送入口检测序列;也可以直接确定I/O端口锁定失效。
在具体实施中,编程调试器可以向不同的I/O端口发送入口检测序列(即,重新选择不同的待测端口)。如此,可以提升快速锁定编程调试入口的可能性。
参照图9,该锁定编程调试入口的方法700还可以包括:
S706,芯片基于入口检测序列而向编程调试器发送信息;
S707,编程调试器接收该信息;
S708,编程调试器判断该信息是否等于第二预设值,若是,则执行步骤S609,若否,则执行步骤S710;
S709,编程调试器确定该I/O端口被锁定为编程调试入口;
S710,编程调试器确定该I/O端口锁定失败并返回执行步骤S701。
在具体实施中,芯片基于入口检测序列而向编程调试器发送的信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。当芯片接收到的入口检测序列等于第一预设值时,可以锁定待测端口为编程调试入口,由此,芯片可以向编程调试器发送表示锁定成功的反馈信息。当芯片不能正确地接收到入口检测序列时,不能将待测端口锁定为编程调试入口,由此,芯片可以向编程调试器发送表示锁定失败的不确定信息。
在具体实施中,第二预设值可以预先保存于编程调试器处,并用以配置芯片的I/O端口锁定成功的信息。
当与入口检测序列相关的数值为入口序列的特定配置信息内的数值而其等于第一预设值时,芯片向编程调试器输出反馈信息DATA1<n1:0>。当编程调试器接收到反馈信息DATA1<n1:0>并判断其等于第二预设值时,可以确定待测端口已被锁定为编程调试入口。
当与入口检测序列相关的数值为无效信息,例如,获得空的信息(即,没有接收到任何信息)或一串乱码,而其不等于第一预设值时,芯片会向编程调试器发送不确定信息。当编程调试器接收到该不确定信息并且将其中的数据与第二预设值比较时,由于该不确定信息中的数据不等于第二预设值,则可以确定该I/O端口锁定失败。
在本发明实施例中,当待测端口锁定失败时,可以返回执行步骤S701。即,编程调试器重新向芯片的I/O端口发送入口检测序列。
在具体实施中,编程调试器可以向不同的I/O端口(即,不同的待测端口)发送入口检测序列。
进一步地,方法700还可以包括:当连续N次I/O端口锁定失败或锁定超时时,确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
具体而言,可以包括:
当确定I/O端口锁定失败时,获取I/O端口锁定失败的累计次数;
判断I/O端口锁定失败的累计次数是否达到预定失败次数N,若否,则返回执行步骤S601,若是,则确定I/O端口锁定失效。
在具体实施中,从首次执行S701开始,N设置为0;每执行一次S701至S710,N累加1,表示I/O端口锁定失败的次数增加了一次。可以在编程调试器中设置计数器来采集I/O端口锁定失败的次数N。
N可以选择,例如为2,即当I/O端口锁定失败的次数达到2次时,确定I/O端口锁定失效;从而既可以在I/O端口锁定失败时尝试进行适当次数的端口检测和锁定,又可以在若干次锁定失败后确定为锁定失效,从而可以及时地进行后续操作,例如,终止I/O端口检测和锁定的操作,或复位芯片或其I/O端口然后再进行I/O端口检测和锁定的操作。
方法700还可以包括:
获取I/O端口锁定失败的时长;
判断I/O端口锁定失败的时长是否达到预定时长,若否,则返回执行步骤S601,若是,则确定I/O端口锁定失效。
在具体实施中,从首次执行步骤S701开始至当前时刻(此时,尚未完成I/O端口锁定)的时长为I/O端口锁定失败的时长。当在预定时长内未完成I/O端口锁定时,则确定I/O端口锁定失效。具体而言,可以在芯片中设置计时器来采集I/O端口锁定失败的时长。
对于I/O端口锁定失效的判断并不限于分别基于上述两种方式(一种为判断是否连续N次I/O端口锁定失败,另一种为判断是否锁定超时),还可以基于上述两种方式的组合。例如,可以当连续N次I/O端口锁定失败并且锁定超时时,确定I/O端口锁定失效。
方法700还可以包括:
当I/O端口锁定失效时,芯片基于复位延时时间进行复位并返回执行步骤S701。
复位可以包括复位芯片或复位芯片中的所有I/O端口。复位还可以包括直接复位或间接复位;其中,直接复位可以在确定I/O端口锁定失效时由芯片执行,而间接复位需要芯片先获取到复位指令后再进行。
进一步地,复位可以包括直接复位芯片、或直接复位芯片的所有I/O端口、获取复位指令并复位芯片、以及获取复位指令并复位芯片的所有I/O端口。复位后,芯片的各端口可以处于输入状态,并且在芯片运行程序而进行正常通信时用于通信的相应端口可称为通用端口,其可以基于收发信息的要求而动态地调整为输入状态或输出状态。
进一步地,芯片或芯片的所有I/O端口的复位均可以包括软复位,或硬复位。其中,软复位为通过配置于芯片中的复位程序来重启芯片或芯片的所有I/O端口,并使芯片或芯片的I/O端口处于默认状态(如输入状态),硬复位为通过对芯片进行下电再重新上电来重启芯片或芯片的所有I/O端口,并使芯片或芯片的I/O端口处于默认状态(如输入状态)。
方法700还可以包括:
当I/O端口锁定失效时,编程调试器向芯片发送复位指令。
例如,可以在编程调试器向芯片发送预定次数的入口检测序列后仍未收到任何反馈信息时,确定I/O端口锁定失效,并通过编程调试器向芯片的待测端口或其他I/O端口发送复位指令以复位芯片。
由于,芯片中处于输入状态的I/O端口不确定,从而会导致复位指令不一定能被芯片接收到,因此,可以向芯片的多个I/O端口同时发送复位指令,以提升芯片接收到复位指令的可能性。如果待测端口的状态已经变为输入状态,或其他I/O端口此时的状态为输入状态,则芯片可以接收到复位指令。
具体而言,复位指令可以采用类似于入口检测序列的序列表示。例如,复位指令可以包括起始位S’、复位数据CMD’<m’:0>和结束位P’,其中,m’表示复位数据CMD’<m’:0>的位数。具体而言,位数m’表示复位数据CMD’<m’:0>的长度,其以“位”为单位,一位占据一个bit。
可以基于复位延时时间进行复位,复位延时时间可以设置于检测数据CMD<m:0>的复位延时配置信息内,也可以设置于复位数据CMD’<m’:0>的复位延时配置信息内。芯片在准备复位时,可以获取复位延时时间而延时一段时间再进行复位。
复位延时时间可以配置为多个档位。多个挡位对应的复位延时时间的具体数值可以由编程调试器选择性地设置于检测数据CMD<m:0>的复位延时配置信息内或复位数据CMD’<m’:0>的复位延时配置信息内,例如,由编程调试器自动设置复位延时时间的具体数值,或通过编程调试器的用户界面来设置复位延时时间的具体数值。
例如,复位延时时间可以包括第一档位0ms、第二档位10ms、第三档位20ms、……、第十档位90ms、第十一档位100ms。相应地,可以在芯片中设置有第二寄存器,其用于配置复位延时时间的多个档位信息。
多个挡位的适当选择既可以确保有足够的复位延时时间以使编程器发送的信息(例如入口检测序列)被芯片的端口全部接收以及被判断处理,又可以避免过长的复位延时时间使编程调试的效率降低。
例如,当选择较低的复位延时档位时,可以缩短复位时间、提高复位效率;当选择较高的复位延时档位时,可以确保编程调试器发送的信息(例如入口检测序列)完全被芯片接收和处理;当选择适中的档位时,则可以兼顾复位效率和所接收的信息是否完全被芯片接收和判断处理。
在一些实施例中,最大复位延时时间可以大于或等于100ms。
方法700还可以包括:
当I/O端口锁定失效时,芯片产生失效信号,并基于失效信号设置复位延时时间。
在一些实施例中,芯片可以基于失效信号设置复位延时时间为最大复位延时时间,以避免复位延时时间过长而使得编程调试的效率降低。
本发明实施例中锁定编程调试入口的方法中各步骤的执行以及它们之间的关系可以参考上述结合图1至8所述的芯片锁定编程调试入口的方法和编程调试器锁定编程调试入口的方法中的相关描述。
在本发明实施例中,还提供一种锁定编程调试入口的系统。
图10为本发明实施例中锁定编程调试入口的系统的示意图。
如图10所示,该锁定编程调试入口的系统700包括芯片710和编程调试器820。
芯片810包括VDD1端口、VSS1端口、若干个I/O端口以及与若干个I/O端口连接的检测模块811。
VDD1端口表示工作电源端口,VSS1端口表示接地端口。
若干个I/O端口,图中示意了PA0、PB0、PB1、PB2、PC0、PC1、PC2、PD0、PD1、PD2等,其中的至少一组或一个I/O端口可用于正常通信或用于接收入口检测序列,从而进行通信信息的收和/或发。尽管图中仅示意了检测模块811与部分I/O端口的连接,应理解,检测模块811可以与任何I/O端口连接。
检测模块811适于判断与入口检测序列相关的数值是否等于第一预设值,并在二者相等时锁定该I/O端口为编程调试入口、以及在二者不相等时确定所述I/O端口锁定失败。
在具体实施中,若干个I/O端口可以包括若干个I/O端口或若干个组I/O端口。例如,若干个I/O端口可以包括PA0、PA1、PA2…PB0、PB1、PB2…PC0、PC1、PC2…PD0、PD1、PD2…,其中,每二个I/O端口可以组成一组I/O端口。
当芯片810包括若干个组I/O端口时,每一组I/O端口分别配置有一个入口检测序列;当芯片810包括若干个I/O端口时,每一个I/O端口分别配置有一个入口检测序列。
在具体实施中,芯片810还可以包括与检测模块811连接的第一寄存器,其适于产生标志位以标识所锁定的I/O端口。
在具体实施中,检测模块811还适于基于所述入口检测序列而向编程调试器输出信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。
在具体实施中,检测模块811适于在连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,锁定超时表示在预定时长内未完成I/O端口锁定。
在具体实施中,芯片810还可以包括与检测模块811连接的延时复位模块,其适于在I/O端口锁定失效时基于复位延时时间进行复位,复位包括直接复位芯片810或直接复位芯片810的所有I/O端口,或获取复位指令并复位芯片810或芯片810的所有I/O端口。
在具体实施中,芯片810还可以包括与检测模块811连接的第二寄存器,其用以配置复位延时时间的多个档位信息。
在具体实施中,芯片810还可以包括与检测模块811连接的计时器,其适于采集I/O端口锁定失败的时长。
在具体实施中,检测模块811还适于在I/O端口锁定失效时,接收编程调试器820发送的复位指令。
编程调试器820包括VDD2端口、VSS2端口、编程调试入口821和处理模块(图10中未示出)。
VDD2端口表示工作电源端口,VSS2端口表示接地端口,其中,VDD2端口与芯片810的VDD1端口连接,VSS2端口与芯片810的VSS1端口连接。
编程调试入口821与芯片810的若干个I/O端口连接,并适于向芯片810的I/O端口输出入口检测序列以及接收芯片基于入口检测序列而产生的信息,该信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息。
处理模块适于判断该信息是否等于第二预设值,并在二者相等时确定I/O端口被锁定为编程调试入口、以及在二者不相等时确定I/O端口锁定失败。
在编程调试器确定I/O端口锁定失败时,可以重新向芯片810发送入口检测序列。具体而言,可以向芯片810的不同I/O端口发送入口检测序列。
在具体实施中,处理模块还适于在编程调试口821接收不到该信息时确定I/O端口锁定失败。
在具体实施中,处理模块还适于在连续N次I/O端口锁定失败时确定I/O端口锁定失效,其中,N≥1,以及在I/O端口锁定失效时输出复位指令。
在具体实施中,编程调试器820还可以包括存储器,其适于存储入口检测序列、第二预设值以及复位指令。
在具体实施中,编程调试器820还可以包括与处理模块连接的计数器,其适于采集I/O端口锁定失败的累计次数并且发送至芯片810。
本发明实施例中芯片、编程调试器以及包括这二者的系统均可以参考上述结合图1至9所述的芯片锁定编程调试入口的方法、编程调试器锁定编程调试入口的方法、以及锁定编程调试入口的方法中的相关描述。
尽管上文已经描述了具体实施方案,但这些实施方案并非要限制本发明公开的范围,即使仅相对于特定特征描述单个实施方案的情况下也是如此。本发明公开中提供的特征示例意在进行例示,而非限制,除非做出不同表述。在具体实施中,可根据实际需求,在技术上可行的情况下,将一项或多项从属权利要求的技术特征与独立权利要求的技术特征进行组合,并可通过任何适当的方式而不是仅通过权利要求书中所列举的特定组合来组合来自相应独立权利要求的技术特征。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (28)
1.一种芯片锁定编程调试入口的方法,其特征在于,包括:
S101,从所述芯片的I/O端口接收入口检测序列;所述I/O端口为从备选端口中选择的至少一组或至少一个I/O端口,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口,所述备选端口由编程调试器基于所述芯片的规格确定;
S102,判断与所述入口检测序列相关的数值是否等于第一预设值,若是,则锁定所述I/O端口为编程调试入口,若否,则确定所述I/O端口锁定失败并将其标识为通用端口;基于所述入口检测序列而输出信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;
其中,与所述入口检测序列相关的数值包括所述入口检测序列中特定配置信息的数值和无效信息,所述特定配置信息的数值为所述第一预设值,所述无效信息为空的信息或乱码。
2.根据权利要求1所述的方法,其特征在于,包括:产生标志位以标识所锁定的I/O端口。
3.根据权利要求1所述的方法,其特征在于,包括:当所述I/O端口锁定失败时返回执行步骤S101。
4.根据权利要求3所述的方法,其特征在于,包括:当连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,所述锁定超时表示在预定时长内未完成I/O端口锁定。
5.根据权利要求4所述的方法,其特征在于,包括:当I/O端口锁定失效时基于复位延时时间进行复位并返回执行步骤S101;
其中,所述复位包括:直接复位所述芯片或所述芯片的所有I/O端口,或获取复位指令并复位所述芯片或所述芯片的所有I/O端口。
6.根据权利要求5所述的方法,其特征在于,包括:基于复位延时配置信息获取所述复位延时时间,其中,所述复位延时配置信息包括于所述入口检测序列或所述复位指令内。
7.根据权利要求5或6所述的方法,其特征在于,所述复位延时时间大于或等于100ms。
8.一种编程调试器锁定编程调试入口的方法,其特征在于,包括:
S601,向芯片的I/O端口发送入口检测序列;所述I/O端口为从备选端口中选择的一组或一个I/O端口,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口,所述备选端口由编程调试器基于所述芯片的规格确定;
S602,接收来自所述芯片基于所述入口检测序列而发送的信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;
S603,判断所述信息是否等于第二预设值,若是,则确定所述I/O端口被锁定为编程调试入口,若否,则确定所述I/O端口锁定失败。
9.根据权利要求8所述的方法,其特征在于,在S601之前包括:向所述芯片发送复位指令,所述复位指令包括芯片复位延时时间。
10.根据权利要求8所述的方法,其特征在于,包括:在接收不到所述信息时,确定所述I/O端口锁定失败。
11.根据权利要求8或10所述的方法,其特征在于,包括:当确定所述I/O端口锁定失败时返回执行步骤S601。
12.根据权利要求11所述的方法,其特征在于,包括:
当连续N次I/O端口锁定失败时确定I/O端口锁定失效,其中,N≥1;
在I/O端口锁定失效时输出复位指令。
13.一种锁定编程调试入口的方法,其特征在于,包括:
S701,编程调试器向芯片的I/O端口发送入口检测序列;所述I/O端口为从备选端口中选择的至少一组或至少一个I/O端口,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口,所述备选端口由编程调试器基于所述芯片的规格确定;
S702,所述芯片从所述I/O端口接收入口检测序列,并判断与所述入口检测序列相关的数值是否等于第一预设值,若是,则锁定所述I/O端口为编程调试入口,若否,则确定所述I/O端口锁定失败;所述芯片基于所述入口检测序列而输出信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;
在S701之前,所述编程调试器基于所述芯片的规格确定备选端口,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口;所述编程调试器向所述芯片发送读取备选端口组号的命令;所述芯片选择相应的备选端口作为待测端口,并将该待测端口的组号返回给所述编程调试器;
其中,与所述入口检测序列相关的数值包括所述入口检测序列中特定配置信息的数值和无效信息,所述特定配置信息的数值为所述第一预设值,所述无效信息为空的信息或乱码。
14.根据权利要求13所述的方法,其特征在于,包括:
所述芯片基于所述入口检测序列而向所述编程调试器发送信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;
所述编程调试器接收所述信息,并判断所述信息是否等于第二预设值,若是,则确定所述I/O端口被锁定为编程调试入口,若否,则确定所述I/O端口锁定失败并返回执行步骤S701。
15.根据权利要求14所述的方法,其特征在于,包括:所述编程调试器在接收不到所述信息时,确定所述I/O端口锁定失败。
16.根据权利要求13至15中任一项所述的方法,其特征在于,包括:当连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,所述锁定超时表示在预定时长内未完成I/O端口锁定。
17.根据权利要求16所述的方法,其特征在于,包括:当I/O端口锁定失效时,所述芯片基于复位延时时间进行复位并返回执行步骤S701;其中,所述复位包括:直接复位所述芯片或所述芯片的所有I/O端口,或获取复位指令并复位所述芯片或所述芯片的所有I/O端口。
18.根据权利要求17所述的方法,其特征在于,包括:
当I/O端口锁定失效时,所述编程调试器向所述芯片发送所述复位指令。
19.根据权利要求17或18所述的方法,其特征在于,包括:当I/O端口锁定失效时,所述芯片基于复位延时配置信息获取所述复位延时时间,其中,所述复位延时配置信息包括于所述入口检测序列内或所述复位指令内。
20.根据权利要求13所述的方法,其特征在于,所述编程调试器向所述芯片发送用以获取备选端口的组号的命令之前包括:
所述编程调试器向所述芯片发送复位指令,所述复位指令包括芯片复位延时时间。
21.一种芯片,其特征在于,包括:
若干个I/O端口,其中至少一组或一个I/O端口适于接收入口检测序列;所述至少一组或一个I/O端口从备选端口中选择,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口,所述备选端口由编程调试器基于所述芯片的规格确定;
与所述至少一组或一个I/O端口连接的检测模块,所述检测模块适于判断所接收的与所述入口检测序列相关的数值是否等于第一预设值,并在二者相等时锁定所述I/O端口为编程调试入口、以及在二者不相等时确定所述I/O端口锁定失败;所述芯片还适于基于所述入口检测序列而输出信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;
其中,与所述入口检测序列相关的数值包括所述入口检测序列中特定配置信息的数值和无效信息,所述特定配置信息的数值为所述第一预设值,所述无效信息为空的信息或乱码。
22.根据权利要求21所述的芯片,其特征在于,包括与所述检测模块连接的第一寄存器,其适于产生标志位以标识所锁定的I/O端口。
23.根据权利要求21所述的芯片,其特征在于,所述检测模块适于在连续N次I/O端口锁定失败或锁定超时时确定I/O端口锁定失效,其中,N≥1,所述锁定超时表示在预定时长内未完成I/O端口锁定。
24.根据权利要求23所述的芯片,其特征在于,包括与所述检测模块连接的复位延时模块,其适于在I/O端口锁定失效时基于复位延时时间进行复位,所述复位包括直接复位所述芯片或所述芯片的所有I/O端口,或获取复位指令并复位所述芯片或所述芯片的所有I/O端口。
25.一种编程调试器,其特征在于,包括:
编程调试入口,其适于向芯片的I/O端口输出入口检测序列以及接收基于所述入口检测序列而产生的信息,所述信息包括表示锁定成功的反馈信息和表示锁定失败的不确定信息;所述编程调试器还适于基于所述芯片的规格确定备选端口,所述备选端口为所述芯片中适于作为编程调试入口的多组或者多个I/O端口;所述编程调试器向所述芯片发送读取组号的命令;所述芯片选择相应的备选端口作为待测端口,并将该待测端口的组号返回给所述编程调试器;
处理模块,其适于判断所述信息是否等于第二预设值,并在二者相等时确定所述I/O端口被锁定为编程调试入口、以及在二者不相等时确定所述I/O端口锁定失败。
26.根据权利要求25所述的编程调试器,其特征在于,所述处理模块适于在所述编程调试入口接收不到所述信息时确定I/O端口锁定失败。
27.根据权利要求25或26所述的编程调试器,其特征在于,所述处理模块适于在连续N次I/O端口锁定失败时确定I/O端口锁定失效,其中,N≥1,以及在I/O端口锁定失效时输出复位指令。
28.一种锁定编程调试入口的系统,其特征在于,包括如权利要求21至24中任一项所述的芯片和如权利要求25至27中任一项所述的编程调试器,其中,所述芯片的若干个I/O端口与所述编程调试器的编程调试入口连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011263296.8A CN112380119B (zh) | 2020-11-12 | 2020-11-12 | 芯片、编程调试器、系统及锁定编程调试入口的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011263296.8A CN112380119B (zh) | 2020-11-12 | 2020-11-12 | 芯片、编程调试器、系统及锁定编程调试入口的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380119A CN112380119A (zh) | 2021-02-19 |
CN112380119B true CN112380119B (zh) | 2024-08-16 |
Family
ID=74583511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011263296.8A Active CN112380119B (zh) | 2020-11-12 | 2020-11-12 | 芯片、编程调试器、系统及锁定编程调试入口的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380119B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823662A (zh) * | 2012-11-19 | 2014-05-28 | 比亚迪股份有限公司 | 一种进入编程模式的切换控制方法及装置 |
CN108460296A (zh) * | 2016-12-09 | 2018-08-28 | 上海新微技术研发中心有限公司 | 一种具有调试接口安全机制的soc芯片及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4099234A (en) * | 1976-11-15 | 1978-07-04 | Honeywell Information Systems Inc. | Input/output processing system utilizing locked processors |
US6584590B1 (en) * | 1999-08-13 | 2003-06-24 | Lucent Technologies Inc. | JTAG port-sharing device |
JP2009258857A (ja) * | 2008-04-14 | 2009-11-05 | Toshiba Corp | デバッグ装置及びデバッグ方法 |
US20150019775A1 (en) * | 2013-03-14 | 2015-01-15 | Microchip Technology Incorporated | Single Wire Programming and Debugging Interface |
CN106531654B (zh) * | 2016-11-14 | 2019-04-16 | 福州瑞芯微电子股份有限公司 | 一种芯片输入引脚测试方法和装置 |
-
2020
- 2020-11-12 CN CN202011263296.8A patent/CN112380119B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823662A (zh) * | 2012-11-19 | 2014-05-28 | 比亚迪股份有限公司 | 一种进入编程模式的切换控制方法及装置 |
CN108460296A (zh) * | 2016-12-09 | 2018-08-28 | 上海新微技术研发中心有限公司 | 一种具有调试接口安全机制的soc芯片及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112380119A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180066049A (ko) | 통신 장치, 통신 방법, 프로그램, 및, 통신 시스템 | |
US8713367B2 (en) | Apparatus and method for recording reboot reason of equipment | |
EP2249227A1 (en) | Interface device for host device, interface device for slave device, host device, slave device, communication system and interace voltage switching method | |
CN108279910B (zh) | 程序代码烧写方法、装置、计算机设备和存储介质 | |
CN103618588A (zh) | 一种自动波特率检测方法及检测模块 | |
CN113419926B (zh) | 一种服务器bios启动进程的监测方法、系统及装置 | |
CN112328467B (zh) | 一种嵌入式系统程序测试方法及装置 | |
CN112380119B (zh) | 芯片、编程调试器、系统及锁定编程调试入口的方法 | |
CN109428778B (zh) | 主板网络连通性测试方法及装置 | |
CN115658412A (zh) | 一种单线调试方法、装置、mcu芯片、调试器及系统 | |
JP6803345B2 (ja) | 無線周波数(rf)データパケット信号送受信機のパケット誤り率を試験する方法 | |
CN112015119B (zh) | 调试控制电路和调试控制方法 | |
US9935731B2 (en) | Communication apparatus, lens apparatus and image pickup apparatus including the same | |
CN115599191B (zh) | 智能网卡的上电方法及上电装置 | |
CN105791514B (zh) | 一种应用启动监测方法及装置 | |
CN113626310B (zh) | 一种开发调试系统、待测设备和调试方法 | |
CN112380036B (zh) | 机车信号主机软件系统 | |
CN113655773B (zh) | 一种车机系统通信串口压力测试系统及方法 | |
CN104142839A (zh) | 一种防止音频芯片初始化失效的方法 | |
RU2018139479A (ru) | Устройство связи, способ связи, программа и система связи | |
KR20190008196A (ko) | 통신 장치, 통신 방법, 프로그램, 및, 통신 시스템 | |
CN103823662A (zh) | 一种进入编程模式的切换控制方法及装置 | |
JP4466372B2 (ja) | マイクロプロセッサのモニタ回路により伝送されるメッセージの時間的相関 | |
CN113645093A (zh) | 一种待测设备、开发调试系统和通信方法 | |
US20220187788A1 (en) | Automatic Assignment of Device Debug Communication Pins |
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 |