2016-03-10 52 views
-1

看看这篇文章的底部找到我的最终更新。错误:协处理器超出范围偏移部分解决]

我试图在使用CodeWarrior的飞思卡尔Kinetis K70F120M开发板上运行模糊推理系统(FIS)应用程序。

我写了一个翻译软件,读取两个纯文本文件(一个包含一个模糊模型,另一个是得到认可的模式),并写道,可以上传到开发板为基于数据的C++应用程序通过传感器读取。

所有包含在FIS C++应用的信息是由解释器写入,就没有机会我失算一个矢量的尺寸,因为元素的量是从包含在所述文件中的数据进行计数。

我已经成功地运行在黑板上FIS示例应用程序,但是当我尝试运行实际应用中我需要运行出现以下错误71:

描述资源路径位置类型

C:\ Users \ CRISTH〜1 \ AppData \ Local \ Temp \ ccLOvcxh.s协处理器偏移超出范围
Prueba FALLAS 2
line 8696,external location:C:\ Users \ CRISTH〜1 \ AppData \ Local \ Temp \ ccLOvcxh.s
C/C++问题

C:\ Users \ CRISTH〜1 \ Ap的pData \本地\ TEMP \ ccLOvcxh.s协处理器的偏移超出范围
Prueba FALLAS 2
线8697,外部位置:C:\用户\ CRISTH〜1个\应用程序数据\本地\ TEMP \ ccLOvcxh.s
C/C++问题

...

C:\用户\ CRISTH〜1 \应用程序数据\本地\ TEMP \ ccLOvcxh.s协处理器的偏移超出范围
Prueba FALLAS 2
线15897,外部位置:C:\用户\ CRISTH〜1个\应用程序数据\本地\ TEMP \ ccLOvcxh.s
C/C++问题

的mingw32-MAK​​E:*** [源头/ main.o]错误1
Prueba FALLAS 2
C/C++问题

这是我试图运行代码:

#include "derivative.h" 
#include "network.h" 

