跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1MD1浮点计算负载问题

YTM32B1MD1浮点计算负载问题

已定时 已固定 已锁定 已移动 YTM32B1M系列
3 帖子 2 发布者 71 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • N 离线
    N 离线
    NorbertShi
    编写于 最后由 编辑
    #1

    近期在现有项目上将原有部分定点计算改为浮点计算。但修改后发现负载率非常高。
    原定点计算时100us周期下负载率大概50~60%。改为浮点后,周期放宽到200us,负载率还是达到80~90%。翻了将近4倍
    目前相关设置如下,启用了硬件FPU,优化O1。还有哪些地方我设置不对的么?
    4bfb3194-8a54-4a1b-b4ae-5497a0d8fa46-image.png
    8ac1fd8a-cd06-4455-8a99-9c9a479fc405-image.png
    b565e51b-ef25-4ee7-b986-1a0976789a8a-image.png

    1 条回复 最后回复
    0
    • EnweiE 离线
      EnweiE 离线
      Enwei YunTu
      编写于 最后由 编辑
      #2

      请检查一下你代码中浮点数的定义和调用,YTM32B1MD14的CM33内核仅支持单精度浮点数,也是就是32bit的float类型,不支持双精度64bit的double类型:
      因此,正确的写法应该是:

      float a, b; a = 1.0f * 5U; b = 0.32f * 0.8f;
      

      而不能是:

      float a, b; a = 1.0 * 5U; b = 0.32 * 0.8;
      

      因为C语言默认1.0,0.32,0.8为double类型,将使用C语言的math库的软件算法实现,而不是编译为FPU硬件指令。
      具体可以参考如下公众号文章(点击链接即可直接调整阅读)

      https://mp.weixin.qq.com/s/MKPshbkChNOGrGsAJ5uDpQ

      1 条回复 最后回复
      0
      • N 离线
        N 离线
        NorbertShi
        编写于 最后由 编辑
        #3

        多谢提醒,按您说的,我把初始化部分和常量部分都改为.0f的格式,改完后实测负载率从200us 80~90%降到了200us 65~70%左右。
        还有哪些设置会导致负载率增大么?

        1 条回复 最后回复
        0

      • 云途开发生态介绍

        快速上手云途开发生态

      • 云途论坛规则/Yuntu Forum Rules

        发帖前请查看

      • YT CONFIG TOOL调查问卷

        帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

      • can
        19
        demo
        19
        uds
        11
        lin stack
        7
        fbl
        5
        yt-link
        5
        adc模块
        4
        md14
        4
        Online Users
        • 登录

        • 登录或注册以进行搜索。
        • 第一个帖子
          最后一个帖子
        0
        • 版块
        • 最新
        • 标签
        • 热门