打印

编译出错Number of virtual registers beyond limit. Reduce function size

[复制链接]
1990|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
     一部分代码是用simulink生成的,c代码里边有比较长的矩阵运算,用6.4.12版本的编译工具编译就出现了Number of virtual registers beyond limit. Reduce function size错误,谷歌了一下别人用16.9.0版本的编译工具编译可以,但我用16.9.0版本的工具编译太慢了,编译一个工程就要花半小时,肯定有问题,请问一下论坛里有没有人遇到过同样的问题,能否给指点一下?

相关帖子

沙发
dirtwillfly| | 2017-3-17 17:12 | 只看该作者
simulink生产代码的时候,并没有考虑到使用寄存器等资源的情况。你改变开发环境优化选项试试

使用特权

评论回复
板凳
大马哈鱼100|  楼主 | 2017-3-17 18:13 | 只看该作者
dirtwillfly 发表于 2017-3-17 17:12
simulink生产代码的时候,并没有考虑到使用寄存器等资源的情况。你改变开发环境优化选项试试 ...

    没太明白,请问开发环境优化选项具体指的是什么?

开发环境优化.png (40.61 KB )

开发环境优化.png

使用特权

评论回复
地板
dirtwillfly| | 2017-3-17 20:11 | 只看该作者
你用的什么开发环境?不像是ccs阿

使用特权

评论回复
5
dirtwillfly| | 2017-3-17 20:19 | 只看该作者
ccs里的优化选项

使用特权

评论回复
6
lzmm| | 2017-3-17 20:20 | 只看该作者
这个16.9.0版本的编译工具是什么

使用特权

评论回复
7
lzmm| | 2017-3-17 20:24 | 只看该作者
虚拟的寄存器需要应用在哪里?

使用特权

评论回复
8
大马哈鱼100|  楼主 | 2017-3-17 21:15 | 只看该作者
lzmm 发表于 2017-3-17 20:20
这个16.9.0版本的编译工具是什么

compiler version

编译工具.png (11.36 KB )

编译工具.png

使用特权

评论回复
9
大马哈鱼100|  楼主 | 2017-3-17 21:16 | 只看该作者
lzmm 发表于 2017-3-17 20:24
虚拟的寄存器需要应用在哪里?

我也不知道,没有找到相关的文档

使用特权

评论回复
10
大马哈鱼100|  楼主 | 2017-3-17 21:24 | 只看该作者