int main() { 
Network ReporteDeFallasCEC; 
const int NInputs = 50, NClasses = 10, NRules = 32; 
ReporteDeFallasCEC.initialize(); 
ReporteDeFallasCEC.setClassNeurons(NClasses); 
ReporteDeFallasCEC.setRuleNeurons(NRules, 0, Network::Pruning()); 

Universe input1; 
input1.setLimits(0, 100); 
input1.addFuzzySet(FuzzySet("vs", 0, 17.52, 35.04)); 
input1.addFuzzySet(FuzzySet("s", 9.3, 29.65, 50)); 
input1.addFuzzySet(FuzzySet("m", 23.82, 45.24, 66.67)); 
input1.addFuzzySet(FuzzySet("l", 50, 66.67, 83.33)); 
input1.addFuzzySet(FuzzySet("vl", 66.67, 83.33, 100)); 
ReporteDeFallasCEC.addVariable(input1); 

Universe input2; 
input2.setLimits(0, 100); 
input2.addFuzzySet(FuzzySet("vs", 0, 24.75, 49.51)); 
input2.addFuzzySet(FuzzySet("s", 5.45, 27.72, 50)); 
input2.addFuzzySet(FuzzySet("m", 33.33, 5, 6.67)); 
input2.addFuzzySet(FuzzySet("l", 50, 66.67, 83.33)); 
input2.addFuzzySet(FuzzySet("vl", 66.67, 83.33, 100)); 
ReporteDeFallasCEC.addVariable(input2); 

//...here goes the remaining "universe" objects 

Universe input50; 
input50.setLimits(0, 100); 
input50.addFuzzySet(FuzzySet("vs", 0, 22.79, 45.57)); 
input50.addFuzzySet(FuzzySet("s", 0, 34.55, 100)); 
input50.addFuzzySet(FuzzySet("m", 20.59, 43.63, 66.67)); 
input50.addFuzzySet(FuzzySet("l", 42.4, 68.49, 95.99)); 
input50.addFuzzySet(FuzzySet("vl", 66.67, 83.33, 100)); 
ReporteDeFallasCEC.addVariable(input50); 

ClassNeuron InterferenciaDeGas; 
ClassNeuron TuberiaDesancladaConGolpeDeFluido; 
ClassNeuron RoturaDeVarilla; 
ClassNeuron FugaEnLaValvulaFijaDePie; 
ClassNeuron FugaEnLaValvulaViajera; 
ClassNeuron BarrilDeLaBombaDoblado; 
ClassNeuron BuenLlenadoConTuberiaAnclada; 
ClassNeuron AgujeroEnElBarrilDeLaBomba; 
ClassNeuron AnclaDeTuberiaEnMalFuncionamiento; 
ClassNeuron BarrilDeLaBombaGastado; 

RuleNeuron FLRule65248697 = RuleNeuron(); 
FLRule65248697.setNumInputsNeurons(NInputs); 
FLRule65248697.setNumClasses(NClasses); 
FLRule65248697.setAntecedent(0, 0); 
FLRule65248697.setAntecedent(1, 0); 
FLRule65248697.setAntecedent(2, 0); 
FLRule65248697.setAntecedent(3, 0); 
FLRule65248697.setAntecedent(4, 0); 
FLRule65248697.setAntecedent(5, 0); 
FLRule65248697.setAntecedent(6, 0); 
FLRule65248697.setAntecedent(7, 0); 
FLRule65248697.setAntecedent(8, 0); 
FLRule65248697.setAntecedent(9, 0); 
FLRule65248697.setAntecedent(10, 0); 
FLRule65248697.setAntecedent(11, 2); 
FLRule65248697.setAntecedent(12, 2); 
FLRule65248697.setAntecedent(13, 3); 
FLRule65248697.setAntecedent(14, 3); 
FLRule65248697.setAntecedent(15, 3); 
FLRule65248697.setAntecedent(16, 4); 
FLRule65248697.setAntecedent(17, 4); 
FLRule65248697.setAntecedent(18, 4); 
FLRule65248697.setAntecedent(19, 4); 
FLRule65248697.setAntecedent(20, 4); 
FLRule65248697.setAntecedent(21, 4); 
FLRule65248697.setAntecedent(22, 4); 
FLRule65248697.setAntecedent(23, 4); 
FLRule65248697.setAntecedent(24, 4); 
FLRule65248697.setAntecedent(25, 3); 
FLRule65248697.setAntecedent(26, 4); 
FLRule65248697.setAntecedent(27, 4); 
FLRule65248697.setAntecedent(28, 4); 
FLRule65248697.setAntecedent(29, 4); 
FLRule65248697.setAntecedent(30, 4); 
FLRule65248697.setAntecedent(31, 4); 
FLRule65248697.setAntecedent(32, 4); 
FLRule65248697.setAntecedent(33, 4); 
FLRule65248697.setAntecedent(34, 4); 
FLRule65248697.setAntecedent(35, 4); 
FLRule65248697.setAntecedent(36, 4); 
FLRule65248697.setAntecedent(37, 4); 
FLRule65248697.setAntecedent(38, 4); 
FLRule65248697.setAntecedent(39, 4); 
FLRule65248697.setAntecedent(40, 4); 
FLRule65248697.setAntecedent(41, 4); 
FLRule65248697.setAntecedent(42, 4); 
FLRule65248697.setAntecedent(43, 4); 
FLRule65248697.setAntecedent(44, 4); 
FLRule65248697.setAntecedent(45, 4); 
FLRule65248697.setAntecedent(46, 4); 
FLRule65248697.setAntecedent(47, 4); 
FLRule65248697.setAntecedent(48, 4); 
FLRule65248697.setAntecedent(49, 4); 
FLRule65248697.setConsecuent(1); 
ReporteDeFallasCEC.addRule(FLRule65248697); 

RuleNeuron FLRule50510248 = RuleNeuron(); 
FLRule50510248.setNumInputsNeurons(NInputs); 
FLRule50510248.setNumClasses(NClasses); 
FLRule50510248.setAntecedent(0, 0); 
FLRule50510248.setAntecedent(1, 0); 
FLRule50510248.setAntecedent(2, 0); 
FLRule50510248.setAntecedent(3, 0); 
FLRule50510248.setAntecedent(4, 0); 
FLRule50510248.setAntecedent(5, 0); 
FLRule50510248.setAntecedent(6, 0); 
FLRule50510248.setAntecedent(7, 0); 
FLRule50510248.setAntecedent(8, 0); 
FLRule50510248.setAntecedent(9, 0); 
FLRule50510248.setAntecedent(10, 0); 
FLRule50510248.setAntecedent(11, 0); 
FLRule50510248.setAntecedent(12, 0); 
FLRule50510248.setAntecedent(13, 0); 
FLRule50510248.setAntecedent(14, 2); 
FLRule50510248.setAntecedent(15, 4); 
FLRule50510248.setAntecedent(16, 4); 
FLRule50510248.setAntecedent(17, 4); 
FLRule50510248.setAntecedent(18, 4); 
FLRule50510248.setAntecedent(19, 4); 
FLRule50510248.setAntecedent(20, 4); 
FLRule50510248.setAntecedent(21, 4); 
FLRule50510248.setAntecedent(22, 4); 
FLRule50510248.setAntecedent(23, 4); 
FLRule50510248.setAntecedent(24, 4); 
FLRule50510248.setAntecedent(25, 3); 
FLRule50510248.setAntecedent(26, 4); 
FLRule50510248.setAntecedent(27, 4); 
FLRule50510248.setAntecedent(28, 4); 
FLRule50510248.setAntecedent(29, 4); 
FLRule50510248.setAntecedent(30, 4); 
FLRule50510248.setAntecedent(31, 4); 
FLRule50510248.setAntecedent(32, 4); 
FLRule50510248.setAntecedent(33, 4); 
FLRule50510248.setAntecedent(34, 4); 
FLRule50510248.setAntecedent(35, 4); 
FLRule50510248.setAntecedent(36, 4); 
FLRule50510248.setAntecedent(37, 4); 
FLRule50510248.setAntecedent(38, 4); 
FLRule50510248.setAntecedent(39, 4); 
FLRule50510248.setAntecedent(40, 4); 
FLRule50510248.setAntecedent(41, 4); 
FLRule50510248.setAntecedent(42, 4); 
FLRule50510248.setAntecedent(43, 4); 
FLRule50510248.setAntecedent(44, 4); 
FLRule50510248.setAntecedent(45, 4); 
FLRule50510248.setAntecedent(46, 4); 
FLRule50510248.setAntecedent(47, 4); 
FLRule50510248.setAntecedent(48, 4); 
FLRule50510248.setAntecedent(49, 4); 
FLRule50510248.setConsecuent(2); 
ReporteDeFallasCEC.addRule(FLRule50510248); 

//...here goes the remaining "RuleNeuron" objects 

RuleNeuron FLRule2056998 = RuleNeuron(); 
FLRule2056998.setNumInputsNeurons(NInputs); 
FLRule2056998.setNumClasses(NClasses); 
FLRule2056998.setAntecedent(0, 0); 
FLRule2056998.setAntecedent(1, 0); 
FLRule2056998.setAntecedent(2, 0); 
FLRule2056998.setAntecedent(3, 0); 
FLRule2056998.setAntecedent(4, 0); 
FLRule2056998.setAntecedent(5, 0); 
FLRule2056998.setAntecedent(6, 0); 
FLRule2056998.setAntecedent(7, 0); 
FLRule2056998.setAntecedent(8, 0); 
FLRule2056998.setAntecedent(9, 0); 
FLRule2056998.setAntecedent(10, 0); 
FLRule2056998.setAntecedent(11, 1); 
FLRule2056998.setAntecedent(12, 1); 
FLRule2056998.setAntecedent(13, 1); 
FLRule2056998.setAntecedent(14, 1); 
FLRule2056998.setAntecedent(15, 2); 
FLRule2056998.setAntecedent(16, 2); 
FLRule2056998.setAntecedent(17, 3); 
FLRule2056998.setAntecedent(18, 3); 
FLRule2056998.setAntecedent(19, 4); 
FLRule2056998.setAntecedent(20, 3); 
FLRule2056998.setAntecedent(21, 4); 
FLRule2056998.setAntecedent(22, 3); 
FLRule2056998.setAntecedent(23, 3); 
FLRule2056998.setAntecedent(24, 4); 
FLRule2056998.setAntecedent(25, 0); 
FLRule2056998.setAntecedent(26, 0); 
FLRule2056998.setAntecedent(27, 0); 
FLRule2056998.setAntecedent(28, 0); 
FLRule2056998.setAntecedent(29, 0); 
FLRule2056998.setAntecedent(30, 0); 
FLRule2056998.setAntecedent(31, 0); 
FLRule2056998.setAntecedent(32, 0); 
FLRule2056998.setAntecedent(33, 1); 
FLRule2056998.setAntecedent(34, 1); 
FLRule2056998.setAntecedent(35, 1); 
FLRule2056998.setAntecedent(36, 1); 
FLRule2056998.setAntecedent(37, 2); 
FLRule2056998.setAntecedent(38, 2); 
FLRule2056998.setAntecedent(39, 2); 
FLRule2056998.setAntecedent(40, 2); 
FLRule2056998.setAntecedent(41, 3); 
FLRule2056998.setAntecedent(42, 3); 
FLRule2056998.setAntecedent(43, 3); 
FLRule2056998.setAntecedent(44, 4); 
FLRule2056998.setAntecedent(45, 4); 
FLRule2056998.setAntecedent(46, 4); 
FLRule2056998.setAntecedent(47, 4); 
FLRule2056998.setAntecedent(48, 3); 
FLRule2056998.setAntecedent(49, 4); 
FLRule2056998.setConsecuent(3); 
ReporteDeFallasCEC.addRule(FLRule2056998); 

const int nPatterns = 60; 
double patternArray[nPatterns][NInputs] = { 
{ 6.60, 9.70, 12.2, 4.60, 5.70, 8.70, 12.9, 7.60, 11.8, 7.90, 24.9, 44.3, 55.0, 63.6, 71.3, 75.0, 76.8, 80.9, 84.50, 86.50, 90.70, 91.40, 95.00, 97.30, 93.80, 69.20, 82.60, 95.80, 98.90, 97.20, 97.70, 97.80, 96.90, 97.50, 94.50, 93.50, 95.80, 92.50, 93.60, 94.20, 92.00, 90.20, 91.60, 90.20, 91.50, 91.80, 90.70, 93.90, 96.10, 95.70 }, 
{ 7.70, 5.50, 4.50, 0.60, 1.70, 5.90, 6.70, 6.70, 8.60, 10.1, 5.60, 5.30, 8.40, 24.3, 57.2, 79.8, 88.0, 90.8, 91.10, 91.90, 92.40, 91.80, 91.60, 91.40, 95.70, 62.20, 94.10, 96.40, 91.60, 92.40, 94.00, 97.40, 97.70, 97.80, 96.10, 94.40, 94.40, 96.00, 98.10, 99.30, 94.40, 94.50, 96.30, 96.80, 94.20, 94.50, 96.60, 98.70, 97.10, 97.30 }, 

//...here goes the remaining pattern rows 

{ 1.95, 3.10, 2.00, 3.20, 1.90, 3.70, 5.70, 5.00, 2.10, 3.50, 3.30, 2.05, 2.95, 2.40, 2.70, 3.80, 4.10, 3.30, 4.700, 5.100, 5.300, 5.900, 8.600, 14.30, 38.70, 87.40, 94.80, 96.00, 97.00, 97.40, 98.40, 98.80, 98.10, 98.90, 96.50, 92.00, 83.80, 75.00, 67.80, 69.00, 77.00, 87.70, 94.90, 96.00, 95.80, 95.60, 95.70, 93.80, 87.60, 38.80 }, }; 

double pattern[NInputs]; 
for (int i = 0; i < nPatterns; i++) { 
    std::cout << "Patron " << i + 1 << ": [ "; 
    for (int j = 0; j < NInputs; j++) { 
     pattern[j] = patternArray[i][j]; 
     std::cout << patternArray[i][j]; 
     if (j != NInputs - 1) { 
      std::cout << ", "; 
     } 
    } 
    std::cout << " ]" << "\n"; 
    int clase = ReporteDeFallasCEC.classificate(pattern); 
    std::cout << "\nClase [ " << clase << " ]\n\n"; 
} 

//std::cin.get(); 
return 0; 
} 

