Android工程导入三方库时,出现的VerifyError错误

本文记录了一次解决在5.0以下手机中出现的VerifyError异常的过程。该异常来源于一个第三方库,通过创建子类并继承该第三方库中的相关类解决了问题。

前段时间遇到了一个奇怪的错误,只出现在5.0以下的手机。错误来自于一个导入的三方库。报的错误是VerifyError,看日志的话,看不出什么所以然

奇怪的地方这个库里面的任何函数除了构造函数,只要写在工程里,对应的页面就会报错,不管这个函数调用不调用。

仔细查了这个库里面的方法,没有任何发现。后来从网上查了很多方法,大多数都说是64k的问题,或者是版本问题。但是都试过了,没有一个管用。

但是我猜测问题的原因还是在于这个三方库,于是我写了一个子类来继承三方库中的所用到的类,并替换所有用到的地方,问题解决了。至于具体的原因,我还是不清楚,有时间得找个大牛请教一下。

<think>嗯,用户遇到了合泰单片机下载程序出现的“verify EEData error”错误,需要解决这个问题。首先,我需要回忆一下合泰单片机常见的下载问题以及可能的解决方案。根据用户提供的引用内容,他们提到了elink32 pro的使用方法和一些程序示例,可能和下载器或程序本身有关。 首先,用户提到的错误是验证EEPROM数据错误,这可能意味着下载程序后校验发现写入的数据与预期不符。可能的原因有很多,比如下载器连接问题、电源不稳定、目标板电压不足、程序配置错误、EEPROM区域被占用、芯片损坏或软件版本过旧。 接下来,我需要逐一分析这些可能的原因。电源问题比较常见,比如目标板的电压是否在正常工作范围内,尤其是如果使用USB供电的话,可能存在电压不稳的情况。下载器连接是否正确,接线是否松动或接触不良,尤其是复位引脚和钟引脚,这些都会影响通信。 然后,程序配置方面,检查Option Byte设置是否正确,特别是保护位是否开启了EEPROM保护,导致无法写入。此外,用户程序中是否有操作EEPROM的代码,可能在下载冲突,需要暂屏蔽相关代码。另外,检查芯片型号是否选对了,不同型号可能有不同的内存布局,选错型号会导致下载地址错误。 还有EEPROM区域被占用的情况,比如如果链接脚本或工程配置中错误地将代码分配到了EEPROM区域,下载就会出错。需要检查链接文件或IDE中的内存分配设置。另外,下载器的固件或软件版本过旧也可能导致兼容性问题,建议升级到最新版本。 如果以上步骤都检查过了,还是有问题,可能需要考虑硬件问题,比如芯片损坏或下载器故障,可以尝试更换芯片或下载器。此外,参考用户提供的引用链接,特别是引用[2]中的示例程序,看看是否有类似的配置可以参考,或者是否有已知的解决方案。 总结下来,解决方案需要从硬件连接、电源、程序配置、软件设置等多个方面进行排查。可能需要用户逐步检查每个环节,确保每一步都正确无误。同,建议用户参考官方文档和社区资源,比如提供的链接中的示例程序和讨论,可能会有帮助。</think>针对合泰单片机下载程序出现的“verify EEData error”问题,以下是分步解决方案及分析: ### 一、问题原因分析 1. **电压不稳**:目标板供电不足(推荐工作电压$3.3V \pm 0.3V$)或存在电源干扰[^1] 2. **连接异常**:下载器(如Elink32 Pro)与目标板的接线接触不良或复位电路异常 3. **程序配置错误**: - Option Byte中EEPROM保护位未关闭 - 用户程序意外修改了EEPROM区域 - 芯片型号选择错误(如HT66Fxx与HT67Fxx混淆) 4. **存储空间冲突**:EEPROM区域被其他数据占用(常见于带内部EEPROM的型号) ### 二、具体解决步骤 #### 1. 硬件检查 - 使用示波器测量目标板$V_{DD}$电压波形,确保无毛刺 - 检查下载器接口: ```text TARGET板接口要求: VDD ---- 3.3V GND ---- 共地 RES ---- 复位引脚 CLK ---- 编程钟 DATA ---编程数据 ``` - 建议在RES引脚添加$0.1\mu F$滤波电容 #### 2. 软件配置 - 在HT-IDE中关闭EEPROM保护: ```c #pragma option OCPWM on //关闭写保护 ``` - 检查芯片型号选择: $$ \text{Device} \rightarrow \text{Select Device} \rightarrow \text{HT66Fxx/HT67Fxx系列} $$ #### 3. 程序修改 - 临屏蔽EEPROM操作代码: ```c //void EEPROM_Write() { ... } //注释相关函数 ``` - 调整链接脚本(.lcg文件): ```script MEMORY { CODE (rx) : ORIGIN = 0x0000, LENGTH = 4K EEPROM (rwx): ORIGIN = 0x2100, LENGTH = 256 //确保地址不重叠 } ``` ### 三、进阶排查 1. 使用官方提供的**霹雳灯测试程序**[^2]验证下载器功能 2. 更新Elink32 Pro固件至最新版本(V2.12+) 3. 尝试降低编程钟频率(HT-IDE中设置$CLK_{PRG}$为200kHz) ### 四、典型错误对照表 | 现象 | 可能原因 | 解决方案 | |------|---------|---------| | 校验错地址固定 | EEPROM被代码占用 | 修改链接脚本 | | 随机校验错误 | 电源干扰 | 增加去耦电容 | | 全片校验失败 | 芯片损坏 | 更换MCU |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值