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.

[参考译文] MSP430FR5994:将数据写入可读文件并检查存储器中的值

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1054249/msp430fr5994-writing-the-data-into-a-readable-file-and-checking-the-values-in-memory

器件型号:MSP430FR5994

在 MSP430上写入执行神经网络的代码后-我想将预测的值存储到文件中-我使用的参考代码具有'.csv '格式。 我不确定 MSP430是否能够写入'.csv '文件-在这种情况下、我可以使用什么其他格式来存储我的预测值?  

此外,我尝试在 View->Variables 选项的帮助下检查内存中变量的值,但我在断点方面遇到了一些问题。 我将在此处附上我的代码-如果有人可以告诉我我可以对我的方法进行哪些更改、这将非常有帮助。

------------------------------------------------------------------

FILE* fp;
nnom_model_t*型号;
nnom_Predict_t * pre;
int8_t*输入;
浮子原子;
uint32_t label;
size_t size = 0;

输入= load ("test_data.bin"、&size);//加载连续输入数据集(test bin)
fp = fopen ("result.csv、"w");// csv 文件作为结果
printf (fp、"label、prob\n");// csv 标头
// printf ("验证大小:%d\n"、(uint32_t)大小);

#ifdef NNOM_Using_static_memory
//使用静态存储器缓冲区时,我们需要在创建之前对其进行设置
nnom_set_static_Buf (static_Buf、sizeof (static_Buf));
#endif

模型= nnom_model_create();//创建 NNoM 模型
pre = foreciving_create (model、nnom_output_data、sizeof (nnom_output_data)、4);// 10类、 获取前四名
//model_set_callback (model、callback);

//现在从文件和数据中获取标签和数据
size_t seek;
for (seek=0;seek < size;)

//标签
uint8_t true_label[128];
memcpy (true_label、input + seek、128);
SEEK +=128;
//数据
int i;
对于(i=0;i < 128;i++)

if (搜索>=大小)
中断;
memcpy (nnom_input_data、input + seek、sizeof (nnom_input_data));
seek += sizeof (nnom_input_data);

nnom_Predict(模型、标签、&prob);//这将独立工作
//预测_run (PRE、true_label[i]、&label、&prob);//

//保存结果
printf (fp、"%d、%f\n"、label、prob);

------------------------------------------------------

与第一个问题相对应、我可以使用 CCS 支持的内容、也可以使用原始逻辑也可以工作、而不是使用"result.csv"。

其次、在 我执行迭代时、我希望观察'label'和'prob'的值-因为这些值最终会写入'.csv '文件中。 目前、我正在为  这些变量添加断点、并为'label''prob'添加 print 语句-但是、我想尝试逐行浏览代码以查看变量是否正在更新。 从我放置的观察点-在某些迭代中-我得到-'Value'- As -'Attempted to read last memory 0x..... '。

我不确定消息的含义、因为它仅在某些迭代中发生、而其他迭代显示某种值。 如果有人能让我了解如何解决这个问题、那将非常有帮助。 此外、如果需要更多信息、请告诉我。

谢谢!

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

    什么是"load()?

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

    int8_t* load (const char*文件、size_t * size)

    size_t SZ;
    File* fp = fopen (file、"rb");
    int8_t*输入;
    断言(fp);
    fseek (fp、0、seek_end);
    SZ = ftell (FP);
    fseek (fp、0、seek_set);
    输入= malloc (SZ);
    fread (输入、1、SZ、FP);
    fclose (FP);
    *大小= SZ;
    返回输入;

    这是 load()的定义

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

    您好 Siddhant、

    MSP 能够按照此线程[链接]中的验证写入.csv 文件。

    您能否发布您何时看到此消息或整个消息的屏幕截图?

    谢谢、

    王国新

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

    您好、Urica、

    没有显示 MSP 无法写入'.csv '的消息。 但是、当我运行代码并尝试将结果写入'.csv '文件时-代码会创建'.csv '文件、但不会写入任何内容。 对于该项目、我将使用库对某些输入运行推理并获取预测的输出。 预测结果需要存储在".csv"文件中。 我在加载输入二进制文件时检查了该文件的数据和大小、并检查了值、但我不确定代码为何成功创建'.csv '文件而不写入该文件。 此外、即使代码中有几个 print 语句、我也无法在控制台上看到任何打印输出。 我已包含'driverlib'和'dim4430'的头文件-导入中是否缺少一些配置文件,因为这些文件是编译的,但未正确调试或运行代码。  我在这里附上我的'main.c'代码以供参考。 如果您需要更多详细信息、请告诉我。

    谢谢!

    e2e.ti.com/.../2438.main.c

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

    您好 Siddhant、

    让我来看看为什么不向.csv 文件写入任何内容。

    关于 printf +控制台输出、在 TI 嵌入式器件上使用 printf 时需要特别注意。 您可以参阅 Resource Explorer 上的此应用手册、了解有关使用 printf [链接]的提示。 您能否尝试将堆大小增加到>= 300并运行一个简单的程序来查看您是否获得了此线程[链接]中建议的任何控制台输出?

    谢谢、

    王国新

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

    您好、Urica、

    好的、我将查看这些链接、并让您了解这些链接的结果。 谢谢!!

    此致、

    Siddhant

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

    您好、Urica、  

    我尝试了这些更改并使用300和400的堆大小进行了检查-我仍然没有得到控制台输出-然而、需要注意的一点是、我正在使用浮点上的算术运算符进行计算-我将收到如下警告:  

    #1530-D (ULP 5.1)检测到分频/浮点/ printf 操作。 建议在运行时将其移动到 RAM 或不使用、因为这些是处理/功耗密集型的

    我随附了包含显示上述错误的计算的代码文件、供您参考。

    这是否与控制台上不工作的 printf 有关?

    e2e.ti.com/.../6886.lib_5F00_mfcc.c

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

    您好、Urica、  

    为了添加上述内容、我可以打印一个在 Hello World 示例中提到的简单打印语句、它可以正常工作-'hello World'会在控制台窗口中打印出来。 但是、当我要处理我上面附加的我自己的代码时、代码在调试后保持运行、但不会以 print 语句的形式在控制台中显示任何响应。  

    此致、

    Siddhant