这CodeWarrior项目是在CodeWarrior IDE的v.10.6.4创建为新的Bareboard项目:
设备中使用:MK70FN1M0处理器( K70F 120兆赫家庭)
项目类型:应用
结合使用:开源JTAG
语言:C++
浮点:硬件(-mfloat-ABI =硬)与(-fp vfpv4)
我/ O支持:调试器控制台
ARM编译工具:GCC
快速应用开发:无
开始与视角设计:目前来看

我建设与FLASH的配置和调试为“Prueba FALLAS 2_FLASH_OSJTAG”项目。
我在Windows 7上运行CodeWarrior。

请帮我看看什么能阻止代码在电路板上运行,我非常感谢您的帮助。
请让我知道是否有一些信息缺少解决问题所需的信息。

谢谢!

更新#1: 我已经删除有关“ClassNeuron”和“RuleNeuron”对象和包括利用该载体的功能patternArray矢量的生成代码,因此剩下的应用程序仅创建50个“宇宙”对象。这样做之后,我继续删除了一些有意识的Universe对象,试图找出是否存在内存限制相关的问题,但是如果它是15或26个对象,我会得到上述类型的随机错误数量(偶数0错误)。 我需要用精确数量的对象(50个Universe,10个类,32个规则& 50x60模式阵列)来运行我的应用程序。

