CN108388443A - 一种otp芯片汇编程序二次打补丁方法 - Google Patents
一种otp芯片汇编程序二次打补丁方法 Download PDFInfo
- Publication number
- CN108388443A CN108388443A CN201810166860.0A CN201810166860A CN108388443A CN 108388443 A CN108388443 A CN 108388443A CN 201810166860 A CN201810166860 A CN 201810166860A CN 108388443 A CN108388443 A CN 108388443A
- Authority
- CN
- China
- Prior art keywords
- program
- address
- bug
- jump
- blank
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种OTP芯片汇编程序二次打补丁方法,该方法包括如下步骤:101:找出程序bug区域跳转指令行中最适合跳转的指令行;102:从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址,通过中间空白地址再进行跳转,跳至程序剩余空白ROM的地址处打程序补丁;103:将作废的程序行全部写成空指令。
Description
技术领域
本发明属于OTP芯片的技术领域,特别涉及OTP芯片汇编程序的打补丁方法。
背景技术
OTP芯片是MCU的一种存储器类型,意思是一次性可编程:程序烧入IC后,一般情况下是不可再次更改。OTP芯片相比市面上常用的MTP芯片和Flash芯片成本低,因此OTP芯片大批量应用于消费类电子产品上,且都是一次性写入程序,所以出货量相当大。但是当已经烧录的OTP芯片程序出现bug时,基本上整批OTP芯片都要报废,不仅造成芯片费用损失,严重的可能造成整个PCBA板费用或整个消费电子产品费用赔偿。OTP芯片汇编程序二次打补丁的方法可以尽可能减小OTP芯片汇编程序出现bug时的损失,甚至可以完全避免不必要的经济损失。
如专利申请201310157498.8公开了一种在线补丁的激活方法、装置及系统,其中,所述方法包括:定位补丁函数的地址和待打补丁函数的入口地址;基于所述补丁函数的地址和所述待打补丁函数的入口地址,在中间区写入用于跳转到所述补丁函数的长跳转指令,其中所述中间区为处于待打补丁函数入口位置前或后,且能放置至少一条长跳转指令的存储空间;将待打补丁函数入口位置处的指令修改为跳转到所述中间区的短跳转指令,使得所述短跳转指令被执行后,跳转到所述中间区,通过中间区中指令的执行跳转到所述补丁函数执行。通过本发明实施例,从而提高应用软件在线补丁激活时的安全性和可靠性。
然而,上述专利申请是通过中间区实现跳转补丁激活,能够适用于在线激活,但是对于OTP芯片,特别是OTP芯片中的汇编程序没有处理办法,因此,亟需一种方法能够解决OTP芯片汇编程序的补丁问题,以提高OTP芯片的运行稳定性和可靠性,避免不必要的经济损失。
发明内容
基于此,因此本发明的首要目地是提供一种OTP芯片汇编程序二次打补丁方法,该方法能够解决OTP芯片汇编程序中的补丁问题,提高OTP芯片的运行稳定性和可靠性,避免不必要的经济损失。
本发明的另一个目地在于提供一种OTP芯片汇编程序二次打补丁方法,该方法能够充分利用OTP芯片,节约芯片,避免芯片的浪费,也减少了维护费用。
为实现上述目的,本发明的技术方案为:
一种OTP芯片汇编程序二次打补丁方法,其特征在于该方法包括如下步骤:
101:找出程序bug区域跳转指令行中最适合跳转的指令行。
102:从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址(后面称为地址1),通过地址1再进行跳转,跳至程序剩余空白ROM的地址处(后面称为地址2)打程序补丁。
103:作废的程序行全部写成空指令。
所述步骤101中,所述找出程序bug区域跳转指令行中最适合跳转的指令行,其目的是找出bug区域程序中跳转指令后面紧跟着的跳转地址数据能否满足第1次跳转的要求。
第1次跳转地址要为:001H/002H/003H或001H/002H/003H/004H/005H/006H/007H,因为一般MCU程序初始入口地址为000H,中断入口地址为004H或008H,所以两入口地址中间的空白地址为001H/002H/003H或001H/002H/003H/004H/005H/006H/007H,只要在程序bug区域跳转指令后紧跟的地址数据能直接覆盖成001H/002H/003H或001H/002H/003H/004H/005H/006H/007H即可。
所述步骤102中,所述从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址(后面称地址1)处,通过地址1再进行跳转,跳至芯片剩余空白ROM地址处(后面称为地址2),相当于从程序bug处的跳转指令行先跳到地址1处,再从地址1处写入跳转指令,跳转到地址2处(地址2的数据可根据HEX档可反汇编看得出来),然后在地址2处写补丁程序,补丁程序写完后,再跳回bug程序后面的程序区。
所述步骤103中,所述作废的程序行全部写成空指令,因为在程序bug区域跳转指令行第一次跳转时,bug程序跳转到地址1处的前面或后面有部分程序需要作废时,要把作废的程序写成空指令,这样才不影响整个程序的执行。
本发明通过对已烧录的OTP芯片汇编程序进行二次打补丁,修正了程序中的bug,提高OTP芯片的运行稳定性和可靠性,不仅可以节约芯片,避免芯片的浪费,而且也能避免芯片量产时上板(已焊接到PCB板上)OTP芯片因为拆御带来的返工费用,减少维护费用。
附图说明
图1是具有bug的程序示意图。
图2是bug程序行第一个跳转行跳转地址为099H的示意图。
图3是本发明所实施把跳转地址从099H变更为001H的示意图。
图4是本发明所实施程序从001H地址再次跳转到03F0H地址的示意图。
图5是本发明所实施在03F0H地址写入补丁程序的示意图。
图6是本发明所实施从补丁程序处跳回bug程序后面程序区的示意图。
图7是本发明所实施把作废的程序行写成空指令的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为本发明所实现的OTP芯片汇编程序二次打补丁方法,包括如下步骤:
101:找出程序bug区域跳转指令行中最适合跳转的指令行。
102:从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址(后面称为地址1),通过地址1再进行跳转,跳至程序剩余空白ROM的地址处(后面称为地址2)打程序补丁。
103:作废的程序行全部写成空指令。
图1所示,图中显示,278~283行的程序有bug,在图2右侧的反汇编窗口中可以看到,程序bug区域中,最近的一个goto跳转指令行为281行,其跳转地址数据为099H,099H的二进制数为0000 1001 1001B,它可以被覆盖为001H(二进制数字1可以写成0),满足跳转地址1(001H/002H/003H或001H/002H/003H/004H/005H/006H/007H)的要求。
依照本发明的方法,结合图3所示,把bug程序区域中跳转指令的地址099H,写成了001H的地址,即goto CHECK_NO_SHORT_001,如图3右侧红框所示,GOTO 001H。当bug程序区的goto指令行跳到程序初始入口地址000H和中断入口地址004H中间的001H地址后,再结合图4所示,程序又从001H地址再跳到地址2 03F0H地址。
如图5所示,在03F0H的地址处写入真正打补丁的程序,图5左侧红圈为程序修改的参数值,补丁程序完成后,如图6所示,再跳回bug程序区后面的程序,继续接着往下执行程序。
当补丁程序写完后,如图7所示,再把bug程序行282~284行以及287行,用空指令覆盖掉,这样OTP芯片的汇编程序二次补丁就完成了。若程序281行的goto指令后紧跟跳转地址数据不满足地址1的要求,可以继续往下找最近一个符合跳转地址1的goto指令,再跳转到地址2处,在地址2补丁程序中把bug程序区最终第一个有效goto跳转指令行前面或后面的有效程序都编辑进来,再跳转回去即可。
因此,本发明通过对已烧录的OTP芯片汇编程序进行二次打补丁,修正了程序中的bug,提高OTP芯片的运行稳定性和可靠性,不仅可以节约芯片,避免芯片的浪费,而且也能避免芯片量产时上板(已焊接到PCB板上)OTP芯片因为拆御带来的返工费用,减少维护费用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种OTP芯片汇编程序二次打补丁方法,其特征在于该方法包括如下步骤:
101:找出程序bug区域跳转指令行中最适合跳转的指令行;
102:从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址,通过中间空白地址再进行跳转,跳至程序剩余空白ROM的地址处打程序补丁;
103:将作废的程序行全部写成空指令。
2.如权利要求1所述的OTP芯片汇编程序二次打补丁方法,其特征在于所述步骤101中,所述找出程序bug区域跳转指令行中最适合跳转的指令行,找出bug区域程序中跳转指令后面紧跟着的跳转地址数据能否满足第1次跳转的要求;第1次跳转地址要为:001H/002H/003H或001H/002H/003H/004H/005H/006H/007H,只要在程序bug区域跳转指令后紧跟的地址数据能直接覆盖成001H/002H/003H或001H/002H/003H/004H/005H/006H/007H即可。
3.如权利要求2所述的OTP芯片汇编程序二次打补丁方法,其特征在于所述步骤102中,所述从程序bug区域跳转指令行跳到程序初始入口和中断入口中间空白地址处,通过中间空白地址再进行跳转,跳至芯片剩余空白ROM地址处,相当于从程序bug处的跳转指令行先跳到程序初始入口和中断入口中间空白地址处,再从这个中间空白地址处写入跳转指令,跳转到剩余空白ROM地址处,然后在剩余空白ROM地址处写补丁程序,补丁程序写完后,再跳回bug程序后面的程序区。
4.如权利要求3所述的OTP芯片汇编程序二次打补丁方法,其特征在于所述步骤103中,所述作废的程序行全部写成空指令,因为在程序bug区域跳转指令行第一次跳转时,bug程序跳转到程序初始入口和中断入口中间空白地址处的前面或后面有部分程序需要作废时,要把作废的程序写成空指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166860.0A CN108388443A (zh) | 2018-02-28 | 2018-02-28 | 一种otp芯片汇编程序二次打补丁方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166860.0A CN108388443A (zh) | 2018-02-28 | 2018-02-28 | 一种otp芯片汇编程序二次打补丁方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108388443A true CN108388443A (zh) | 2018-08-10 |
Family
ID=63069444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810166860.0A Pending CN108388443A (zh) | 2018-02-28 | 2018-02-28 | 一种otp芯片汇编程序二次打补丁方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108388443A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021142761A1 (zh) * | 2020-01-17 | 2021-07-22 | 深圳市汇顶科技股份有限公司 | 为芯片打补丁的方法及芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020062479A1 (en) * | 2000-11-21 | 2002-05-23 | Toshio Takata | Microcontroller with modifiable program |
CN102364430A (zh) * | 2010-09-17 | 2012-02-29 | 杭州士兰微电子股份有限公司 | 支持一次性可编程存储器多次编程的微控制器和编程方法 |
CN103064654A (zh) * | 2011-10-19 | 2013-04-24 | 庄建祥 | 集成电路、电子系统及提供otp内存配置可更新的方法 |
EP2940577A1 (en) * | 2014-04-30 | 2015-11-04 | Dialog Semiconductor GmbH | Patching of program code executed from one time programmable memory |
CN106648713A (zh) * | 2015-10-28 | 2017-05-10 | 深圳市博巨兴实业发展有限公司 | 一种otp烧录方法及装置 |
-
2018
- 2018-02-28 CN CN201810166860.0A patent/CN108388443A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020062479A1 (en) * | 2000-11-21 | 2002-05-23 | Toshio Takata | Microcontroller with modifiable program |
CN102364430A (zh) * | 2010-09-17 | 2012-02-29 | 杭州士兰微电子股份有限公司 | 支持一次性可编程存储器多次编程的微控制器和编程方法 |
CN103064654A (zh) * | 2011-10-19 | 2013-04-24 | 庄建祥 | 集成电路、电子系统及提供otp内存配置可更新的方法 |
EP2940577A1 (en) * | 2014-04-30 | 2015-11-04 | Dialog Semiconductor GmbH | Patching of program code executed from one time programmable memory |
CN106648713A (zh) * | 2015-10-28 | 2017-05-10 | 深圳市博巨兴实业发展有限公司 | 一种otp烧录方法及装置 |
Non-Patent Citations (3)
Title |
---|
SU_MJ000: ""PIC单片机OTP型怎么样才能烧写第2次"", 《HTTPS://WWW.DZSC.COM/DZBBS/20040403/20076520030750719.HTML》 * |
丁锦滔: ""PIC12C5xx单片机编程器和OTP的再烧写"", 《电子制作》 * |
王玮 等: ""PIC的OTP技术及OTP的两次编程"", 《单片机与嵌入式系统应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021142761A1 (zh) * | 2020-01-17 | 2021-07-22 | 深圳市汇顶科技股份有限公司 | 为芯片打补丁的方法及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7921398B2 (en) | System and medium for placement which maintain optimized timing behavior, while improving wireability potential | |
CN1105359C (zh) | 总线修补器 | |
US7367004B2 (en) | Crosstalk error control apparatus, method, and program | |
CN103778009A (zh) | 中断处理方法及装置 | |
CN108388443A (zh) | 一种otp芯片汇编程序二次打补丁方法 | |
RU99120288A (ru) | Способ и устройство для выполнения с высокой надежностью одним процессором нескольких функций с различным уровнем критичности | |
CN103631454B (zh) | 红外触摸屏的模拟方法与系统 | |
CN107507552B (zh) | 一种信号处理方法和时序控制电路 | |
US7970638B2 (en) | Planning parts demand coverage based on variable percentage of substitution parts | |
CN107016201A (zh) | 一种编辑器及基于该编辑器的pcb中自动检查限高的方法 | |
CN104200181B (zh) | 一种双功能智能烧写模块及方法 | |
CN105260569A (zh) | 一种基于CadenceAllegro自动打地孔的方法 | |
CN107506375A (zh) | 数据存储方法及装置 | |
CN107679835A (zh) | 一种定位工作日历的方法及装置 | |
US20130061194A1 (en) | Layout method, layout apparatus, and program for semiconductor integrated circuit | |
US6505336B1 (en) | Channel router with buffer insertion | |
CN106293784A (zh) | 一种bin文件分块升级的方法 | |
KR100600303B1 (ko) | 플래쉬 메모리 소자의 페이지 프로그램 방법 | |
Karatsu | Quality Control—the Japanese Approach | |
JP2000202744A (ja) | 納期管理方法および納期管理システム | |
JPS60244648A (ja) | 自動車用制御装置 | |
JPS6252898B2 (zh) | ||
CN112685089A (zh) | 一种适用于多种机器的通讯板系统及工作方法 | |
CN112114964A (zh) | 一种适用于嵌入式系统的应用安全访问内核方法 | |
US20040025131A1 (en) | Method and apparatus for placing repeater banks in integrated circuit design |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180810 |