This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/TM4C123GH6PZ:在 RTOS 中使用 FFT 后调用 loader_exit ()

Guru**** 2606725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585116/rtos-tm4c123gh6pz-loader_exit-call-after-using-fft-in-rtos

器件型号:TM4C123GH6PZ

工具/软件:TI-RTOS

您好!

我在 TM4C123GXL 上使用 TI RTOS、Code Composer Studio 版本:6.2.0.00050 、RTOS 2.16.1.14、XDC 3.32.1.22。

我尝试编写一个任务来计算 CMSIS 库的 CFFT。 当程序尝试执行函数: arm_CFFT_radx4_F32()时,它跳转到结束运行的 loader_exit()。 问题似乎是 堆栈溢出问题、因此我尝试增加它们。 我也尝试使用 ROV 工具来研究这个问题、但我没有找到解决方案。

您可以找到附加的错误消息屏幕截图和我的任务的代码。

我只是想知道是否有人能帮助我找到正确的方向来解决这个问题?

此致

皮埃尔

#include "i2c_bmp180.h"

// SYS/BIOS 所需的基本头文件- TI/RTOS
/* XDCtools 头文件*/
#include 
#include 
#include 
#include 
/* BIOS 头文件*/
#include 

/* TI-RTOS 驱动程序头文件*/
#include 
#include 

/*标准库头文件*/
#include 
#include 
#include 

/*电路板头文件*/
#include "Board.h"/* CMSIS 头文件*/
#include 
#include "arm_const_structs.h"

/* Board Header file */
#include "Board.h"

#define NB_SAMPLE_ACC 64



#ifndef M_PI
#define M_PI 3.141592658979323846
#endif



void algo (UARg argo0、UArg arg1)
{

/*


volatile INT32
= Utf_status_t = 32 nb = unvolatile tintryt = 32 natile nb = uint2;nb = uatile tid_intryout1 natile status/intrl 32 nb = uint1;nateg_intrl 32


/* FFT 数据/处理缓冲区*/
float32_t Hann[NB_SAMPLE_ACC];
float32_t DATA_array1[NB_SAMPLE_ACC];
float32_t DATA_OUTPUT [NB_SAMPLE_ACC/2];
int i =0;
float32_t maxValue;
uint32_t maxIndex;

对于(I = 0;I < NB_SAMPLE_ACC;I++)
{
Hann[i]= 0.5 - 0.5 * cosf ((2 * pi*i)/(NB_SAMPLE_ACC-1));
}

对于(I = 0;I < NB_SAMPLE_ACC;I++)
{
data_array1[i]= i;
}


while (1)
{

Task_sleep (1000);
//初始化 Hann 窗口


int j=0;

for (j=0;j "%d="" \n",="" );="" system_flush();="" maxindex);="" system_flush();*="" system_printf("algo="" task="" run="" \n");="" }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过使用 ROV、Hwi 模块的"异常"视图可以提供一个完整的调用栈来引导异常。

    从转储到控制台的寄存器上下文中、位置0x9750处的指令与之密切相关...

    我发现非常奇怪的是、LR 寄存器显示的值为0x20001f60、这表示一个基于 RAM 的函数被称为一些基于闪存的代码、导致了异常。 您是否有基于 RAM 的代码?

    Alan