本申请涉及芯片,具体涉及一种芯片启动代码修复方法和修复系统。
背景技术:
1、一般情况下,soc芯片内部都集成了一块只读的rom存储器(一般称之为bootrom或brom),用于存放芯片上电时默认运行的初始化代码,这段初始化代码用于处理固件升级以及从不同的存储设备(比如nandflash, emmc, sdcard等)启动系统。需要注意的是,brom中的初始化代码要在芯片投片前确定,且代码不可更改,或更改成本极大。在实际生产中,有不少芯片公司由于brom代码设计存在缺陷,导致整个芯片报废。当前系统级芯片的设计越来越复杂,投一次片的费用也异常高昂,如果由于brom代码设计缺陷导致芯片不可用,会给芯片公司带来极大的损失和浪费。
技术实现思路
1、本申请提供了一种芯片启动代码修复方法和修复系统,具体技术方案如下:
2、一种芯片启动代码修复方法,所述修复方法包括如下步骤:步骤s1,当芯片上电后运行启动代码,然后检测芯片是否启动异常,若否,则继续运行启动代码使芯片正常启动,若是,则进入步骤s2;步骤s2,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复。
3、进一步地,所述步骤s1中,检测芯片是否启动异常的方法包括:在启动代码正常运行前,看门狗每隔预设时间间隔记录一次当前启动所耗费的时间,然后跟预设启动超时时间进行比较,如果当前启动所耗费的时间大于等于预设启动超时时间,则芯片启动异常,如果当前启动所耗费的时间小于预设启动超时时间,则芯片没有启动异常。
4、进一步地,所述步骤s2中,非易失性存储器采用eprom,所述eprom外挂在芯片上,通过i2c跟芯片进行通信。
5、进一步地,所述步骤s2中,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复的方法包括:基于启动代码的异常位置,在非易失性存储器中储存的修复代码对应位置处作修复标记,当启动代码非全部异常时,将启动代码中的非异常部分以及非易失性存储器中作有修复标记的修复代码复制到随机存取存储器中以修复启动代码的异常部分。
6、进一步地,所述步骤s2中,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复的方法包括:基于启动代码的异常位置,在非易失性存储器中储存的修复代码对应位置处作修复标记,当启动代码全部异常时,将非易失性存储器中储存的修复代码全部复制到随机存取存储器中以修复启动代码。
7、进一步地,当对启动代码的异常部分进行修复后,运行随机存取存储器中修复后的启动代码使芯片正常启动。
8、一种芯片启动代码修复系统,所述修复系统用于实现所述芯片启动代码修复方法,所述修复系统包括:非易失性存储器,用于储存修复代码;芯片,所述芯片包括只读存储器、异常检测模块、代码修复模块和随机存取存储器;其中,所述只读存储器用于储存启动代码;所述异常检测模块用于检测芯片是否启动异常;所述代码修复模块用于在芯片启动异常时,基于启动代码的异常位置,将启动代码和/或修复代码复制到所述随机存取存储器中以对启动代码的异常部分进行修复。
9、进一步地,非易失性存储器采用eprom,所述eprom外挂在芯片上,通过i2c跟芯片进行通信。
10、进一步地,所述芯片还包括标记模块,所述标记模块用于在芯片启动异常时,基于启动代码的异常位置,在非易失性存储器中储存的修复代码对应位置处作修复标记。
11、本申请所述的芯片启动代码修复方法,当检测到芯片启动异常时,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复,所述方法简单易行且成本低,可以规避启动代码设计缺陷导致芯片不可用的问题,大大降低了投片风险。
1.一种芯片启动代码修复方法,其特征在于,所述修复方法包括如下步骤:
2.根据权利要求1所述的一种芯片启动代码修复方法,其特征在于,所述步骤s1中,检测芯片是否启动异常的方法包括:
3.根据权利要求1所述的一种芯片启动代码修复方法,其特征在于,所述步骤s2中,非易失性存储器采用eprom,所述eprom外挂在芯片上,通过i2c跟芯片进行通信。
4.根据权利要求1所述的一种芯片启动代码修复方法,其特征在于,所述步骤s2中,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复的方法包括:
5.根据权利要求1所述的一种芯片启动代码修复方法,其特征在于,所述步骤s2中,基于启动代码的异常位置,将启动代码和/或非易失性存储器中储存的修复代码复制到随机存取存储器中以对启动代码的异常部分进行修复的方法包括:
6.根据权利要求4或5所述的一种芯片启动代码修复方法,其特征在于,当对启动代码的异常部分进行修复后,运行随机存取存储器中修复后的启动代码使芯片正常启动。
7.一种芯片启动代码修复系统,其特征在于,所述修复系统用于实现权利要求1至6任一项所述芯片启动代码修复方法,所述修复系统包括:
8.根据权利要求7所述的一种芯片启动代码修复系统,其特征在于,非易失性存储器采用eprom,所述eprom外挂在芯片上,通过i2c跟芯片进行通信。
9.根据权利要求7所述的一种芯片启动代码修复系统,其特征在于,所述芯片还包括标记模块,所述标记模块用于在芯片启动异常时,基于启动代码的异常位置,在非易失性存储器中储存的修复代码对应位置处作修复标记。