【漏洞】发现 ICCAVRv7.22 数学库漏洞
前些年做项目积攒了一些 AVR 的开发板,简单的采样、发波什么的用的一直挺顺手。最近做了一批 WS2812 的驱动,写了些颜色渐变效果,结果用到三角函数时,发现开始坑爹。
最开始是用 AvrStudio 仿真时发现三角函数转一会就转不动了,后来用 M64 实物运行,串口上传计算结果,才发现果然存在问题。
--------------------------------------------------------------------------------------------------------
漏洞表现为:sin/cos 的定义域(自变量范围)被限制在了 -4π~+4π 之间。
以前在 VC 当中用三角函数时,没出现过这种情况(类似颜色发生器也没有爆掉)。
测试平台:ATMEGA64A,PC串口
测试环境:ICCAVR v7.22
测试函数:sin(x), cos(x), tan(x).("math.h")
测试结果:坑爹的漏洞
相关附件:
(测试项目+原始数据)
(数据曲线)
--------------------------------------------------------------------------------------------------------
M64是常规的 AVR 内核,如果数学库存在这个漏洞的话,估计低端的 MEGA 系列都跑不掉(所以TINY也别随便搞数学库了,查表多好)。
好在 AVR 本来就不是什么高端单片机,真心用到三角函数时大多是要查表来做的,也就没那么些烦心事了。 一直用AVR,又学到新知识了,谢谢前辈分享经验!! 模拟器有这个问题吗?如果是库漏洞的话应该也有吧。按这个样子来说库函数多半也是查表…… runapp 发表于 2016-1-3 15:17
模拟器有这个问题吗?如果是库漏洞的话应该也有吧。按这个样子来说库函数多半也是查表…… ...
不光是模拟器,我用实物运行的,说明直接是库函数的问题(结果模拟器、实物运行出了相同的BUG) 不舍的六年 发表于 2015-12-28 13:59
一直用AVR,又学到新知识了,谢谢前辈分享经验!!
感谢大家来捧场! 本帖最后由 dhbighead 于 2016-1-4 00:11 编辑
库的文档里应该有相应的说明吧
大家可能容易忽略了 dhbighead 发表于 2016-1-4 00:09
库的文档里应该有相应的说明吧
大家可能容易忽略了
整篇 PDF 都读无数遍了,只知道是个弧度三角函数,自变量范围真心没写
ICCAVR 毕竟是免费的玩意,做成这样也就不错了 t3486784401 发表于 2016-1-4 00:30
整篇 PDF 都读无数遍了,只知道是个弧度三角函数,自变量范围真心没写
ICCAVR 毕竟是免费的玩意,做成这 ...
iccavr是收费的商业软件 t3486784401 发表于 2016-1-4 00:30
整篇 PDF 都读无数遍了,只知道是个弧度三角函数,自变量范围真心没写
ICCAVR 毕竟是免费的玩意,做成这 ...
ICC大多用的都是破解版。
所以。。没法反映bug吧 一直用的都是一些简易的功能,还有这个问题,长知识了,果断右击保存,谢谢楼主…… 可能是破解版故意坑你,一般的专业软件都是官方出的破解,你用破解他知道,在某些方面故意坑你,以前被坑过 hitgds 发表于 2016-1-8 21:56
可能是破解版故意坑你,一般的专业软件都是官方出的破解,你用破解他知道,在某些方面故意坑你,以前被坑过 ...
目前除了这个明显的BUG外,感觉 v7.22 还是比较亲民的
虽然说的确是破解的玩意 从来都不用库,所以没发现任何问题{:lol:}
页:
[1]