基于双向握手实现进入烧写模式的方法及系统与流程

文档序号:16247458发布日期:2018-12-11 23:42阅读:183来源:国知局
基于双向握手实现进入烧写模式的方法及系统与流程

本发明涉及微电子技术领域,尤其涉及flash烧写技术领域,具体是指一种基于双向握手实现进入烧写模式的方法及系统。

背景技术

现有技术中的带flash(mtp(multipletimeprogramable,多次可编程))的芯片,进入烧写模式,有三种方法:

1、用单独一个测试管脚,高电平表示需要对flash进行烧写,低电平表示正常功能;

2、将某个芯片管脚加高压进入flash烧写模式;

3、在复位期间,打入测试指令进入flash烧写模式;

上述三种方法,都存在一定的弊病:

1、需要单独一个管脚,有时候芯片管脚不够用,根本就没有多余的管脚位置将这个测试管脚封装出来,专门为这个管脚增加封装管脚数目,从芯片成本来说不经济;

2、将芯片管脚加高压的方式很容易引起加高压的管脚的高压电压和电路的正常电压串扰;

3、在复位期间打指令,上电到数字电压稳定,根据外围负载不一样,所需要的时间不一样,一般这个数量级是毫秒级别,有些芯片由于多芯片协同工作,所以要求复位结束时间比较早,比如10ms以内,那么中间可以外打指令的时间只有从数字电压稳定到复位结束这一小段时间,这个对于外部烧写器件来说是一件很麻烦的事情,烧写人员经常会出现打入烧写指令不成功的现象,这个方法虽然可以控制外部复位脚延长复位时间来避免,目前有些客户为了节省成本,外部复位脚在方案板上直接悬空处理,采用该方法,复位管脚悬空,导致无法利用复位管脚为复位时,打入指令,进行flash烧写,会使用户成本增加,使用不方便。



技术实现要素:

本发明的目的是克服了上述现有技术的缺点,提供了一种能够基于双向握手实现进入烧写模式的方法及系统。

为了实现上述目的,本发明具有如下构成:

该基于双向握手实现进入烧写模式的方法,包括以下步骤:

(1)烧写工具通过改变scl信号通知芯片需要进入烧写模式,并对芯片进行上电复位或外部复位;

(2)所述的芯片检测到scl信号发生改变后,开始对烧写进行准备工作并通过改变sda信号通知所述的烧写工具;

(3)所述的烧写工具检测到sda信号发生改变后,对烧写进行准备工作,在烧写工具完成准备工作后,通过再次改变scl信号通知所述的芯片;

(4)所述的芯片再次检测到scl信号发生改变后,完成烧写的准备工作并通过再次改变sda信号通知所述的烧写工具;

(5)所述的烧写工具再次检测到sda信号发生改变后准备进入烧写模式,在收到与烧写模式对应的指令码时进入烧写模式;

(6)通过相应的命令,对flash或mtp进行擦除操作、烧写操作、读出操作中的一种或组合;

(7)芯片进入正常工作状态。

较佳地,所述的步骤(1)与步骤(2)之间还包括以下步骤:

(1-1)所述的芯片判断是否检测到scl信号发生改变,如果是,则继续步骤(2),否则继续步骤(1-2);

