原创 AVR单片机解密后烧写文件的时候需要有哪些注意的事项

2014-1-20 16:20 787 9 9 分类: MCU/ 嵌入式

  AVR单片机内部有多组与器件配置和运行环境相关的的熔丝位,这些熔丝位非常重要,用户可以通过设定和配置熔丝位使AVR单片机局部不同的特性,以更加适合实际应用。但是由于需要对熔丝位进行配置,给初学者带来一些不太好理解的地方,对于单片机解密以后,在烧录程序的时候,也要对熔丝位配置,如果配置不对了,可能不工作或功能发生变化。所有在烧录解密后的文件的时候一定要对熔丝位进行配置,由于支持AVR的工具非常多,而不同的工具的软件的界面不同,所以在做AVR单片机解密前最好告诉解密公司自己使用的是什么工具,让芯片解密公司按照自己的工具的界面做配置图,这样就方便了解密以后去烧写程序,不过自己也可以用解密公司提供的样片去读熔丝位配置,有的工具直接读芯片就可以,有的是读配置等等,然后将读出的配置保存。如下图是采用LABTOOL48-UXP读的MEGA64的一个配置。
  如果是刚出厂的单片机,默认的是使用内部1MHZ的RC振荡作为系统时钟,而且JTAG口处于允许方式。对于AVR熔丝位要起码要明确以下几点。
  AVR熔丝可以多次编程,不是一次性的OTP熔丝。
  熔丝位的配置可以通过并行方式、ISP方式和JTAG串行方式实现。
  AVR芯片加密锁定后(LB2/LB1=1/0,0/0)不能通过任何方式读取芯片内部FLASH和EEPROM中的数据,但熔丝位的状态任然可以读取,只是不能修改配置。
  芯片擦除命令是将FLASH和EEPROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1=1/1),但芯片擦除命令并不改变其他熔丝位的状态。
  下载编程的正确步骤是:在芯片无锁定状态下对芯片下载运行代码和数据,配置相关熔丝位,最后配置芯片的加密位置。
  芯片被加密锁定后,如果发现熔丝位及配置不对,则必须使用芯片擦除命令,清除芯片中的数据,解密加密锁定,然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。
  需要非常明确的指出一点的是SPIEN位,很多客户曾经电话咨询过,说是我们提供的单片机用ISP连接不上,而自己买来的可以,熔丝为的SPIEN就是配置ISP的,如果SPIEN为1,ISP是允许状态,如果是0则为禁止状态,如果是禁止状态当然是无法ISP连接口芯片的。
  另外比较重要的是BOOTRST位,这一位的设置关系到芯片上电后程序从0X0000开始执行还是从 BOOT区开始执行。而系统时钟源的选择也非常重要,解密后的程序客户烧写的时候经常不好用,打部分是由于时钟源没有设置对的原因,所以系统时钟一定按照原来的设置。
  由于采用不同的工具,烧写的方法和要求的文件也不同。
  一、第一种方法是采用通用编程器的方法,如果采用通用编程器的方式,一般都支持BIN或HEX文件,在解密后我们提供BIN或HEX文件,直接加载文件,然后按照我们提供的配置图配置,直接烧写就可以。如果我们提供的配置图的界面和自己使用的对不上,可以直接用编程器来读我们提供的样片,在加密的状态下熔丝配置位是可以读出的,然后自己保存,按照读出的去配置烧写文件就可以了。
  二、使用ISP或JTAG下载线模式烧写文件,因为使用下载线也有很多种,一般的下载线都支持在AVRSTUDIO下下载,STUDIO在下载的时候,要求的文件格式必须是HEX格式的文件,如果加载BIN文件,会提示不是AVRSTUDIO支持的格式。并且要求FLASH和EEPROM文件是分开下载的,即解密后要提供FLASH和EEPOM两个文件。如果是使用下载线方式来下载,要告诉我们将文件分割成2个部分或客户自己分割成FLASH和EEPROM两个文件。因为下载线模式需要在线读写,而客户提供我们的时候一般是只提供芯片,我们没有电路板可以读写,所以配置就需要客户自己读一下或是按照我们提供的进行自己配置。 

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条