我怀疑问题与代码创建的对象数量有关,但我不确定编译项目时是否存在由CodeWarrior设置的FLASH内存限制。尽管如此,我很确定这些错误与数组处理没有任何关系,因为我已经从项目中完全删除了对patternArray的任何引用,而且,如果我在数组中做了错误,CodeWarrior IDE应该给出我对此有了一些线索。

请帮助我解决这个问题,因为即使在恩智浦(飞思卡尔)社区,也很难找到关于此问题的信息。

更新#2: 如看来,这个错误其实是一个编译器错误以下相关问题说明,请证实对我说:

这是我的帖子在NXP(前身为飞思卡尔)社区:co-processor offset out of range

最后更新: 我搬到我的代码中的Kinetis设计工作室的项目。它编译时没有任何错误,我可以调试应用程序,直到电路板内存耗尽,然后我应用了一些优化更改,一切都变得很好。

非常感谢那些试图帮助我的人。

+0

请不要低估这个问题,如果这不是一个“好”的问题,告诉我怎样才能让它变得更好。我不是一个资深程序员,但也不是初学者。 – crizart

回答

0

既然它表明它可能与数组大小有关,我建议首先检查你的数组初始化。

错误co-processor offset out of range与您的任何变量无关,但存在数组变量:double patternArray[nPatterns][NInputs]。这些元素的数量是否正确?

+0

谢谢你的回答。我尝试了解定义和使用patternArray的代码块,只留下“universe”,“classneuron”和“ruleneuron”对象的创建和操作以及错误数量保持不变。我进一步评论了ruleneuron和classneuron的定义,并且仍然存在错误(现在降至62)。最后,我开始逐个评论宇宙物体,直到达到宇宙输入26,那里的错误停止发生。 – crizart

+0

@ user3606929很高兴你以某种方式解决了你的问题。诚实地说,我希望这些工具有更多的帮助。祝你今后好运。 – hauron

+0

对不起,英文不是我的第一语言,我不是说我已经解决了这个问题,只是当我删除一些宇宙对象时,错误停止弹出。现在,我尝试评论所有的宇宙对象,并再次没有显示任何问题。我很困惑,另一个项目工作得很好,我仍然在等待答案。 :) – crizart

相关问题