请为任务Tricore编译器显示的以下错误提供建议
我为Tricore控制器编写了一个C程序,编译后我得到了下面的错误消息,我实际上无法理解。你能提供一些信息吗 我可以猜测它与内存层次结构有关,但仍然无法找出实际问题请为任务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
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。