测试了一下好像没太大的影响,出问题的部分程序,另外还有很多行这样的代码,用simulink导出的
  /* '<S4>:1:148' */
    rty_nextP[80] = ((((((((((((rtb_Init_p[1] * SF_idx_9 + rtb_Init_p[0]) +
      rtb_Init_p[2] * SF_idx_11) + rtb_Init_p[3] * SF_idx_10) + rtb_Init_p[10] *
      g_y) + rtb_Init_p[11] * h_y) + rtb_Init_p[12] * SF_idx_16) * SF_idx_4 +
                          ((((((rtb_Init_p[81] * SF_idx_9 + rtb_Init_p[80]) +
      rtb_Init_p[82] * SF_idx_11) + rtb_Init_p[83] * SF_idx_10) + rtb_Init_p[90]
      * g_y) + rtb_Init_p[91] * h_y) + rtb_Init_p[92] * SF_idx_16)) +
                         ((((((rtb_Init_p[33] * SF_idx_9 + rtb_Init_p[32]) +
      rtb_Init_p[34] * SF_idx_11) + rtb_Init_p[35] * SF_idx_10) + rtb_Init_p[42]
      * g_y) + rtb_Init_p[43] * h_y) + rtb_Init_p[44] * SF_idx_16) * SF_idx_3) +
                        ((((((rtb_Init_p[49] * SF_idx_9 + rtb_Init_p[48]) +
      rtb_Init_p[50] * SF_idx_11) + rtb_Init_p[51] * SF_idx_10) + rtb_Init_p[58]
      * g_y) + rtb_Init_p[59] * h_y) + rtb_Init_p[60] * SF_idx_16) * SF_idx_5) -
                       ((((((rtb_Init_p[17] * SF_idx_9 + rtb_Init_p[16]) +
      rtb_Init_p[18] * SF_idx_11) + rtb_Init_p[19] * SF_idx_10) + rtb_Init_p[26]
                          * g_y) + rtb_Init_p[27] * h_y) + rtb_Init_p[28] *
                        SF_idx_16) * SPP_idx_0) + ((((((rtb_Init_p[225] *
      SF_idx_9 + rtb_Init_p[224]) + rtb_Init_p[226] * SF_idx_11) + rtb_Init_p
      [227] * SF_idx_10) + rtb_Init_p[234] * g_y) + rtb_Init_p[235] * h_y) +
      rtb_Init_p[236] * SF_idx_16) * SPP_idx_2) - ((((((rtb_Init_p[209] *
      SF_idx_9 + rtb_Init_p[208]) + rtb_Init_p[210] * SF_idx_11) + rtb_Init_p
      [211] * SF_idx_10) + rtb_Init_p[218] * g_y) + rtb_Init_p[219] * h_y) +
      rtb_Init_p[220] * SF_idx_16) * SPP_idx_10) + ((((((rtb_Init_p[241] *
      SF_idx_9 + rtb_Init_p[240]) + rtb_Init_p[242] * SF_idx_11) + rtb_Init_p
      [243] * SF_idx_10) + rtb_Init_p[250] * g_y) + rtb_Init_p[251] * h_y) +
      rtb_Init_p[252] * SF_idx_16) * (2.0F * rtb_Init[0] * rtb_Init[1] - 2.0F *
      rtb_Init[2] * rtb_Init[3]);

使用特权

评论回复
11
dirtwillfly| | 2017-3-18 08:06 | 只看该作者
大马哈鱼100 发表于 2017-3-17 21:24
测试了一下好像没太大的影响,出问题的部分程序,另外还有很多行这样的代码,用simulink导出的 ...

这种代码没啥可读性。有时间的话建议重写。推荐使用ti提供的数学库

使用特权

评论回复
12
chuntian2016| | 2017-3-18 12:34 | 只看该作者
这个没怎用过的,,不很清楚的,,跟大家学习的

使用特权

评论回复
13
大马哈鱼100|  楼主 | 2017-3-18 19:20 | 只看该作者
dirtwillfly 发表于 2017-3-18 08:06
这种代码没啥可读性。有时间的话建议重写。推荐使用ti提供的数学库 ...

其实自己按照模型也写过一版,但算法部分都固定了不好改,谢谢帮忙解答

使用特权

评论回复
14
hellosdc| | 2017-3-18 22:05 | 只看该作者
这个是什么编译器?

使用特权

评论回复
15
hellosdc| | 2017-3-18 22:09 | 只看该作者
simulink的代码不能用在C语言上吧。

使用特权

评论回复
16
i1mcu| | 2017-3-19 14:08 | 只看该作者
是不是变量设置的太大了

使用特权

评论回复
17
i1mcu| | 2017-3-19 14:12 | 只看该作者
看一下楼主的代码,可能是内部变量过大造成的。

使用特权

评论回复
18
大马哈鱼100|  楼主 | 2017-3-20 14:51 | 只看该作者
hellosdc 发表于 2017-3-18 22:05
这个是什么编译器?

上传图这个只是simulink的参数配置界面,编译器是CCS

使用特权

评论回复
19
大马哈鱼100|  楼主 | 2017-3-20 14:52 | 只看该作者
i1mcu 发表于 2017-3-19 14:12
看一下楼主的代码,可能是内部变量过大造成的。

我猜也有可能是这样,但不知道有什么办法解决

使用特权

评论回复
20
gygp| | 2017-3-24 21:21 | 只看该作者
存储的空间太大了吗

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