一种源代码保护方法和装置的制作方法

文档序号:6376809阅读:155来源:国知局
专利名称:一种源代码保护方法和装置的制作方法
技术领域
本申请涉及嵌入式技术领域,特别涉及一种源代码保护方法和装置。
背景技术
很多嵌入式(System On Chip)设备把程序的源代码和数据存储在同一片闪存(FLASH)内。源代码存放在闪存的一片连续的空间内,数据存放在其余的存储空间内。设备启动时,首先由CPU读取闪存内的程序源代码执行。如果闪存内的程序源代码遭到外部错误修改。如CPU程序跑飞或外部电磁信号干扰,导致闪存内的程序源代码被错误修改。那么,设备启动时,将无法正常启动。只能通过重新烧写闪存才能恢复。现有技术中常采用闪存自身提供的写保护信号对整片存储空间禁止写入数据。这样可以起到保护其存储的源代码的目的。但由于设备运行时,一般需要对闪存数据存储区·域不定时的写。另外,在特定情况下,也需要修改闪存源代码。如设备程序升级等。因此,该方法一般只能用于设备上电时段、设备下电时段等不需要写闪存的特定时间段对闪存内的程序源代码进行保护。目前这种技术不能在设备运行期间,对闪存内的程序源代码进行保护。

发明内容
有鉴于此,本申请提供一种源代码保护方法和装置,避免了源代码被错误修改,提高了源代码保存的可靠性。为解决上述技术问题,本发明的技术方案是这样实现的一种源代码保护方法,包括监控CPU发出的命令信号和地址总线信号;当根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间时,确定闪存源代码的存储区间是否允许修改,如果是,根据所述命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改;否则,修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,并根据所述命令信号,以及修改后的地址总线信号处理闪存中的数据。一种装置,所述装置包括监控单元、确定单元、处理单元;所述监控单元,用于监控CPU发出的命令信号和地址总线信号;所述确定单元,用于根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间时,确定闪存源代码的存储区间是否允许修改;所述处理单元,用于当所述确定单元确定所述闪存源代码的存储区间允许修改时,根据所述确定单元中的命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改;当所述确定单元确定所述闪存源代码的存储区间不允许修改时,修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,并根据所述确定单元中的命令信号,以及修改后的地址总线信号处理闪存中的数据。综上所述,本申请通过监控CPU发出的命令信号和地址总线信号,当确定有写闪存源代码的命令,且当前闪存源代码区间不允许修改时,修改该地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,避免了源代码被错误修改,提高了源代码保存的可靠性。


