由一个LED闪烁问题发现的MTK的LED driver中存在的问题
2014-07-16 15:08
148 查看
今天根据最新的需求要对LED灯的提示闪烁频率进行修改,将之前默认的2000ms改为10000ms,但是修改之后没有产生预料中的效果,而是变成了常量,百思不得其解,最后还是read the fucking code,从上层到底层,一路追下来,最终发现了问题所在,下面直接上MTK的LED driver代码:
从以上代码除了可以看到其本来就不支持1999ms以上的闪烁频率之外,还看到了另外一个问题,就是新手经常发生的数组越界问题,没有采取任何的访问保护。
#define PMIC_PERIOD_NUM 9 // 100 * period, ex: 0.01 Hz -> 0.01 * 100 = 1 int pmic_period_array[] = {250,500,1000,1250,1666,2000,2500,10000}; //int pmic_freqsel_array[] = {99999, 9999, 4999, 1999, 999, 499, 199, 4, 0}; int pmic_freqsel_array[] = {0, 4, 199, 499, 999, 1999, 1999, 1999}; static int find_time_index_pmic(int time_ms) { int i; for(i=0;i<PMIC_PERIOD_NUM;i++) { if(time_ms<=pmic_period_array[i]) { return i; } else { continue; } } return PMIC_PERIOD_NUM-1; } int mt_led_blink_pmic(enum mt65xx_led_pmic pmic_type, struct nled_setting* led) { int time_index = 0; int duty = 0; LEDS_DEBUG("[LED]led_blink_pmic: pmic_type=%d\n", pmic_type); if((pmic_type != MT65XX_LED_PMIC_NLED_ISINK0 && pmic_type!= MT65XX_LED_PMIC_NLED_ISINK1 && pmic_type!= MT65XX_LED_PMIC_NLED_ISINK2 && pmic_type!= MT65XX_LED_PMIC_NLED_ISINK3) || led->nled_mode != NLED_BLINK) { return -1; } LEDS_DEBUG("[LED]LED blink on time = %d offtime = %d\n",led->blink_on_time,led->blink_off_time); time_index = find_time_index_pmic(led->blink_on_time + led->blink_off_time); LEDS_DEBUG("[LED]LED index is %d freqsel=%d\n", time_index, pmic_freqsel_array[time_index]); duty=32*led->blink_on_time/(led->blink_on_time + led->blink_off_time);
从以上代码除了可以看到其本来就不支持1999ms以上的闪烁频率之外,还看到了另外一个问题,就是新手经常发生的数组越界问题,没有采取任何的访问保护。
相关文章推荐
- 由一个LED闪烁问题发现的MTK的LED driver中存在的问题
- 终于发现自己存在的一个问题:关于用不用VC创建对象的问题
- 问题:rm一个文件后,发现文件还是存在的
- [Firefox]新发现的Firefox功能及存在的问题
- 发现一个很牛B的问题
- 发现一个vs2005中的webBrowser控件的问题。
- [学习笔记][ASP.NET]发现CuteEditor的一个小问题
- 发现一个数据连接的Provider的问题[Access适用]
- 偶然发现的一个有点奇怪的SQL语句问题
- 发现一个大问题
- [疑问]作了一个用Js遍历树节点的函数,后来发现一个问题!
- 请注意,刚发现一个问题。访问者来看看
- 发现QQ的一个小问题
- 最近在使用sps类库过程中发现了一个让我比较疑惑的问题(有关items属性的)
- 今天看StarterKit.Communities中的关于获取路径部分,发现一个问题?难道老外也会不仔细看MSDN,还是?
- 又发现一个AspNetPager的问题
- 今天发现了一个sql的小问题
- 同一个网站,根站点和虚拟目录站点 ASP.net 版本不一样,存在的一个麻烦问题。
- 近日发现vs2005安装的一个问题
- 发现好的网站,解决了一个技术问题