Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请为任务Tricore编译器显示的以下错误提供建议_C_Assembly_Microcontroller_Microc - Fatal编程技术网

请为任务Tricore编译器显示的以下错误提供建议

请为任务Tricore编译器显示的以下错误提供建议,c,assembly,microcontroller,microc,C,Assembly,Microcontroller,Microc,我为Tricore控制器编写了一个C程序,编译后我得到了下面的错误消息,我实际上无法理解。你能提供一些信息吗 我可以猜测它与内存层次结构有关,但仍然无法找出实际问题 Error Messages: ltc I455: requirement: 193K (0x304c8) bytes of RAM area in space spe:tc:linear amk E451: make stopped ltc I456: section type: group restriction - c

我为Tricore控制器编写了一个C程序,编译后我得到了下面的错误消息,我实际上无法理解。你能提供一些信息吗

我可以猜测它与内存层次结构有关,但仍然无法找出实际问题

Error Messages:
ltc I455:   requirement: 193K (0x304c8) bytes of RAM area in space spe:tc:linear
amk E451: make stopped
ltc I456:   section type: group restriction - clustered
ltc I457:   .bss.Pro2.group (60) (0x30140 bytes)
ltc I457:   .bss._dbg_request.libcs_fpu (418) (0x14 bytes)
ltc I457:   .bss.Pro2.rocount (61) (0x2d4 bytes)
ltc I457:   .bss.stdin_buf.libcs_fpu (273) (0x50 bytes)
ltc I457:   .bss.stdout_buf.libcs_fpu (274) (0x50 bytes)
代码:

/*
 ============================================================================
 Name        : hough.c
 Author      :
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M 4
#define N 4
#define PI 3.14159265
typedef struct point {
    int x;
    int y;
} point;
typedef struct points {
    point points[M * N];
    double ro;
    int pointCount;
} points;
int image[M][N] = { { 1, 1, 0, 1 }, { 1, 1, 0, 1 }, { 1, 1, 1, 1 },
        { 1, 0, 0, 0 } };
int i, j, k;

points group[181][M * N / 2];
int rocount[181];

int compare_float(double f1, double f2) {
    float precision = 0.000001;
    if (((f1 - precision) < f2) && ((f1 + precision) > f2)) {
        return 1;
    } else {
        return 0;
    }
}

void insert(double ro, int x, int y, int angle) {
    int loopcount;
    int roflag = 0;
    if (rocount[angle] == 0) {
        group[angle][rocount[angle]].ro = ro;
        group[angle][rocount[angle]].pointCount = 0;
        group[angle][rocount[angle]].points[group[angle][rocount[angle]].pointCount].x =
                x;
        group[angle][rocount[angle]].points[group[angle][rocount[angle]].pointCount].y =
                y;
        group[angle][rocount[angle]].pointCount++;
        rocount[angle]++;
    } else {
        for (loopcount = 0; loopcount < rocount[angle]; loopcount++) {
            if (compare_float(group[angle][loopcount].ro, ro)) {
                roflag = 1;

                group[angle][loopcount].points[group[angle][loopcount].pointCount].x =
                        x;
                group[angle][loopcount].points[group[angle][loopcount].pointCount].y =
                        y;
                group[angle][loopcount].pointCount++;
                break;
            }

        }
        if (roflag == 0) {
            group[angle][rocount[angle]].ro = ro;
            group[angle][rocount[angle]].pointCount = 0;
            group[angle][rocount[angle]].points[group[angle][rocount[angle]].pointCount].x =
                    x;
            group[angle][rocount[angle]].points[group[angle][rocount[angle]].pointCount].y =
                    y;

            group[angle][rocount[angle]].pointCount++;
            rocount[angle]++;
        }
    }
}

int main(void) {
    double ro;
    point x1;
    for (k = -90; k <= 90; k++) {
        rocount[k + 90];
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                if (image[i][j] == 1) {
                    ro = (i + 1) * cos(k * (PI / 180))
                            + (j + 1) * sin(k * (PI / 180));
                    insert(ro, i + 1, j + 1, k + 90);

                }
            }
        }

    }
    for (k = -90; k <= 90; k++) {

        for (i = 0; i < rocount[k + 90]; i++) {
            printf("\n Angle :%d RO:%f \n", k, group[k + 90][i].ro);

            for (j = 0; j < group[k + 90][i].pointCount; j++) {
                printf("(x:%d,y:%d)", group[k + 90][i].points[j].x,
                        group[k + 90][i].points[j].y);
            }
        }
    }
    return EXIT_SUCCESS;
}
/*
============================================================================
姓名:hough.c
作者:
版本:
版权:您的版权声明
描述:C语言的Hello World,Ansi风格
============================================================================
*/
#包括
#包括
#包括
#定义M4
#定义n4
#定义PI 3.14159265
类型定义结构点{
int x;
int-y;
}点;
typedef结构点{
点-点[M*N];
双反渗透;
int点计数;
}点数;
int image[M][N]={{1,1,0,1},{1,1,0,1},{1,1,1},
{ 1, 0, 0, 0 } };
int i,j,k;
积分组[181][M*N/2];
国际计算[181];
整数比较浮点数(双f1,双f2){
浮动精度=0.000001;
如果(((f1-精度)f2)){
返回1;
}否则{
返回0;
}
}
空心插入件(双ro、整数x、整数y、整数角度){
整数循环计数;
int-roflag=0;
如果(rocount[角度]==0){
组[angle][rocount[angle]]。ro=ro;
组[angle][rocount[angle]]。点计数=0;
组[angle][rocount[angle]]。点[group[angle][rocount[angle]]。点计数].x=
x;
组[angle][rocount[angle]]。点[group[angle][rocount[angle]]。点计数].y=
Y
组[angle][rocount[angle]];
rocount[角度]+;
}否则{
for(loopcount=0;loopcount对于(k=-90;k我不知道Tricore控制器,但看起来您已经超出了某些限制。我假设此控制器的资源非常有限,并且构建过程会检查您是否超出了它们

要求:193K(0x304c8)字节的内存空间spe:tc:linear
必须表示您使用了193K的内容,这太多了。
.bss.Pro2.group(60)(0x30140字节)
表示大部分数据来自bss部分(即静态未初始化变量)


我没有计算,但是
积分组[181][M*N/2];
的大小可能是主要问题。

请查找上面的代码。.我在帖子中包含了代码。是的,181*4*2*(4*4*2*4+8+4)大约是200kB。