图I为本发明实施例中源代码保护方法流程示意图;图2为本发明具体实施例中闪存中源代码保护方法流程示意图;图3为本发明具体实施例中应用于源代码保护的装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。本发明实施例中提出一种源代码保护方法,避免了源代码被错误修改,提高了源代码保存的可靠性。参见图1,图I为本发明实施例中源代码保护方法流程示意图。具体步骤为步骤101,装置监控CPU发出的命令信号和地址总线信号。对CPU发出的命令信号该装置一直在监控,并不因监控到命令信号为写闪存命令且指向闪存源代码存储区间而结束。步骤102,当根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间时,确定所述闪存源代码的存储区间是否允许修改,如果是,执行步骤103 ;否则,执行步骤104。本步骤中,根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间,包括当监控到的命令信号中的闪存片选(CE)信号和闪存写使能(WE)信号均为有效,确定该命令信号为写闪存命令,且同时监控到的地址总线信号携带的地址信息指向闪存源代码存储区间的地址空间时,确定该写闪存命令指向闪存源代码存储区间。若闪存CE信号无效、闪存WE信号无效,地址总线信号携带的地址信息未指向闪存源代码存储区间的地址空间,三条之中的任一条成立时,根据监控到的命令信号和地址总线信号的内容进行处理,同现有处理方式一致。本步骤中,装置确定所述闪存源代码的存储区间是否允许修改的具体实现方法可以为确定所述闪存源代码写使能寄存器值是否有效,有效时,允许修改;否则,不允许修改。通过一个寄存器提供写闪存源代码存储区间的使能标志位,当该标志位置O时表示无效,不允许与;当标志位置I时表不有效,允许与。步骤103,该装置根据所述命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改,本流程结束。本步骤中不对命令信号和地址总线信号进行任何处理,并根据命令信号和地址总线信号处理闪存中的源代码。同时,将闪存源代码的存储区间设置为不允许修改,具体实现为将闪存源代码写使能寄存器值置为无效,即将寄存器提供的写闪存源代码存储区间的使能标志位置O。这样,不会因为CPU程序跑飞或外部电磁信号的干扰,而错误的修改了源代码。步骤104,该装置修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,并根据所述命令信号,以及修改后的地址总线信号处理闪存中的数据。本步骤中,通过强制修改地址总线信号中的地址信息,修改后使访问地址区间指向闪存源代码存储区间之外的区间。具体实现时,可以通过将某条低电平的地址信号强制置为高,使指向的地址空间发生变化。这样根据命令信号,以及修改后的地址总线信号不会对源代码执行操作。本步骤中修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源 代码存储区间时,该方法进一步包括产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录。产生的源代码告警信息至少包括错误修改了修改后的地址总线信号携带的地址信息对应的闪存区间,CPU根据该告警信息生成异常日志,以备维护人员查询。该方法进一步包括当需要修改所述闪存源代码时,该装置通过CPU将所述闪存源代码写使能寄存器值置为有效。由上可见,在每次正常写完成后,都会将闪存源代码写使能寄存器值置为无效,以免对源代码进行错误修改,因此,如果需要对源代码修改时,需先通过CPU将闪存源代码写使能寄存器值置为有效。下面结合附图,详细说明本发明在具体实施例中如何实现源代码保护的。以一个存储空间为32M字节的闪存,数据总线位宽为8bit,地址空间为0x000,0000^0x1, FFF, FFF,地址总线为25根线,记为Addr [25. . I]。规划源代码存放空间为IM字节,源代码地址空间为0x0,000, 000^0x0, OFF, FFF,其余空间是用于存放数据。参见图2,图2为本发明具体实施例中闪存中源代码保护方法流程示意图。具体步骤为步骤201,装置监控CPU发出的命令信号和地址总线信号。步骤202,该装置监控到命令信号时,确定该命令信号中闪存CE信号是否有效,如果是,执行步骤203 ;否则,执行步骤209。该步骤通过确定闪存CE信号是否有效,来确定该命令是否为发送给闪存的命令。通常CE为低电平时表示有效,高电平时表示无效,具体实现根据使用者习惯和方便设置。步骤203,该装置确定同时监控到的命令信号中的闪存WE信号是否有效,如果是,执行步骤204 ;否则,执行步骤209。当确定该命令信号是发送给闪存时,确定命令信号中的闪存WE信号是否有效,SP确定该命令的操作是否为写命令。步骤204,该装置根据同时监控到的地址总线信号中携带的地址信息是否指向闪存源代码存储区间,如果是,执行步骤205 ;否则,执行步骤209。当确定该命令信号为发送给闪存的写命令时,根据同时监控到的地址总线确定该命令要访问的地址区间是否在源代码存储的区间。由于该实施例中,源代码的存储空间为0x0,000, 000^0x0, OFF, FFF,因此,只需确定一下同时监控到的地址总线信号携带的地址信息是否落入该地址区间。
步骤205,该装置确定所述闪存源代码写使能寄存器值是否有效,如果是,执行步骤206 ;否则,执行步骤207。在规划源代码存储区间时,通过使用寄存器提供的标志位标识闪存源代码写使能是否有效,寄存器提供的标志位记为闪存源代码写使能寄存器值。在系统正常情况下,如果需要写闪存源代码时,需将该闪存源代码写使能寄存器值置为有效,再发送相应的命令信号和地址总线信号。如果监控到通过CPU发送的写闪存源代码的命令,而闪存源代码写使能寄存器值为无效时,可能由于CPU跑飞,或者外部电磁信号干扰造成的错误信号,这时,需通过本发明的步骤207和步骤208进行处理。步骤206,该装置根据监控到的命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码寄存器值置为无效,结束本流程。当确定该次发送的是正常的写源代码命令时,则根据命令信号和地址总线信号修改相应的源代码,并在该次修改结束后,将闪存源代码写使能寄存器值置为无效,以防系统在非正常情况下修改了闪存中的源代码。步骤207,该装置修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,并根据所述命令信号,以及修改后的地址总线信号处理闪存中的数据。假设该次监控到的地址总线携带的地址信息中Addr[25. . 21]地址信号全部为低电平,即访问空间为0x0,000,000 0x0,Ozz, zzz(“z”,表示为16进制任意数),该空间为源代码存储区间。则该装置将地址线Addr[21]强制置为高电平,这样,该访问区间不再指向源代码存储空间。上述实现方式是将Addr [21]强制为高电平,在具体实现时,可以将Addr [22]、Addr [23]、Addr[24]或Addr [25]置为高电平,只要达到将访问地址区间指向闪存源代码存储区间之外的区间即可。步骤208,该装置产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录,结束本流程。步骤207中修改的地址按照预定的规则修改,如修改Addr [21],则可获知修改后的地址信息指向的地址访问空间。该装置产生异常修改源代码告警信息,携带本次非正常修改的地址区间,并发送给CPU使CPU进行异常日志记录,记录该次非正常修改的地址区间,以便维护人员根据该日志进行设备维护。步骤209,该装置根据监控到的命令信号和地址总线信号的内容进行相应的处理。当监控到的命令信号不是发送给闪存的时候,则根据命令信号的内容进行相应处理,同现有实现一致,这里不再详细赘述。上述监控命令信号和地址总线信号,以及确定命令是否为写闪存源代码命令、如何处理地址总线信号等的实现,以及闪存源代码写使能寄存器值等,均可通过可编程逻辑器件(PLD)实现。其中,闪存源代码写使能寄存器值可通过一个Ibit的寄存器,提供一个写FLASH源代码存储区间的使能标志位,允许修改和读取其当前的值。本发明具体实施例中基于同样的发明构思,还提出一种装置。参见图3,图3为本发明具体实施例中应用于源代码保护的装置的结构示意图。该装置包括监控单元301、确定单元302和处理单元303。监控单元301,用于监控CPU发出的命令信号和地址总线信号。确定单元302,用于根据监控单元301监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间,确定所述闪存源代码的存储区间是否允许修改。处理单元303,用于当确定单元302确定所述闪存源代码的存储区间允许修改时,根据确定单元中的命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改;当确定单元302确定所述闪存源代码的存储区间不允许修改时,修改所述地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,并根据所述确定单元中的命令信号,以及修改后的地址总线信号处理闪存中的数据。较佳地,
确定单元302,用于当监控单元301监控到的命令信号中的闪存片选CE信号和闪存写使能WE信号均为有效时,确定该命令信号为写闪存命令,且同时监控到的地址总线信号携带的地址信息指向闪存源代码存储区间的地址空间时,确定该写闪存命令指向闪存源代码存储区间。较佳地,处理单元303,进一步用于修改所述地址总线信号携带的地址信息时,产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录。较佳地,该装置进一步包括寄存器单元304。寄存器单元304,用于记录闪存源代码写使能寄存器值。确定单元302,用于确定寄存器单元304当前记录的闪存源代码写使能寄存器值是否有效。处理单元303,用于根据所述命令信号和地址总线信号处理闪存中的源代码后,将寄存器单元304中的闪存源代码写使能寄存器值置为无效。较佳地,寄存器单元304,进一步用于当需要修改所述闪存源代码时,通过CPU将闪存源代码写使能寄存器值置为有效。上述实施例中的监控单元、确定单元、处理单元和寄存器单元都可通过PLD实现。上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单兀。综上所述,本发明具体实施例中本申请通过监控CPU发出的命令信号和地址总线信号,当确定有写闪存源代码的命令,且当前闪存源代码区间不允许修改时,修改该地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间,避免了源代码被错误修改,提高了源代码保存的可靠性。同时,产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录,以便设备维护人员进行维护,进而提高了设备的稳定性。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种源代码保护方法,其特征在于,包括 监控CPU发出的命令信号和地址总线信号; 当根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间时,确定闪存源代码的存储区间是否允许修改,如果是,根据所述命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改;否则,修改所述地址总线信号携帯的地址信息,使访问地址区间不指向闪存源代码存储区间,井根据所述命令信号,以及修改后的地址总线信号处理闪存中的数据。
2.根据权利要求I所述的方法,其特征在于,所述根据监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间,包括 当监控到的命令信号中的闪存片选CE信号和闪存写使能WE信号均为有效,确定该命令信号为写闪存命令,且同时监控到的地址总线信号携帯的地址信息指向闪存源代码存储区间的地址空间时,确定该写闪存命令指向闪存源代码存储区间。
3.根据权利要求I或2所述的方法,其特征在于,所述修改所述地址总线信号携帯的地址信息时,所述方法进ー步包括 产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录。
4.根据权利要求I或2所述的方法,其特征在于,所述确定所述闪存源代码的存储区间是否允许修改,包括确定所述闪存源代码写使能寄存器值是否有效; 所述将源代码的存储区间设置为不允许修改,包括将所述闪存源代码写使能寄存器值置为无效。
5.根据权利要求4所述的方法,其特征在于,所述方法进ー步包括 当需要修改所述闪存源代码时,通过CPU将所述闪存源代码写使能寄存器值置为有效。
6.ー种装置,其特征在于,所述装置包括监控单元、确定单元、处理单元; 所述监控単元,用于监控CPU发出的命令信号和地址总线信号; 所述确定単元,用于根据所述监控単元监控到的命令信号确定该命令信号为写闪存命令,且根据同时监控到的地址总线信号确定该写闪存命令指向闪存源代码存储区间时,确定闪存源代码的存储区间是否允许修改; 所述处理単元,用于当所述确定単元确定所述闪存源代码的存储区间允许修改时,根据所述确定单元中的命令信号和地址总线信号处理闪存中的源代码,并将闪存源代码的存储区间设置为不允许修改;当所述确定単元确定所述闪存源代码的存储区间不允许修改时,修改所述地址总线信号携帯的地址信息,使访问地址区间不指向闪存源代码存储区间,井根据所述确定单元中的命令信号,以及修改后的地址总线信号处理闪存中的数据。
7.根据权利要求6所述的装置,其特征在干, 所述确定単元,用于当所述监控単元监控到的命令信号中的闪存片选CE信号和闪存写使能WE信号均为有效吋,确定该命令信号为写闪存命令,且同时监控到的地址总线信号携帯的地址信息指向闪存源代码存储区间的地址空间时,确定该写闪存命令指向闪存源代码存储区间。
8.根据权利要求6或7所述的装置,其特征在干, 所述处理単元,进ー步用于修改所述地址总线信号携帯的地址信息吋,产生异常修改源代码告警信息,并发送给CPU使CPU进行异常日志记录。
9.根据权利要求6或7所述的装置,其特征在于,所述装置进ー步包括寄存器单元; 所述寄存器単元,用于记录闪存源代码写使能寄存器值; 所述确定単元,用于确定所述寄存器単元当前记录的闪存源代码写使能寄存器值是否有效; 所述处理単元,用于根据所述命令信号和地址总线信号处理闪存中的源代码后,将所述寄存器単元中的闪存源代码写使能寄存器值置为无效。
10.根据权利要求9所述装置,其特征在干, 所述寄存器単元,进ー步用于当需要修改所述闪存源代码时,通过CPU将闪存源代码写使能寄存器值置为有效。
全文摘要
本申请公开了一种源代码保护方法,该方法通过监控CPU发出的命令信号和地址总线信号,当确定有写闪存源代码的命令,且当前闪存源代码区间不允许修改时,修改监控到的地址总线信号携带的地址信息,使访问地址区间不指向闪存源代码存储区间。基于同样的发明构思,本发明还提出一种装置,避免了源代码被错误修改,提高了源代码保存的可靠性。
文档编号G06F21/62GK102867154SQ20121033689
公开日2013年1月9日 申请日期2012年9月12日 优先权日2012年9月12日
发明者王隆峰 申请人:迈普通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1