(1-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(1-1)。

较佳地,所述的(2)与步骤(3)之间还包括以下步骤:

(2-1)所述的烧写工具判断是否检测到sda信号发生改变,如果是,则继续步骤(3),否则继续步骤(2-2);

(2-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(2-1)。

较佳地,所述的(3)与步骤(4)之间还包括以下步骤:

(3-1)所述的芯片判断是否再次检测到scl信号发生改变,如果是,则继续步骤(4),否则继续步骤(3-2);

(3-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(3-1)。

更佳地,所述的(5)具体包括以下步骤:

(5-1)所述的烧写工具再次检测到sda信号发生改变后向所述的芯片输入译码指令;

(5-2)所述的芯片判断所述的烧写工具输入的译码指令是否与烧写模式对应的译码指令一致,如果是将超时计数器复位并进入烧写模式,否则继续步骤(7)。

还包括一种用于实现上述方法的基于双向握手的实现进入烧写模式的系统,该系统包括烧写工具、具有上拉或下拉功能的双向管脚的芯片,以及至少一个超时计数器,所述的烧写工具的scl端与所述的芯片的scl端相连接,所述的烧写工具的sda端与所述的芯片的sda端相连接。

采用了该发明中的基于双向握手实现进入烧写模式的方法及系统,不需要单独封装测试管脚出来,降低了封装成本;不需要在某个管脚外加高于电源的高压信号,有效减少电源串扰;也不需要借助外部复位管脚,软件人员不用反复测试以寻找合适的打入烧写指令的时间,简化了软件人员操作,降低无法正常进入烧写模式的概率,具有广泛的应用范围。

附图说明

图1为本发明的基于双向握手实现进入烧写模式的方法及系统的双向芯片的管脚特性示意图。

图2为本发明的基于双向握手实现进入烧写模式的方法及系统的整体的示意图。

图3为本发明的基于双向握手实现进入烧写模式的方法及系统的芯片内部进入测试模式的示意图。

图4为本发明的基于双向握手实现进入烧写模式的方法的流程示意图。

图5为本发明的基于双向握手实现进入烧写模式的方法的握手机制的时序示意图。

具体实施方式

为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

该基于双向握手实现进入烧写模式的方法,包括以下步骤:

(1)烧写工具通过改变scl信号通知芯片需要进入烧写模式,并对芯片进行上电复位或外部复位;

(2)所述的芯片检测到scl信号发生改变后,开始对烧写进行准备工作并通过改变sda信号通知所述的烧写工具;

(3)所述的烧写工具检测到sda信号发生改变后,对烧写进行准备工作,在烧写工具完成准备工作后,通过再次改变scl信号通知所述的芯片;

(4)所述的芯片再次检测到scl信号发生改变后,完成烧写的准备工作并通过再次改变sda信号通知所述的烧写工具;

(5)所述的烧写工具再次检测到sda信号发生改变后准备进入烧写模式,在收到与烧写模式对应的指令码时进入烧写模式;

(6)通过相应的命令,对flash或mtp进行擦除操作、烧写操作、读出操作中的一种或组合;

(7)芯片进入正常工作状态。

在一种较佳的实施方式中,所述的步骤(1)与步骤(2)之间还包括以下步骤:

(1-1)所述的芯片判断是否检测到scl信号发生改变,如果是,则继续步骤(2),否则继续步骤(1-2);

(1-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(1-1)。

在一种较佳的实施方式中,所述的(2)与步骤(3)之间还包括以下步骤:

(2-1)所述的烧写工具判断是否检测到sda信号发生改变,如果是,则继续步骤(3),否则继续步骤(2-2);

(2-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(2-1)。

在一种较佳的实施方式中,所述的(3)与步骤(4)之间还包括以下步骤:

(3-1)所述的芯片判断是否再次检测到scl信号发生改变,如果是,则继续步骤(4),否则继续步骤(3-2);

(3-2)超时计数器判断是否超时,如果是,则继续步骤(7),否则继续步骤(3-1)。

在一种更佳的实施方式中,所述的(5)具体包括以下步骤:

(5-1)所述的烧写工具再次检测到sda信号发生改变后向所述的芯片输入译码指令;

(5-2)所述的芯片判断所述的烧写工具输入的译码指令是否与烧写模式对应的译码指令一致,如果是将超时计数器复位并进入烧写模式,否则继续步骤(7)。

还包括一种用于实现上述方法的基于双向握手的实现进入烧写模式的系统,该系统包括烧写工具、具有上拉或下拉功能的双向管脚的芯片,以及至少一个超时计数器,所述的烧写工具的scl端与所述的芯片的scl端相连接,所述的烧写工具的sda端与所述的芯片的sda端相连接。

在本发明的技术方案中,需要选择芯片中两个双向管脚(可以是普通gpio管脚,也可以用i2c管脚),需要管脚带上拉或下拉功能的。下面以两个带上拉功能的i2c管脚为例说明:

1、双向芯片管脚特性(工艺库都有这种标准的双向管脚):

如图1所示,当oen为1时,表示这个管脚处于输入状态,如果没有外部信号驱动pad(就是pad值为z),由于输入信号上拉的原因,则输入端c端收到的信号值为1;当pad上有外部信号驱动时,则c端收到的信号值为外部驱动的信号值。当oen为0时,pad总线反应的值为i端的值。为了避免总线冲突,我们将i端接常数0,当需要输出0电平到总线上时,控制oen管脚为0即可,其他情况由于管脚上拉,总线上可以观测到的数值为1。

2、烧写整体方案:

如图2和图3所示,烧写工具通过在芯片上电复位(或者外部复位)期间,对芯片进行烧写指令进入的握手机制,握手成功后,紧接着打入一串指令,根据指令的内容不同,进入不同的测试模式,比如0x5a是flash烧写模式,比如0x23是memory测试模式,比如0x12是模拟测试模式等。打入指令码的长度根据设计需要可以长,可以短,为了避免噪声干扰误进入测试模式,指令码可以设计得稍微长一点,当然在指令码中加入一些纠错码和加密功能也是可以的。同时指令码较长,硬件成本也会相应增加。

3、握手机制

如图4和图5所示所示,芯片的scl和sda管脚默认为上拉输入状态,需要进入烧写模式时,烧写工具先将scl信号拉低,然后对芯片上电或者对芯片进行外部复位(芯片上有外部复位管脚的芯片,没有外部复位管脚的芯片直接上电就行了)。芯片内部状态机处于开始状态。检测到sda为0时,烧写工具将scl信号拉高,高速芯片烧写工具已经准备好了,可以随时准备外打指令。当烧写工具再次检测到sda信号为高电平,表示芯片已经准备好了,可以接收外打指令,这时可以立即开始外打指令。

以下为具体步骤:

1)开始状态:

a、状态跳转条件:

—检测到scl信号为低电平,则进入握手机制状态;

—否则,检测是否超时,如果超时则进入正常工作状态;

—否则,停留在开始状态。

b、内部状态动作:

这个状态下,sda_oen为1,sda管脚保留为输入状态,sda信号弱上拉为1(如图5中的t1所示)。

2)握手机制状态:

a、状态跳转条件:

—检测到scl信号为高电平,则进入指令译码状态;

—否则,检测是否超时,如果超时则进入正常工作状态;

—否则,停留在握手机制状态。

b、内部状态动作:

这个状态下,sda_oen为0,由于输出信号sda_i接的是常数0,sda总线上为0(如图5中的t2所示)。烧写工具收到sda为0后,准备进入外打指令状态,准备就绪后,将scl信号拉高(如图5中的t3所示)。

3)指令译码状态:

a、状态跳转条件:

—烧写使能信号变为高电平,则进入烧写模式状态;

—否则,检测是否超时,如果超时则进入正常工作状态;

—否则,停留在指令译码状态。

b、内部状态动作:

这个状态下,sda_oen为1,sda管脚保留为输入状态,sda信号在烧写工具外打指令之前为弱上拉1,在烧写工具外打指令时,sda信号与烧写工具加载信号一致。烧写工具收到sda为1后,开始外打指令。外打指令结束后,打入的指令与烧写模式对应的译码指令一致,则烧写使能信号会变高,将超时计数器复位,进入烧写模式,这样保证在烧写模式时,芯片不会因为超时,而进入正常工作状态。

4)烧写模式状态:通过不同的命令,对flash或者mtp进行擦除,烧写,读出等操作,当收到结束命令时,超时计数器复位释放,等待计数超时后,进入正常工作模式。

5)正常工作状态:收到上电复位或者外部复位,返回开始状态。(所有状态在收到上电复位或者外部复位时,都返回到开始状态)。

4、超时计数器:

该计数器为上电复位或者外部复位释放后,到芯片mcu复位释放之间需要等待的时间的计数器,当每次从一个状态进入到另一状态时就将这个计数器复位清0,这样三次超时计算只用了同一个计数器,有效的降低了芯片面积。如果不在乎芯片面积,放置多个超时计数器也是可以的。

采用了该发明中的基于双向握手实现进入烧写模式的方法及系统,不需要单独封装测试管脚出来,降低了封装成本;不需要在某个管脚外加高于电源的高压信号,有效减少电源串扰;也不需要借助外部复位管脚,软件人员不用反复测试以寻找合适的打入烧写指令的时间,简化了软件人员操作,降低无法正常进入烧写模式的概率,具有广泛的应用范围。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1