打印

gd32f150 firmare DAC 的一个小漏洞

[复制链接]
1545|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zj4068|  楼主 | 2015-6-16 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**
  * @brief  Set the specified data holding register value for DAC channel1.
  * @param  DAC_Align: Specifies the data alignment for DAC channel1.
  *   This parameter can be one of the following values:
  *     @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
  *     @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
  *     @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
  * @param  Data: Data to be loaded in the selected data holding register.
  * @retval None
  */
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
{
    __IO uint32_t temp = 0;

    temp = (uint32_t)DAC_BASE;
    temp += DHR12R_OFFSET + DAC_Align;

    /* Set the DAC channel1 selected data holding register */
    *(__IO uint32_t *) temp = Data;
}

今天正好在调dac,我调用左对齐,数值会把低4位的数据干掉,dac输出的值很小,我仔细看了一下这个函数和相关的寄存器,如果左对齐的话要数据要左移4位,算不算这个函数的一个小漏洞

void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
{
    __IO uint32_t temp = 0;

    temp = (uint32_t)DAC_BASE;
    temp += DHR12R_OFFSET + DAC_Align;

    if(DAC_Align == DAC_ALIGN_12B_L)
      *(__IO uint32_t *) temp = (Data << 4);
    else
      /* Set the DAC channel1 selected data holding register */
      *(__IO uint32_t *) temp = Data;
}

沙发
smilingangel| | 2015-6-16 19:06 | 只看该作者
这种情况怎么出现的?

使用特权

评论回复
板凳
白丁野老| | 2015-6-17 11:13 | 只看该作者
算不算漏洞,也没个参考的,可以试着比比同样STM32的库函数,是不是也是一样的。如果不一样,那就是漏洞,只能这么说了。

使用特权

评论回复
地板
kywang| | 2015-6-17 16:25 | 只看该作者
对于左对齐,数值会把低4位的数据干掉,是不需要移位的。所以上面的函数第一个是对的,第二个是错误的。

使用特权

评论回复
5
kywang| | 2015-6-17 16:34 | 只看该作者
对于左对齐,数值会把低4位的数据干掉,对于16位数据,取高12位,把低4位干掉,如果你嫌弃DAC 输出小的话,可以将高12位设置为大数据就行了。所有GD的库是没有问题的。

使用特权

评论回复
6
baimiaocun2015| | 2015-6-17 21:39 | 只看该作者
这个是怎么回事呢?数据类型不对?

使用特权

评论回复
7
麦可可| | 2015-6-19 18:35 | 只看该作者
这也算一个不大不小的bug吧,要注意。

使用特权

评论回复
8
zhangbo1985| | 2015-6-19 19:07 | 只看该作者
调用左对齐,数值会把低4位的数据干掉??这个是怎样的一个过程的?不是很清楚楼主的意思的。

使用特权

评论回复
9
zhangbo1985| | 2015-6-19 19:07 | 只看该作者
若是将数据左移操作的话,,数据肯定会变化的啊。

使用特权

评论回复
10
月正浓| | 2015-6-22 09:54 | 只看该作者
我试试去,居然还有这么一个情况

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

22

帖子

1

粉丝